Övervakning och loggning av Azure Web Application Firewall

Azure Web Application Firewall i Azure Front Door tillhandahåller omfattande loggning och telemetri som hjälper dig att förstå hur brandväggen för webbprogram (WAF) fungerar och vilka åtgärder den vidtar.

Azure Front Door WAF-loggen är integrerad med Azure Monitor. Med Azure Monitor kan du spåra diagnostikinformation, inklusive WAF-aviseringar och loggar. Du kan konfigurera WAF-övervakning i Azure Front Door-resursen i Azure-portalen under fliken Diagnostik , via infrastruktur som kodmetoder eller genom att använda Azure Monitor direkt.

Mått

Azure Front Door registrerar automatiskt mått som hjälper dig att förstå waf-beteendet.

Så här kommer du åt waf-måtten:

  1. Logga in på Azure-portalen och gå till din Azure Front Door-profil.
  2. I det vänstra fönstret under Övervakning väljer du fliken Mått.
  3. Lägg till måttet Antal begäranden för webprogrambrandvägg för att spåra antalet begäranden som matchar WAF-regler.

Du kan skapa anpassade filter baserat på åtgärdstyper och regelnamn. Mått inkluderar begäranden med alla åtgärder utom Log.

Screenshot that shows the metrics for an Azure Front Door WAF.

Loggar och diagnostik

Azure Front Door WAF innehåller detaljerad rapportering om varje begäran och varje hot som identifieras. Loggning är integrerad med Azures diagnostikloggar och aviseringar med hjälp av Azure Monitor-loggar.

Loggar är inte aktiverade som standard. Du måste uttryckligen aktivera loggar. Du kan konfigurera loggar i Azure-portalen med hjälp av fliken Diagnostikinställningar .

Screenshot that shows how to enable the WAF logs.

Om loggning är aktiverat och en WAF-regel utlöses loggas matchande mönster i oformaterad text som hjälper dig att analysera och felsöka WAF-principbeteendet. Du kan använda undantag för att finjustera regler och exkludera data som du vill undantas från loggarna. Mer information finns i undantagslistor för brandvägg för webbprogram i Azure Front Door.

Azure Front Door innehåller två typer av loggar: åtkomstloggar och WAF-loggar.

Åtkomstloggar

Loggen FrontDoorAccessLog innehåller alla begäranden som går via Azure Front Door. Mer information om Åtkomstloggen för Azure Front Door, inklusive loggschemat, finns i Övervaka mått och loggar i Azure Front Door.

Loggen FrontdoorAccessLog innehåller alla begäranden som går via Azure Front Door. Mer information om Åtkomstloggen för Azure Front Door, inklusive loggschemat, finns i Övervaka mått och loggar i Azure Front Door (klassisk).

Följande exempelfråga returnerar åtkomstloggposterna:

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorAccessLog"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorAccessLog"

Följande kodfragment visar en exempelloggpost:

{
  "time": "2020-06-09T22:32:17.8383427Z",
  "category": "FrontDoorAccessLog",
  "operationName": "Microsoft.Cdn/Profiles/AccessLog/Write",
  "properties": {
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "httpMethod": "GET",
    "httpVersion": "2.0",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "requestBytes": "715",
    "responseBytes": "380",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
    "clientIp": "xxx.xxx.xxx.xxx",
    "socketIp": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "timeTaken": "0.003",
    "securityProtocol": "TLS 1.2",
    "routingRuleName": "WAFdemoWebAppRouting",
    "rulesEngineMatchNames": [],
    "backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
    "sentToOriginShield": false,
    "httpStatusCode": "403",
    "httpStatusDetails": "403",
    "pop": "SJC",
    "cacheStatus": "CONFIG_NOCACHE"
  }
}
{
  "time": "2020-06-09T22:32:17.8383427Z",
  "category": "FrontdoorAccessLog",
  "operationName": "Microsoft.Network/FrontDoor/AccessLog/Write",
  "properties": {
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "httpMethod": "GET",
    "httpVersion": "2.0",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "requestBytes": "715",
    "responseBytes": "380",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4157.0 Safari/537.36 Edg/85.0.531.1",
    "clientIp": "xxx.xxx.xxx.xxx",
    "socketIp": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "timeTaken": "0.003",
    "securityProtocol": "TLS 1.2",
    "routingRuleName": "WAFdemoWebAppRouting",
    "rulesEngineMatchNames": [],
    "backendHostname": "wafdemowebappuscentral.azurewebsites.net:443",
    "sentToOriginShield": false,
    "httpStatusCode": "403",
    "httpStatusDetails": "403",
    "pop": "SJC",
    "cacheStatus": "CONFIG_NOCACHE"
  }
}

WAF-loggar

Loggen FrontDoorWebApplicationFirewallLog innehåller begäranden som matchar en WAF-regel.

Loggen FrontdoorWebApplicationFirewallLog innehåller alla begäranden som matchar en WAF-regel.

I följande tabell visas de värden som loggas för varje begäran.

Property Beskrivning
Åtgärd Åtgärd som vidtagits på begäran. Loggar inkluderar begäranden med alla åtgärder. Åtgärderna är:
  • Allow och allow: Begäran tilläts fortsätta bearbetningen.
  • Block och block: Begäran matchade en WAF-regel som konfigurerats för att blockera begäran. Alternativt uppnåddes tröskelvärdet för avvikelsebedömning och begäran blockerades.
  • Log och log: Begäran matchade en WAF-regel som konfigurerats för att använda åtgärden Log .
  • AnomalyScoring och logandscore: Begäran matchade en WAF-regel. Regeln bidrar till avvikelsepoängen. Begäran kan eller kanske inte blockeras beroende på andra regler som körs på samma begäran.
ClientIP IP-adressen för klienten som gjorde begäran. Om det fanns ett X-Forwarded-For huvud i begäran hämtas klientens IP-adress från det rubrikfältet i stället.
ClientPort IP-porten för klienten som gjorde begäran.
Details Mer information om begäran, inklusive eventuella hot som har identifierats.
matchVariableName: HTTP-parameternamnet för begäran matchade, till exempel rubriknamn (högst 100 tecken).
matchVariableValue: Värden som utlöste matchningen (högst 100 tecken).
Host Rubriken Host för begäran.
Princip Namnet på WAF-principen som bearbetade begäran.
PolicyMode Driftläge för WAF-principen. Möjliga värden är Prevention och Detection.
RequestUri Fullständig URI för begäran.
RuleName Namnet på WAF-regeln som begäran matchade.
SocketIP Käll-IP-adressen som waf ser. Den här IP-adressen baseras på TCP-sessionen och tar inte hänsyn till några begärandehuvuden.
TrackingReference Den unika referenssträngen som identifierar en begäran som hanteras av Azure Front Door. Det här värdet skickas till klienten i svarshuvudet X-Azure-Ref . Använd det här fältet när du söker efter en specifik begäran i loggen.

Följande exempelfråga visar de begäranden som Azure Front Door WAF blockerade:

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog" 
| where action_s == "Block" 
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"

Följande kodfragment visar en exempelloggpost, inklusive orsaken till att begäran blockerades:

{
  "time": "2020-06-09T22:32:17.8376810Z",
  "category": "FrontdoorWebApplicationFirewallLog",
  "operationName": "Microsoft.Cdn/Profiles/Write",
  "properties": {
    "clientIP": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "socketIP": "xxx.xxx.xxx.xxx",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
    "policy": "WafDemoCustomPolicy",
    "action": "Block",
    "host": "wafdemofrontdoorwebapp.azurefd.net",
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "policyMode": "prevention",
    "details": {
      "matches": [
        {
          "matchVariableName": "QueryParamValue:q",
          "matchVariableValue": "' or 1=1"
        }
      ]
    }
  }
}
{
  "time": "2020-06-09T22:32:17.8376810Z",
  "category": "FrontdoorWebApplicationFirewallLog",
  "operationName": "Microsoft.Network/FrontDoorWebApplicationFirewallLog/Write",
  "properties": {
    "clientIP": "xxx.xxx.xxx.xxx",
    "clientPort": "52097",
    "socketIP": "xxx.xxx.xxx.xxx",
    "requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
    "ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
    "policy": "WafDemoCustomPolicy",
    "action": "Block",
    "host": "wafdemofrontdoorwebapp.azurefd.net",
    "trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
    "policyMode": "prevention",
    "details": {
      "matches": [
        {
          "matchVariableName": "QueryParamValue:q",
          "matchVariableValue": "' or 1=1"
        }
      ]
    }
  }
}

Nästa steg

Läs mer om Azure Front Door.