Övervakning och loggning i Azure Web Application Firewall

Övervakning och loggning av Azure Web Application Firewall (WAF) tillhandahålls via loggning och integrering med Azure Monitor- och Azure Monitor-loggar.

Azure Monitor

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

Från Azure Portal går du till Resurstyp för Front Door. Från flikenÖvervakningsmått/ till vänster kan du lägga till WebApplicationFirewallRequestCount för att spåra antalet begäranden som matchar WAF-regler. Anpassade filter kan skapas baserat på åtgärdstyper och regelnamn.

WAFMetrics

Loggar och diagnostik

WAF med Front Door ger detaljerad rapportering om varje begäran och varje hot som identifieras. Loggning är integrerad med Azures diagnostikloggar och aviseringar. Dessa loggar kan integreras med Azure Monitor-loggar.

WAFDiag

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

Åtkomstloggar

FrontDoorAccessLog innehåller alla begäranden som går via Front Door. Mer information om åtkomstloggen för Front Door, inklusive loggschemat, finns i Azure Front Door-loggar.

FrontdoorAccessLog innehåller alla begäranden som går via Front Door. Mer information om åtkomstloggen för 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 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

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

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:

Egenskap Beskrivning
Åtgärd Åtgärd som vidtagits på begäran. Loggarna innehåller begäranden med alla åtgärder. Måtten omfattar begäranden med alla åtgärder förutom Logg.
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 huvudfältet i stället.
ClientPort IP-porten för klienten som gjorde begäran.
Information Ytterligare 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).
Värd Rubriken Host för begäran.
Policy 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 ses av WAF. 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 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 blockerades av Front Door WAF:

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 visar ett exempel på en loggpost, 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