Überwachung und Protokollierung von Azure Web Application Firewall

Azure Web Application Firewall in Azure Front Door bietet umfangreiche Protokollierungs- und Telemetriefunktionen, die Ihnen helfen, die Leistung Ihrer Web Application Firewall (WAF) und die von ihr durchgeführten Aktionen nachzuvollziehen.

Das WAF-Protokoll von Azure Front Door ist in Azure Monitor integriert. Mit Azure Monitor können Sie Diagnoseinformationen wie WAF-Warnungen und -Protokolle nachverfolgen. Sie können die WAF-Protokollierung in der Azure Front Door-Ressource im Azure-Portal auf der Registerkarte Diagnose, mit einem Infrastructure-as-Code-Ansatz oder durch direkte Verwendung von Azure Monitor konfigurieren.

Metriken

Azure Front Door zeichnet automatisch Metriken auf, damit Sie das Verhalten Ihrer WAF besser verstehen können.

So greifen Sie auf die Metriken Ihrer WAF zu

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrem Azure Front Door-Profil.
  2. Wählen Sie im linken Bereich unter Überwachung die Registerkarte Metriken aus.
  3. Fügen Sie die Metrik Web Application Firewall-Anforderungsanzahl hinzu, um die Anzahl der Anforderungen nachzuverfolgen, die mit WAF-Regeln übereinstimmen.

Sie können benutzerdefinierte Filter basierend auf Aktionstypen und Regelnamen erstellen. Metriken enthalten Anforderungen mit allen Aktionen außer Log.

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

Protokolle und Diagnose

Die WAF-Instanz in Azure Front Door bietet detaillierte Berichterstellung für jede Anforderung und jede ermittelte Bedrohung. Die Protokollierung ist dank der Azure Monitor-Protokolle in die Diagnoseprotokolle und Warnungen von Azure integriert.

Protokolle sind standardmäßig nicht aktiviert. Sie müssen Protokolle explizit aktivieren. Sie können Protokolle im Azure-Portal über die Registerkarte Diagnoseeinstellungen konfigurieren.

Screenshot that shows how to enable the WAF logs.

Wenn die Protokollierung aktiviert ist und eine WAF-Regel ausgelöst wird, werden alle übereinstimmenden Muster im Klartext protokolliert, damit Sie das Verhalten der WAF-Richtlinie analysieren und debuggen können. Mithilfe von Ausschlüssen können Sie Regeln optimieren, indem Sie alle Daten ausschließen, die nicht in die Protokolle einfließen sollen. Weitere Informationen finden Sie unter Web Application Firewall (WAF) mit Ausschlusslisten in Azure Front Door.

Azure Front Door bietet zwei Arten von Protokollen: Zugriffsprotokolle und WAF-Protokolle.

Zugriffsprotokolle

Das Protokoll FrontDoorAccessLog enthält alle Anforderungen, die durch Azure Front Door geleitet werden. Weitere Informationen zum Azure Front Door-Zugriffsprotokoll, einschließlich des Protokollschemas, finden Sie unter Überwachen von Metriken und Protokollen in Azure Front Door.

Das Protokoll FrontdoorAccessLog enthält alle Anforderungen, die durch Azure Front Door geleitet werden. Weitere Informationen zum Azure Front Door-Zugriffsprotokoll, einschließlich des Protokollschemas, finden Sie unter Überwachen von Metriken und Protokollen in Azure Front Door (klassisch).

Die folgende Beispielabfrage gibt die Zugriffsprotokolleinträge zurück:

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

Der folgende Codeschnipsel zeigt ein Beispiel für einen Protokolleintrag:

{
  "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-Protokolle

Das Protokoll FrontDoorWebApplicationFirewallLog enthält Anforderungen, die einer WAF-Regel entsprechen.

Das Protokoll FrontdoorWebApplicationFirewallLog enthält alle Anforderungen, die einer WAF-Regel entsprechen.

Die folgende Tabelle zeigt die für die einzelnen Anforderungen protokollierten Werte.

Eigenschaft BESCHREIBUNG
Aktion Aktion, die für die Anforderung durchgeführt wird. Protokolle enthalten Anforderungen mit allen Aktionen. Aktionen sind:
  • Allow und allow: Die Verarbeitung der Anforderung konnte fortgesetzt werden.
  • Block und block: Die Anforderung entspricht einer WAF-Regel, die zum Blockieren der Anforderung konfiguriert ist. Alternativ wurde der Schwellenwert für die Anomaliebewertung erreicht, und die Anforderung wurde blockiert.
  • Log und log: Die Anforderung entspricht einer WAF-Regel, die zum Verwenden der Log-Aktion konfiguriert ist.
  • AnomalyScoring und logandscore: Die Anforderung entsprach einer WAF-Regel. Die Regel trägt zur Anomaliebewertung bei. Abhängig von anderen Regeln, die für dieselbe Anfrage gelten, wird die Anfrage möglicherweise blockiert.
ClientIP Die IP-Adresse des Clients, der die Anforderung gestellt hat. Wenn die Anforderung einen X-Forwarded-For-Header enthielt, wird die Client-IP-Adresse stattdessen aus diesem Headerfeld übernommen.
ClientPort Der IP-Port des Clients, der die Anforderung gestellt hat.
Details Weitere Details zur Anforderung, einschließlich aller erkannten Bedrohungen.
matchVariableName: HTTP-Parametername der übereinstimmenden Anforderung, z. B. Headernamen (maximal 100 Zeichen).
matchVariableValue: Werte, die die Übereinstimmung ausgelöst haben (maximal 100 Zeichen).
Host Der Host-Header der Anforderung.
Richtlinie Der Name der WAF-Richtlinie, die diese Anforderung verarbeitet hat.
PolicyMode Der Betriebsmodus der WAF-Richtlinie. Mögliche Werte sind Prevention und Detection.
RequestUri Der vollständige URI der Anforderung.
RuleName Der Name der WAF-Regel, mit der die Anforderung übereinstimmt
SocketIP Die für WAF angegebene IP-Quelladresse. Diese IP-Adresse basiert auf der TCP-Sitzung und ignoriert Anforderungsheader.
TrackingReference Die eindeutige Verweiszeichenfolge, die eine von Azure Front Door verarbeitete Anforderung identifiziert. Dieser Wert wird im X-Azure-Ref-Antwortheader an den Client gesendet. Verwenden Sie dieses Feld, wenn Sie im Protokoll nach einer bestimmten Anforderung suchen.

Die folgende Beispielabfrage zeigt die Anforderungen, die von der WAF-Instanz in Azure Front Door blockiert wurden:

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

Der folgende Codeschnipsel zeigt einen Protokolleintrag sowie den Grund, aus dem die Anforderung blockiert wurde:

{
  "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ächste Schritte

Erfahren Sie mehr zu Azure Front Door.