Ü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
- Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrem Azure Front Door-Profil.
- Wählen Sie im linken Bereich unter Überwachung die Registerkarte Metriken aus.
- 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
.
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.
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:
|
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.