Freigeben über


Ü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: Metriken für eine WAF-Instanz in Azure Front Door.

Metriken der JavaScript-Überprüfung (Vorschau)

So greifen Sie auf die WAF-Metriken der JavaScript-Überprüfung zu

  • Fügen Sie die Metrik JS Challenge Request Count von Web Application Firewall hinzu, um die Anzahl der Anforderungen nachzuverfolgen, die mit den WAF-Regeln der JavaScript-Überprüfung übereinstimmen.

Im Rahmen dieser Metrik werden die folgenden Filter bereitgestellt:

  • PolicyName: Dies ist der Name der WAF-Richtlinie.
  • Regel: Dies kann eine beliebige benutzerdefinierte Regel oder eine Botregel sein.
  • Aktion: Es gibt vier mögliche Werte für die Aktion für die JS-Überprüfung.
    • Ausgestellt: Die JS-Überprüfung wird zum ersten Mal aufgerufen.
    • Bestanden: Die Berechnung der JS-Überprüfung war erfolgreich, und es wurde eine Antwort empfangen.
    • Gültig: Ein Gültigkeitscookie für die JS-Überprüfung war vorhanden.
    • Blockiert: Bei der Berechnung der JS-Überprüfung ist ein Fehler aufgetreten.

Screenshot: Metrik für die JavaScript-Überprüfung

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: Aktivieren der WAF-Protokolle.

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.

Sie können drei verschiedene Azure Front Door-Protokolle aktivieren:

  • WAF-Protokolle
  • Zugriffsprotokolle
  • Integritätstestprotokolle

Aktivitätsprotokolle sind standardmäßig aktiviert und bieten Einblick in die Vorgänge, die für Ihre Azure-Ressourcen ausgeführt werden, etwa Konfigurationsänderungen an Ihrem Azure Front Door-Profil.

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.
  • JS Challenge und JSChallengeIssued: Ausgestellt aufgrund fehlender/ungültiger Überprüfungsfreigabe, fehlende Antwort.

    Das Protokoll wird erstellt, wenn ein Client zum ersten Mal Zugriff auf eine Webanwendung anfordert und zuvor nicht überprüft wurde. Für diesen Client wird die Seite mit der JS-Überprüfung angezeigt, und die JS-Überprüfung wird berechnet. Bei erfolgreicher Berechnung erhält der Client ein Gültigkeitscookie.
  • JS Challenge und JSChallengePass: Aufgrund einer gültigen Überprüfungsantwort bestanden.

    Dieses Protokoll wird erstellt, wenn ein Client die JS-Überprüfung löst und die Anforderung mit der richtigen Antwort erneut übermittelt. In diesem Fall überprüft Azure WAF das Cookie und verarbeitet die verbleibenden Regeln, ohne eine weitere JS-Überprüfung zu generieren.
  • JS Challenge und JSChallengeValid: Protokollierung/Passthrough aufgrund einer gültigen Überprüfung.

    Dieses Protokoll wird erstellt, wenn ein Client zuvor eine Überprüfung gelöst hat. In diesem Fall protokolliert Azure WAF die Anforderung und verarbeitet die verbleibenden Regeln.
  • JS Challenge und JSChallengeBlock: Blockiert

    Dieses Protokoll wird erstellt, wenn eine JS-Überprüfungsberechnung fehlschlägt.
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"
        }
      ]
    }
  }
}

Weitere Informationen zu den anderen Azure Front Door-Protokollen finden Sie unter Überwachen von Metriken und Protokollen in Azure Front Door.

Nächste Schritte

Erfahren Sie mehr zu Azure Front Door.