Web Application Firewall con elenchi di esclusione di Frontdoor di Azure

A volte Web application firewall di Azure in Frontdoor di Azure potrebbe bloccare una richiesta legittima. Nell'ambito dell'ottimizzazione del web application firewall (WAF), è possibile configurare WAF per consentire la richiesta per l'applicazione. Gli elenchi di esclusione WAF consentono di omettere attributi di richiesta specifici da una valutazione WAF. Il resto della richiesta viene valutato come di consueto.

Ad esempio, Microsoft Entra ID fornisce token usati per l'autenticazione. Quando questi token vengono usati in un'intestazione di richiesta, possono contenere caratteri speciali che potrebbero attivare un rilevamento falso positivo da una o più regole WAF. È possibile aggiungere l'intestazione a un elenco di esclusione, che indica al WAF di ignorare l'intestazione. Il WAF controlla comunque il resto della richiesta per individuare contenuti sospetti.

Ambiti di esclusione

È possibile creare esclusioni negli ambiti seguenti:

  • Set di regole: queste esclusioni si applicano a tutte le regole all'interno di un set di regole.
  • Gruppo di regole: queste esclusioni si applicano a tutte le regole di una determinata categoria all'interno di un set di regole. Ad esempio, è possibile configurare un'esclusione che si applica a tutte le regole sql injection.
  • Regola: queste esclusioni si applicano a una singola regola.

Selettori di esclusione

I selettori di esclusione identificano le parti delle richieste a cui si applica l'esclusione. WAF ignora tutti i rilevamenti rilevati nelle parti specificate della richiesta. È possibile specificare più selettori di esclusione in una singola esclusione.

Ogni selettore di esclusione ha specificato una variabile di corrispondenza, un operatore e un selettore.

Trova la corrispondenza delle variabili

È possibile aggiungere gli attributi di richiesta seguenti a un'esclusione:

  • Nome intestazione richiesta
  • Nome del cookie di richiesta
  • Nome argomenti stringa di query
  • Nome argomenti POST del corpo della richiesta
  • Nome argomenti JSON del corpo della richiesta (supportato in DRS 2.0 o versione successiva)

I valori dei campi usati non vengono valutati rispetto alle regole WAF, ma i relativi nomi vengono valutati. L'esclusione elenca la disabilitazione dell'ispezione del valore del campo. Tuttavia, i nomi dei campi vengono comunque valutati. Per altre informazioni, vedere Escludere altri attributi di richiesta.

Operatori

È possibile specificare un'intestazione di richiesta, un corpo, un cookie o un attributo stringa di query esatto da associare. In alternativa, è possibile specificare corrispondenze parziali. Per i criteri di corrispondenza sono supportati gli operatori seguenti:

  • Uguale a: trova la corrispondenza con tutti i campi della richiesta che corrispondono esattamente al valore del selettore specificato. Ad esempio, per selezionare un'intestazione denominata bearerToken, usare l'operatore Equals con il selettore impostato su bearerToken.
  • Inizia con: trova la corrispondenza con tutti i campi della richiesta che iniziano con il valore del selettore specificato.
  • Termina con: trova la corrispondenza con tutti i campi della richiesta che terminano con il valore del selettore specificato.
  • Contiene: trova la corrispondenza con tutti i campi della richiesta che contengono il valore del selettore specificato.
  • Uguale a qualsiasi: trova la corrispondenza con tutti i campi della richiesta. Quando si usa l'operatore Equals any , il valore del selettore viene impostato automaticamente su *. Ad esempio, è possibile usare l'operatore per configurare un'esclusione Equals any che si applica a tutte le intestazioni di richiesta.

Distinzione tra maiuscole e minuscole

I nomi di intestazione e cookie non fanno distinzione tra maiuscole e minuscole. Le stringhe di query, gli argomenti POST e gli argomenti JSON fanno distinzione tra maiuscole e minuscole.

Ispezione del contenuto del corpo

Alcune delle regole gestite valutano il payload non elaborato del corpo della richiesta prima di essere analizzato in argomenti POST o argomenti JSON. In alcune situazioni, è quindi possibile che vengano visualizzate voci di log con un matchVariableName valore pari InitialBodyContents a o DecodedInitialBodyContents.

Si supponga, ad esempio, di creare un'esclusione con una variabile di corrispondenza di Request body POST args e un selettore per identificare e ignorare gli argomenti POST denominati FOO. Non vengono più visualizzate voci di log con il matchVariableName valore .PostParamValue:FOO Tuttavia, se un argomento POST denominato FOO contiene testo che attiva una regola, il log potrebbe mostrare il rilevamento nel contenuto iniziale del corpo. Non è attualmente possibile creare esclusioni per il contenuto iniziale del corpo.

Definire le regole di esclusione in base ai log di Web application firewall di Azure

È possibile usare i log per visualizzare i dettagli di una richiesta bloccata, incluse le parti della richiesta che ha attivato la regola. Per altre informazioni, vedere Monitoraggio e registrazione di Web Application Firewall di Azure.

A volte una regola WAF specifica genera rilevamenti falsi positivi dai valori inclusi in un'intestazione di richiesta, un cookie, un argomento POST, un argomento della stringa di query o un campo JSON in un corpo della richiesta. Se si verificano questi rilevamenti falsi positivi, è possibile configurare la regola per escludere la parte pertinente della richiesta dalla valutazione.

La tabella seguente illustra i valori di esempio dei log WAF e dei selettori di esclusione corrispondenti che è possibile creare.

matchVariableName dai log WAF Esclusione di regole nel portale
CookieValue:SOME_NAME Request cookie name Equals SOME_NAME
HeaderValue:SOME_NAME Nome intestazione richiesta Uguale a SOME_NAME
PostParamValue:SOME_NAME Nome argomenti post del corpo della richiesta Uguale a SOME_NAME
QueryParamValue:SOME_NAME Nome argomenti stringa di query Uguale a SOME_NAME
JsonValue:SOME_NAME Nome argomenti JSON del corpo della richiesta Uguale a SOME_NAME

Esclusioni per i corpi delle richieste JSON

Da DRS versione 2.0, i corpi delle richieste JSON vengono controllati dal WAF. Si consideri ad esempio questo corpo della richiesta JSON:

{
  "posts": [
    {
      "id": 1,
      "comment": ""
    },
    {
      "id": 2,
      "comment": "\"1=1\""
    }
  ]
}

La richiesta include una sequenza di caratteri di commento SQL, che il WAF rileva come potenziale attacco SQL injection.

Se si determina che la richiesta è legittima, è possibile creare un'esclusione con una variabile di corrispondenza di Request body JSON args name, un operatore di Equalse un selettore di posts.comment.

Escludere altri attributi di richiesta

Se la voce di log WAF mostra un matchVariableName valore non presente nella tabella precedente, non è possibile creare un'esclusione. Ad esempio, non è attualmente possibile creare esclusioni per nomi di cookie, nomi di intestazione, nomi di parametri POST o nomi di parametri di query.

Prendere invece in considerazione l'esecuzione di una delle azioni seguenti:

  • Disabilitare le regole che forniscono falsi positivi.
  • Creare una regola personalizzata che consenta in modo esplicito tali richieste. Le richieste ignorano tutte le ispezioni WAF.

In particolare, quando il matchVariableName valore è CookieName, HeaderName, PostParamNameo QueryParamName, significa che il nome del campo, anziché il relativo valore, ha attivato la regola. L'esclusione delle regole non supporta attualmente questi matchVariableName valori.

Passaggi successivi