Risolvere i problemi di Web application firewall (WAF) per gateway applicazione di Azure

Sommario

Questo articolo illustra come risolvere i problemi di Web application firewall (WAF) per gateway applicazione di Azure quando le richieste legittime vengono bloccate, in modo da consentire il traffico valido mantenendo la protezione.

Per iniziare, esaminare la panoramica di WAF e la documentazione sulla configurazione di WAF e assicurarsi che il monitoraggio di WAF sia abilitato. Questi articoli illustrano il funzionamento del WAF, il funzionamento dei set di regole e come accedere ai log WAF.

I set di regole OWASP sono progettati per essere rigidi e ottimizzati in base alle esigenze specifiche dell'applicazione o dell'organizzazione che usano WAF. È del tutto normale, e previsto in molti casi, creare esclusioni, regole personalizzate e persino disabilitare regole che potrebbero causare problemi o falsi positivi. I criteri per sito e per URI consentono di apportare queste modifiche solo a siti o URI specifici. Pertanto, le modifiche non dovrebbero influire su altri siti che potrebbero non riscontrare gli stessi problemi.

Informazioni sui log WAF

Lo scopo dei log waf è mostrare ogni richiesta che WAF corrisponde o blocca. Si tratta di un libro mastro di tutte le richieste valutate e accettate o bloccate. Se si nota che il WAF blocca una richiesta che non dovrebbe bloccare (un falso positivo), è possibile adottare alcune misure. Prima di tutto, restringi e trova la richiesta specifica. Esaminare i log per trovare l'URI, il timestamp o l'ID transazione specifici della richiesta. Quando si trovano le voci di log associate, è possibile iniziare a agire sui falsi positivi.

Si supponga, ad esempio, di avere un traffico legittimo contenente la stringa 1=1 che si vuole passare attraverso il WAF. Se si prova la richiesta, WAF blocca il traffico che contiene la 1=1 stringa in qualsiasi parametro o campo. Questa stringa è spesso associata a un attacco SQL injection. È possibile esaminare i log e visualizzare il timestamp della richiesta e le regole bloccate o corrispondenti.

Nell'esempio seguente è possibile notare che quattro regole vengono attivate durante la stessa richiesta (usando il campo TransactionId). Il primo indica che corrisponde perché l'utente ha usato un indirizzo IP numerico per la richiesta, che aumenta il punteggio di anomalia di tre perché è un avviso. La regola successiva corrispondente è 942130, ovvero quella che si sta cercando. È possibile vedere il 1=1 nel campo details.data. Questo aumenta ulteriormente il punteggio di anomalia ancora di tre, perché è anche un avviso. In genere, ogni regola con l'azione Matched aumenta il punteggio di anomalia e a questo punto il punteggio di anomalia è sei. Per ulteriori informazioni, vedere Modalità di valutazione delle anomalie.

Le due voci di log finali mostrano che la richiesta è stata bloccata perché il punteggio di anomalia è stato sufficientemente elevato. Queste voci hanno un'azione diversa rispetto alle altre due. Mostrano che hanno effettivamente bloccato la richiesta. Queste regole sono obbligatorie e non possono essere disabilitate. Non pensare a queste regole come a vere e proprie regole, bensì come all'infrastruttura portante dei meccanismi interni del WAF.

{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "920350",
        "message": "Host header is a numeric IP address",
        "action": "Matched",
        "site": "Global",
        "details": { 
            "message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
            "data": "40.90.218.160",
            "file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
            "line": "791" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    } 
} 
{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "942130",
        "message": "SQL Injection Attack: SQL Tautology Detected.",
        "action": "Matched",
        "site": "Global",
        "details": { 
            "message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
            "data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
            "file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
            "line": "554" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    } 
} 
{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
        "action": "Blocked",
        "site": "Global",
        "details": { 
            "message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
            "data": "",
            "file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
            "line": "57" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    } 
} 
{ 
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": { 
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
        "action": "Blocked",
        "site": "Global",
        "details": { 
            "message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
            "data": "",
            "file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
            "line": "73" 
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt" 
    }
}

Correggere i falsi positivi

Con queste informazioni e la conoscenza che la regola 942130 è quella corrispondente alla 1=1 stringa, è possibile eseguire alcuni passaggi per impedire a questa regola di bloccare il traffico:

  • Usare un elenco di esclusione. Per altre informazioni sugli elenchi di esclusione, vedere Elenchi di esclusione WAF.

  • Disabilitare la regola.

Ridurre i falsi positivi del livello 2 di Paranoia

In OWASP CRS 3.2, le regole di SQL injection 942430, 942440 e 942450 appartengono al livello di paranoia 2 (PL2). Se i log waf indicano che una richiesta di autenticazione legittima corrisponde a una di queste regole, identificare il campo della richiesta di contributo prima di aggiungere un'esclusione. Conferma che la richiesta sia legittima e identificane l'ID della regola e l'insieme di regole configurato. Per descrizioni e sostituzioni specifiche della versione, vedere Regole e gruppi di regole WAF. Non abilitare una regola inattiva o modificare i set di regole solo per seguire questo esempio.

  1. In Log Analytics, usare la query seguente se l'impostazione di diagnostica invia i log del firewall alla tabella AzureDiagnostics. Sostituire l'ID della risorsa e l'intervallo di tempo con il gateway e l'intervallo che si sta esaminando. Questi log possono contenere dati di richiesta sensibili; non condividere i valori dei campi o i token di autenticazione.

Esegui la query seguente.

AzureDiagnostics
| where TimeGenerated > ago(1h)
| where _ResourceId =~ "<application-gateway-resource-id>"
| where Category == "ApplicationGatewayFirewallLog"
| where ruleId_s in ("942430", "942440", "942450")
| project TimeGenerated, transactionId_g, requestUri_s,
    ruleId_s, action_s, details_message_s, details_data_s
| order by TimeGenerated desc
  1. Trovare la transazione per la richiesta non riuscita. Una regola che contribuisce può avere un'azione Matched, mentre una regola di assegnazione dei punteggi di anomalie separata blocca la transazione. Per esaminare tutte le corrispondenze per tale transazione, sostituire il filtro rule-ID con un filtro in transactionId_g. Non escludere una regola di assegnazione del punteggio di anomalia invece della regola che contribuisce.
  2. In caso di falso positivo confermato, configura un'esclusione per il campo specifico e solo per gli ID delle regole che hanno contribuito. Le esclusioni per regola richiedono un set di regole di criteri WAF supportato, ad esempio OWASP CRS 3.2. Usare Equals per il selettore di campo e mantenere altre regole e impostazioni dei criteri esistenti. Vedere l'interfaccia della riga di comando con ambito regola e la procedura di PowerShell e gli esempi di esclusione per regola. Per l'individuazione delle regole, vedere la guida alla personalizzazione di PowerShell e la guida alla personalizzazione dell'interfaccia della riga di comando.
  3. Rivedi il criterio per verificare che l'esclusione contenga la versione del set di regole prevista, il gruppo, gli ID delle regole, la variabile di corrispondenza e il selettore. Si applica ancora un'esclusione globale che copre tale campo; l'aggiunta di un'esclusione più stretta non la rimuove. Esaminare le esclusioni generali esistenti separatamente anziché cancellare tutte le esclusioni.
  4. Ripetere la stessa richiesta legittima e controllarne la risposta e i nuovi log delle transazioni. Verificare che la regola selezionata non corrisponda più al campo escluso e analizzare eventuali altre regole che contribuiscono se la richiesta rimane bloccata. Una query vuota, senza traffico riprodotto e senza una raccolta diagnostica funzionante, non consente di stabilire il successo. Verificare che i campi non correlati rimangano controllati in un ambiente di test controllato.

Non escludere automaticamente tutti e tre gli ID o tutti i campi di autenticazione. Mantenere WAF in modalità prevenzione per questa modifica mirata. Se è necessario annullare l'operazione, rimuovere solo l'esclusione a livello di regola aggiunta dopo aver esaminato i criteri; mantenere le esclusioni preesistenti.

Usare un elenco di esclusione

Per prendere una decisione informata sulla gestione di un falso positivo, acquisire familiarità con le tecnologie usate dall'applicazione. Ad esempio, se lo stack di tecnologie non include un server SQL e si ottengono falsi positivi correlati a tali regole, la disabilitazione di tali regole non indeboli necessariamente la sicurezza.

Un'esclusione omette un attributo di richiesta selezionato dall'ispezione. Un'esclusione globale si applica a tutte le regole gestite, mentre un'esclusione per regola si applica solo alle regole selezionate in un set di regole supportato. Entrambe si applicano ovunque sia associata la policy WAF, quindi verifica le applicazioni e i percorsi della policy prima di modificarla. Ad esempio, l'esclusione di un campo può creare un rischio quando 1=1 è valido per un'applicazione, ma non per un'altra che condivide i criteri. Preferire un'esclusione con ambito ristretto all'esclusione dell'intera richiesta.

In alcuni casi, i parametri specifici vengono passati nel WAF in modo che potrebbe non essere intuitivo. Ad esempio, è presente un token che viene passato durante l'autenticazione usando Microsoft Entra ID. __RequestVerificationToken viene in genere passato come cookie di richiesta. Tuttavia, in alcuni casi in cui i cookie sono disabilitati, questo token viene passato anche come attributo di richiesta o arg. In questo caso, è necessario assicurarsi che __RequestVerificationToken venga aggiunto anche all'elenco di esclusione come nome dell'attributo Request .

Screenshot delle impostazioni dell'elenco di esclusione del WAF nel portale di Azure.

In questo esempio si vuole escludere il nome dell'attributo Request uguale a text1. Questo nome di attributo è evidente perché è possibile visualizzare il nome dell'attributo nei log del firewall: dati: dati corrispondenti: 1=1 trovati in ARGS:text1: 1=1. L'attributo è text1. È anche possibile trovare il nome di questo attributo in altri modi, vedere Ricerca dei nomi degli attributi della richiesta.

Screenshot delle opzioni di configurazione WAF per gli elenchi di esclusione in Application Gateway.

È possibile creare esclusioni per WAF nell'Application Gateway a vari livelli di ambito. Per altre informazioni, vedere Web application firewall liste di esclusione.

Disabilitare le regole

Un altro modo per gestire un falso positivo consiste nel disabilitare la regola corrispondente all'input che il WAF pensava fosse dannoso. Poiché sono stati analizzati i log waf e la regola è stata ridotta a 942130, è possibile disabilitarla nel portale di Azure. Vedere Personalizzare le regole del firewall delle applicazioni web tramite il portale di Azure.

Se si sa che tutto il traffico che contiene una determinata condizione e che verrebbe normalmente bloccato è traffico valido, è possibile disabilitare tale regola per l'intero WAF. Tuttavia, se si tratta solo di traffico valido in un caso d'uso specifico, si apre una vulnerabilità disabilitando tale regola per l'intero WAF perché si tratta di un'impostazione globale.

Per usare Azure PowerShell, vedere Personalizzare le regole del web application firewall tramite PowerShell. Per usare interfaccia della riga di comando di Azure, vedere Personalizzare le regole del web application firewall tramite il interfaccia della riga di comando di Azure.

Registrare i file HAR

È possibile usare il browser o uno strumento esterno come Fiddler per registrare file di archivio HTTP (HAR). I file HAR contengono informazioni sulle richieste e le risposte eseguite dal browser durante il caricamento di una pagina Web. Queste informazioni possono essere utili per la risoluzione dei problemi di WAF.

Suggerimento

È consigliabile preparare il file HAR quando si contatta il supporto tecnico. Il team di supporto può usare il file HAR per diagnosticare il problema.

Per registrare e salvare un file HAR in Microsoft Edge, seguire questa procedura:

  1. Premere F12 o Ctrl+Maiusc+I per aprire gli strumenti di sviluppo di Edge. È anche possibile aprire gli strumenti dal menu della barra degli strumenti in Altri strumenti>Strumenti di sviluppo.

  2. Nella scheda Console selezionare Cancella console o premere CTRL+L.

Screenshot della scheda Console di Microsoft Edge developer tools.

  1. Selezionare la scheda Rete .

  2. Selezionare Cancella log di rete o premere CTRL+L, e quindi selezionare Registra log di rete se non viene registrato.

Screenshot della scheda Rete degli strumenti di sviluppo di Microsoft Edge.

  1. Carica la pagina web protetta dal tuo WAF e per cui vuoi risolvere i problemi.

  2. Interrompere la registrazione selezionando il pulsante Arresta registrazione del log della rete.

  3. Selezionare Esporta HAR (sanificata) e salvare il file HAR.

Screenshot dell'opzione Esporta HAR (sanitizzata) negli strumenti di sviluppo di Microsoft Edge.

Trovare i nomi degli attributi della richiesta

Usare Fiddler per controllare le singole richieste e determinare quali campi specifici di una pagina Web vengono chiamati. L'uso di queste informazioni consente di escludere determinati campi dall'ispezione usando elenchi di esclusione.

In questo esempio è possibile notare che il campo in cui è stata immessa la stringa 1=1 è denominato text1.

Screenshot di Fiddler Web Debugger. Nella scheda Raw, 1=1 è visibile dopo il testo name text1.

Si tratta di un campo che è possibile escludere. Per altre informazioni sugli elenchi di esclusione, vedere Elenchi di esclusione di Web application firewall. È possibile escludere la valutazione in questo caso configurando l'esclusione seguente:

Screenshot di un'esclusione WAF configurata per un attributo specifico della richiesta.

È anche possibile esaminare i log del firewall per ottenere le informazioni necessarie per visualizzare gli elementi da aggiungere all'elenco di esclusione. Per abilitare il logging, vedere Integrità back-end, log delle risorse e metriche per Application Gateway.

Esaminare il log del firewall e visualizzare il file PT1H.json per l'ora in cui si desidera controllare la richiesta.

In questo esempio si noterà che sono presenti quattro regole con lo stesso TransactionID e che si sono verificate tutte nello stesso momento:

{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "920350",
        "message": "Host header is a numeric IP address",
        "action": "Matched",
        "site": "Global",
        "details": {
            "message": "Warning. Pattern match \\\"^[\\\\\\\\d.:]+$\\\" at REQUEST_HEADERS:Host. ",
            "data": "40.90.218.160",
            "file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf\\\"",
            "line": "791"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}
{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "942130",
        "message": "SQL Injection Attack: SQL Tautology Detected.",
        "action": "Matched",
        "site": "Global",
        "details": {
            "message": "Warning. Pattern match \\\"(?i:([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)([\\\\\\\\d\\\\\\\\w]++)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?:(?:=|\\u003c=\\u003e|r?like|sounds\\\\\\\\s+like|regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)\\\\\\\\2|(?:!=|\\u003c=|\\u003e=|\\u003c\\u003e|\\u003c|\\u003e|\\\\\\\\^|is\\\\\\\\s+not|not\\\\\\\\s+like|not\\\\\\\\s+regexp)([\\\\\\\\s'\\\\\\\"`\\\\\\\\(\\\\\\\\)]*?)(?!\\\\\\\\2)([\\\\\\\\d\\\\\\\\w]+)))\\\" at ARGS:text1. ",
            "data": "Matched Data: 1=1 found within ARGS:text1: 1=1",
            "file": "rules\/REQUEST-942-APPLICATION-ATTACK-SQLI.conf\\\"",
            "line": "554"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}
{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 8)",
        "action": "Blocked",
        "site": "Global",
        "details": {
            "message": "Access denied with code 403 (phase 2). Operator GE matched 5 at TX:anomaly_score. ",
            "data": "",
            "file": "rules\/REQUEST-949-BLOCKING-EVALUATION.conf\\\"",
            "line": "57"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}
{
    "resourceId": "/SUBSCRIPTIONS/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/RESOURCEGROUPS/MYRESOURCEGROUP/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/DEMOWAF-V2",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_3",
        "clientIp": "203.0.113.139",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "",
        "ruleSetVersion": "",
        "ruleId": "0",
        "message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Inbound Score: 8 - SQLI=5,XSS=0,RFI=0,LFI=0,RCE=0,PHPI=0,HTTP=0,SESS=0): SQL Injection Attack: SQL Tautology Detected.",
        "action": "Blocked",
        "site": "Global",
        "details": {
            "message": "Warning. Operator GE matched 5 at TX:inbound_anomaly_score. ",
            "data": "",
            "file": "rules\/RESPONSE-980-CORRELATION.conf\\\"",
            "line": "73"
        },
        "hostname": "vm000003",
        "transactionId": "AcAcAcAcAKH@AcAcAcAcAyAt"
    }
}

Con la conoscenza del funzionamento dei set di regole CRS e del funzionamento del set di regole CRS 3.0 con un sistema di assegnazione dei punteggi anomalie (vedere Web application firewall per gateway applicazione di Azure) si sa che le due regole inferiori con il action: Blocked proprietà bloccano in base al punteggio di anomalia totale. Le regole su cui concentrarsi sono le prime due.

La prima voce viene registrata nel log perché l'utente ha usato un indirizzo IP numerico per accedere ad Application Gateway, che in questo caso può essere ignorata.

La seconda voce (regola 942130) viene visualizzata nei dettagli in quanto corrisponde a un criterio (1=1)e il campo è denominato text1. Seguire gli stessi passaggi precedenti per escludere il nome dell'attributo della richiesta uguale a text1.

Trovare i nomi delle intestazioni della richiesta

Usa Fiddler per trovare i nomi delle intestazioni di richiesta. Nello screenshot seguente è possibile visualizzare le intestazioni per questa richiesta GET, che includono Content-Type, User-Agent e altre intestazioni.

Screenshot di Fiddler Web Debugger. Nella scheda Raw sono elencati i dettagli dell'intestazione della richiesta, ad esempio la connessione, il tipo di contenuto e l'agente utente.

Puoi anche usare gli strumenti di sviluppo in Microsoft Edge o Google Chrome per visualizzare le intestazioni di richiesta e risposta. Per altre informazioni, vedere Registrare i file HAR.

Se la richiesta contiene cookie, selezionare la scheda Cookie per visualizzarli in Fiddler.

Limitare i parametri globali per eliminare i falsi positivi

  • Disabilitare l'ispezione del corpo della richiesta

    Quando imposti Inspect request body su off, il tuo WAF non analizza i corpi delle richieste del tuo traffico. Questa impostazione è utile se si sa con certezza che il corpo delle richieste non è dannoso per l'applicazione.

    Quando si disabilita questa opzione, solo il corpo della richiesta ignora l'ispezione. Gli header e i cookie continuano a essere controllati, a meno che non si escludano singoli elementi utilizzando la funzionalità dell'elenco delle esclusioni.

  • Disabilitare il limite massimo del corpo della richiesta

    Quando si disabilita il limite massimo del corpo della richiesta, WAF può elaborare corpi delle richieste di grandi dimensioni senza rifiutarli perché superano il limite di dimensioni. Questa impostazione è utile se si hanno regolarmente richieste di grandi dimensioni.

    Quando si disabilita questa opzione, il corpo della richiesta viene controllato solo fino al limite massimo di ispezione del corpo della richiesta. Se nella richiesta sono presenti contenuti dannosi oltre il limite massimo di ispezione del corpo della richiesta, il WAF non lo rileva.

  • Disabilitare i limiti massimi per le dimensioni dei file

    Quando si disabilitano i limiti di dimensioni dei file per WAF, è possibile caricare file di grandi dimensioni senza che il WAF rifiuti questi caricamenti di file. Consentendo il caricamento di file di grandi dimensioni, aumenta il rischio che il back-end venga sovraccaricato. Se si sa che le dimensioni massime di un caricamento di file possono essere, impostare un limite di dimensioni per i caricamenti di file leggermente superiore alle dimensioni massime previste. Limitare le dimensioni del file a un caso d'uso normale per l'applicazione è un altro modo per evitare attacchi. Tuttavia, se i caricamenti dei file superano regolarmente il limite massimo di dimensioni di caricamento dei file applicabili, potrebbe essere necessario disabilitare completamente i limiti delle dimensioni di caricamento dei file per evitare falsi positivi.

    Annotazioni

    Se sai che l'app non richiede mai alcun caricamento di file oltre una determinata dimensione, puoi limitare tale dimensione impostando un limite.

    Avvertimento

    Quando si assegna un nuovo set di regole gestite a un criterio WAF, tutte le personalizzazioni precedenti dei set di regole gestite esistenti, ad esempio lo stato della regola, le azioni delle regole e le esclusioni a livello di regola vengono reimpostate sulle impostazioni predefinite del nuovo set di regole gestite. Tuttavia, tutte le regole personalizzate, le impostazioni dei criteri e le esclusioni globali rimangono invariate durante la nuova assegnazione del set di regole.

Metriche del firewall (solo WAF v1)

Per i web application firewall v1, il portale fornisce ora le metriche seguenti:

  1. Web application firewall Numero richieste bloccate Numero di richieste bloccate.
  2. Web application firewall Conteggio delle regole bloccate Tutte le regole corrispondenti and la richiesta viene bloccata.
  3. Web application firewall Distribuzione totale delle regole Tutte le regole che corrispondono durante la valutazione.

Per abilitare le metriche, selezionare la scheda Metriche nel portale e selezionare una delle tre metriche.

References