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 dettagliati per comprendere come viene eseguito il web application firewall (WAF) e come si svolgono le azioni.

Il log WAF di Frontdoor di Azure è integrato con Monitoraggio di Azure. Monitoraggio di Azure consente di tenere traccia delle informazioni diagnostiche, inclusi i log e gli avvisi di WAF. È possibile configurare il monitoraggio WAF all'interno della risorsa Frontdoor di Azure nel 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 tutto a sinistra, sotto 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 verifica JavaScript:

  • Aggiungere la metrica JS Challenge Request Count web application firewall 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 Test JS
    • Rilasciato: Test JS viene richiamato la prima volta
    • Superato: il calcolo del Test JS ha avuto esito positivo ed è stata ricevuta una risposta
    • Valido: cookie di validità del Test JS presente
    • Bloccato: il calcolo del Test JS non è riuscito

Screenshot che mostra le metriche della verifica JavaScript.

Log e diagnostica

WAF Frontdoor di Azure 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.

Questi 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 che si desidera escludere dai log. Per maggiori informazioni, vedere Elenchi di esclusione di Web application firewall in Frontdoor di Azure.

Si possono 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, come 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 punteggio 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 anomalie. La richiesta potrebbe essere bloccata o meno, a seconda di altre regole eseguite nella stessa richiesta.
  • JS Challenge e JSChallengeIssued: rilasciato a causa di un'autorizzazione di test mancante/non valida, risposta mancante.

    Questo log viene creato quando un client richiede l'accesso a un'applicazione Web per la prima volta e non è stato testato in precedenza. Questo client riceve la pagina di test JS e procede per calcolare il test JS. Al termine del calcolo, al client viene concesso il cookie di validità.
  • JS Challenge e JSChallengePass: superato per una risposta di test 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: registrato/passato per test valido.

    Questo log viene creato quando un client ha risolto un test 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 La porta IP del client che ha eseguito 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 un massimo di 100 caratteri).
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 Si tratta di una stringa di riferimento univoca che identifica una richiesta servita da Frontdoor di Azure. Questo valore viene inviato al client nell'intestazione della rispostaX-Azure-Ref. 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 maggiori 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.