Monitoraggio e registrazione di Web application firewall di Azure
Web application firewall di Azure in Frontdoor di Azure offre dati di telemetria e registrazione estesi per comprendere le prestazioni del web application firewall (WAF) e le azioni eseguite.
Il log WAF di Frontdoor di Azure è integrato con Monitoraggio di Azure. Monitoraggio di Azure consente di tenere traccia delle informazioni di diagnostica, inclusi avvisi e log waf. È possibile configurare il monitoraggio waf all'interno della risorsa frontdoor di Azure nella portale di Azure nella scheda Diagnostica, tramite l'infrastruttura come approcci al codice o usando direttamente Monitoraggio di Azure.
Metriche
Frontdoor di Azure registra automaticamente le metriche per comprendere il comportamento del WAF.
Per accedere alle metriche di WAF:
- Accedere al portale di Azure e passare al profilo frontdoor di Azure.
- Nel riquadro all'estrema sinistra in Monitoraggio selezionare la scheda Metriche .
- Aggiungere la metrica Conteggio richieste web application firewall per tenere traccia del numero di richieste che corrispondono alle regole WAF.
È possibile creare filtri personalizzati in base ai tipi di azione e ai nomi delle regole. Le metriche includono le richieste con tutte le azioni tranne Log
.
Log e diagnostica
Frontdoor di Azure WAF fornisce report dettagliati su ogni richiesta e ogni minaccia rilevata. La registrazione è integrata con i log e gli avvisi di diagnostica di Azure usando i log di Monitoraggio di Azure.
I log non sono abilitati per impostazione predefinita. È necessario abilitare in modo esplicito i log. È possibile configurare i log nel portale di Azure usando la scheda Impostazioni di diagnostica.
Se la registrazione è abilitata e viene attivata una regola WAF, tutti i modelli di corrispondenza vengono registrati in testo normale per analizzare ed eseguire il debug del comportamento dei criteri WAF. È possibile usare le esclusioni per ottimizzare le regole ed escludere tutti i dati da escludere dai log. Per altre informazioni, vedere Elenchi di esclusione di Web application firewall in Frontdoor di Azure.
Frontdoor di Azure offre due tipi di log: log di accesso e log WAF.
Accedere ai log
Il log FrontDoorAccessLog
include tutte le richieste che passano attraverso Frontdoor di Azure. Per altre informazioni sul log di accesso di Frontdoor di Azure, incluso lo schema di log, vedere Monitorare le metriche e i log in Frontdoor di Azure.
Il log FrontdoorAccessLog
include tutte le richieste che passano attraverso Frontdoor di Azure. Per altre informazioni sul log di accesso di Frontdoor di Azure, incluso lo schema di log, vedere Monitorare le metriche e i log in Frontdoor di Azure (versione classica).
La query di esempio seguente restituisce le voci del log di accesso:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorAccessLog"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorAccessLog"
Il frammento di codice seguente mostra una voce di log di esempio:
{
"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"
}
}
Log WAF
Il log FrontDoorWebApplicationFirewallLog
include le richieste che corrispondono a una regola WAF.
Il log FrontdoorWebApplicationFirewallLog
include qualsiasi richiesta corrispondente a una regola WAF.
Nella tabella seguente vengono illustrati i valori registrati per ogni richiesta.
Proprietà | Descrizione |
---|---|
Azione | Azione eseguita sulla richiesta. I log includono le richieste con tutte le azioni. Le azioni sono:
|
ClientIP | Indirizzo IP del client che ha eseguito la richiesta. Se nella richiesta è presente un'intestazione X-Forwarded-For , l'indirizzo IP del client viene invece ricavato da tale campo di intestazione. |
ClientPort | Porta IP del client che ha effettuato la richiesta. |
Dettagli | Altri dettagli sulla richiesta, incluse eventuali minacce rilevate. matchVariableName : nome del parametro HTTP della richiesta corrispondente, ad esempio nomi di intestazione (fino a un massimo di 100 caratteri).matchVariableValue : valori che hanno attivato la corrispondenza (fino a 100 caratteri massimo). |
Host | Intestazione Host della richiesta. |
Criteri | Nome del criterio WAF che ha elaborato la richiesta. |
Policymode | Modalità operativa dei criteri WAF. I valori possibili sono Prevention e Detection . |
RequestUri | URI completo della richiesta. |
RuleName | Nome della regola WAF corrispondente alla richiesta. |
SocketIP | Indirizzo IP di origine visualizzato da WAF. Questo indirizzo IP si basa sulla sessione TCP e non considera le intestazioni di richiesta. |
TrackingReference | Stringa di riferimento univoca che identifica una richiesta servita da Frontdoor di Azure. Questo valore viene inviato al client nell'intestazione della X-Azure-Ref risposta. Usare questo campo quando si cerca una richiesta specifica nel log. |
La query di esempio seguente mostra le richieste bloccate dal WAF di Frontdoor di Azure:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog"
| where action_s == "Block"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"
Il frammento di codice seguente mostra una voce di log di esempio, incluso il motivo per cui la richiesta è stata bloccata:
{
"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"
}
]
}
}
}
Passaggi successivi
Altre informazioni su Frontdoor di Azure.