Condividi tramite


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 come viene eseguito il 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.

Metrica

Frontdoor di Azure registra automaticamente le metriche per comprendere il comportamento del WAF.

Per accedere alle metriche di WAF:

  1. Accedere al portale di Azure e passare al profilo frontdoor di Azure.
  2. Nel riquadro all'estrema sinistra in Monitoraggio selezionare la scheda Metriche .
  3. 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.

Screenshot che mostra le metriche per un WAF di Frontdoor di Azure.

Metriche della verifica JavaScript (anteprima)

Per accedere alle metriche WAF della sfida JavaScript:

  • Aggiungere la metrica web application firewall JS Challenge Request Count per tenere traccia del numero di richieste che corrispondono alle regole WAF della verifica JavaScript.

I filtri seguenti vengono forniti come parte di questa metrica:

  • PolicyName: nome del criterio WAF
  • Regola: può essere qualsiasi regola personalizzata o regola bot
  • Azione: sono disponibili quattro valori possibili per l'azione JS Challenge
    • Rilasciato: JS Challenge viene richiamato la prima volta
    • Superato: il calcolo della richiesta JS ha avuto esito positivo e è stata ricevuta una risposta
    • Valido: cookie di validità della richiesta JS presente
    • Bloccato: il calcolo della richiesta JS non è riuscito

Screenshot che mostra le metriche di verifica javaScript.

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.

Screenshot che mostra come abilitare i log waf.

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.

È possibile abilitare tre tipi di log di Frontdoor di Azure:

  • Log WAF
  • Accedere ai log
  • Log del probe di integrità

I log attività sono abilitati per impostazione predefinita e offrono visibilità sulle operazioni eseguite sulle risorse di Azure, ad esempio le modifiche di configurazione al profilo frontdoor di Azure.

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:
  • Allow e allow: la richiesta è stata autorizzata a continuare l'elaborazione.
  • Block e block: la richiesta corrisponde a una regola WAF configurata per bloccare la richiesta. In alternativa, è stata raggiunta la soglia di assegnazione dei punteggi anomalie e la richiesta è stata bloccata.
  • Log e log: la richiesta corrisponde a una regola WAF configurata per l'uso dell'azione Log .
  • AnomalyScoring e logandscore: la richiesta corrisponde a una regola WAF. La regola contribuisce al punteggio di anomalia. La richiesta potrebbe o non essere bloccata a seconda di altre regole eseguite nella stessa richiesta.
  • JS Challenge e JSChallengeIssued: rilasciato a causa dell'eliminazione di una richiesta mancante/non valida, risposta mancante.

    Il log viene creato quando un client richiede l'accesso a un'applicazione Web per la prima volta e non è stato verificato in precedenza. Questo client riceve la pagina di verifica JS e procede per calcolare la sfida JS. Al termine del calcolo, al client viene concesso il cookie di validità.
  • JS Challenge e JSChallengePass: superato a causa di una risposta di richiesta valida.

    Questo log viene creato quando un client risolve la richiesta JS e invia nuovamente la richiesta con la risposta corretta. In questo caso, Azure WAF convalida il cookie e continua a elaborare le regole rimanenti senza generare un'altra richiesta JS.
  • JS Challenge e JSChallengeValid: registrazione/pass-through a causa di una richiesta di verifica valida.

    Questo log viene creato quando un client ha risolto una sfida in precedenza. In questo caso, Azure WAF registra la richiesta e procede per elaborare le regole rimanenti.
  • JS Challenge e JSChallengeBlock: bloccato

    Questo log viene creato quando si verifica un errore di calcolo della richiesta JS.
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"
        }
      ]
    }
  }
}

Per altre informazioni sugli altri log di Frontdoor di Azure, vedere Monitorare metriche e log in Frontdoor di Azure.

Passaggi successivi

Altre informazioni su Frontdoor di Azure.