Configurare elenchi di esclusione del web application firewall

A volte Azure Web application firewall 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. Per altre informazioni sugli elenchi di esclusione, vedere Azure Web application firewall con elenchi di esclusione di Frontdoor di Azure.

È possibile configurare un elenco di esclusione usando Azure PowerShell, l'interfaccia della riga di comando di Azure, l'API REST, Bicep, i modelli di azure Resource Manager e la portale di Azure.

Scenario

Si supponga di aver creato un'API. I client inviano richieste all'API che includono intestazioni con nomi come userid e user-id.

Durante l'ottimizzazione del WAF, si nota che alcune richieste legittime sono state bloccate perché le intestazioni utente includono sequenze di caratteri rilevate dal WAF come attacchi SQL injection. In particolare, l'ID regola 942230 rileva le intestazioni della richiesta e blocca le richieste. La regola 942230 fa parte del gruppo di regole SQLI.

Si decide di creare un'esclusione per consentire il passaggio di queste richieste legittime senza che il WAF li blocchi.

Creare un'esclusione

  1. Aprire i criteri WAF di Frontdoor di Azure.

  2. Selezionare Regole gestite>Gestisci esclusioni.

    Screenshot che mostra la portale di Azure che mostra la pagina Regole gestite del criterio WAF, con il pulsante Gestisci esclusioni evidenziato.

  3. Selezionare Aggiungi.

    Screenshot che mostra il portale di Azure con il pulsante Aggiungi elenco di esclusione.

  4. Configurare la sezione Si applica all'esclusione :

    Campo Valore
    Set di regole Microsoft_DefaultRuleSet_2.0
    Gruppo di regole SQLI
    Regola 942230 Rileva i tentativi di inserimento condizionale di SQL
  5. Configurare le condizioni di corrispondenza di esclusione:

    Campo Valore
    Corrispondenza variabile Nome intestazione richiesta
    Operatore Inizia con
    Selettore Utente
  6. Esaminare l'esclusione, simile alla schermata seguente:

    Screenshot che mostra il portale di Azure che mostra la configurazione di esclusione.

    Questa esclusione si applica a tutte le intestazioni di richiesta che iniziano con la parola user. La condizione di corrispondenza non fa distinzione tra maiuscole e minuscole, pertanto anche le intestazioni che iniziano con User sono coperte dall'esclusione. Se la regola WAF 942230 rileva un rischio in questi valori di intestazione, ignora l'intestazione e si sposta.

  7. Selezionare Salva.

Definire un selettore di esclusione

Usare il cmdlet New-AzFrontDoorWafManagedRuleExclusionObject per definire un nuovo selettore di esclusione.

Nell'esempio seguente vengono identificate le intestazioni di richiesta che iniziano con la parola user. La condizione di corrispondenza non fa distinzione tra maiuscole e minuscole, pertanto anche le intestazioni che iniziano con User sono coperte dall'esclusione.

$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
  -Variable RequestHeaderNames `
  -Operator StartsWith `
  -Selector 'user'

Definire un'esclusione per regola

Usare il cmdlet New-AzFrontDoorWafManagedRuleOverrideObject per definire una nuova esclusione per regola, che include il selettore creato nel passaggio precedente.

Nell'esempio seguente viene creata un'esclusione per l'ID regola 942230.

$exclusion = New-AzFrontDoorWafManagedRuleOverrideObject `
  -RuleId '942230' `
  -Exclusion $exclusionSelector

Applicare l'esclusione al gruppo di regole

Usare il cmdlet New-AzFrontDoorWafRuleGroupOverrideObject per creare un override del gruppo di regole, che applica l'esclusione al gruppo di regole appropriato.

Nell'esempio seguente viene usato il gruppo di regole SQLI perché il gruppo contiene l'ID regola 942230.

$ruleGroupOverride = New-AzFrontDoorWafRuleGroupOverrideObject `
  -RuleGroupName 'SQLI' `
  -ManagedRuleOverride $exclusion

Configurare il set di regole gestite

Usare il cmdlet New-AzFrontDoorWafManagedRuleObject per configurare il set di regole gestite, incluso l'override del gruppo di regole creato nel passaggio precedente.

Nell'esempio seguente viene configurato il set di regole DRS 2.0 con l'override del gruppo di regole e la relativa esclusione.

$managedRuleSet = New-AzFrontDoorWafManagedRuleObject `
  -Type 'Microsoft_DefaultRuleSet' `
  -Version '2.0' `
  -Action Block `
  -RuleGroupOverride $ruleGroupOverride

Applicare la configurazione del set di regole gestite al profilo WAF

Usare il cmdlet Update-AzFrontDoorWafPolicy per aggiornare i criteri WAF per includere la configurazione creata. Assicurarsi di usare il nome corretto del gruppo di risorse e il nome del criterio WAF per il proprio ambiente.

Update-AzFrontDoorWafPolicy `
  -ResourceGroupName 'FrontDoorWafPolicy' `
  -Name 'WafPolicy'
  -ManagedRule $managedRuleSet

Creare un'esclusione

Usare il az network front-door waf-policy managed-rules exclusion add comando per aggiornare i criteri WAF per aggiungere una nuova esclusione.

L'esclusione identifica le intestazioni della richiesta che iniziano con la parola user. La condizione di corrispondenza non fa distinzione tra maiuscole e minuscole, pertanto anche le intestazioni che iniziano con User sono coperte dall'esclusione.

Assicurarsi di usare il nome corretto del gruppo di risorse e il nome del criterio WAF per il proprio ambiente.

az network front-door waf-policy managed-rules exclusion add \
  --resource-group FrontDoorWafPolicy \
  --policy-name WafPolicy \
  --type Microsoft_DefaultRuleSet \
  --rule-group-id SQLI \
  --rule-id 942230 \
  --match-variable RequestHeaderNames \
  --operator StartsWith \
  --value user

File Bicep di esempio

Il file Bicep di esempio seguente illustra come:

  • Creare un criterio WAF di Frontdoor di Azure.
  • Abilitare il set di regole DRS 2.0.
  • Configurare un'esclusione per la regola 942230, che esiste all'interno del gruppo di regole SQLI. Questa esclusione si applica a tutte le intestazioni di richiesta che iniziano con la parola user. La condizione di corrispondenza non fa distinzione tra maiuscole e minuscole, pertanto anche le intestazioni che iniziano con User sono coperte dall'esclusione. Se la regola WAF 942230 rileva un rischio in questi valori di intestazione, ignora l'intestazione e si sposta.
param wafPolicyName string = 'WafPolicy'

@description('The mode that the WAF should be deployed using. In "Prevention" mode, the WAF will block requests it detects as malicious. In "Detection" mode, the WAF will not block requests and will simply log the request.')
@allowed([
  'Detection'
  'Prevention'
])
param wafMode string = 'Prevention'

resource wafPolicy 'Microsoft.Network/frontDoorWebApplicationFirewallPolicies@2022-05-01' = {
  name: wafPolicyName
  location: 'Global'
  sku: {
    name: 'Premium_AzureFrontDoor'
  }
  properties: {
    policySettings: {
      enabledState: 'Enabled'
      mode: wafMode
    }
    managedRules: {
      managedRuleSets: [
        {
          ruleSetType: 'Microsoft_DefaultRuleSet'
          ruleSetVersion: '2.0'
          ruleSetAction: 'Block'
          ruleGroupOverrides: [
            {
              ruleGroupName: 'SQLI'
              rules: [
                {
                  ruleId: '942230'
                  enabledState: 'Enabled'
                  action: 'AnomalyScoring'
                  exclusions: [
                    {
                      matchVariable: 'RequestHeaderNames'
                      selectorMatchOperator: 'StartsWith'
                      selector: 'user'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Passaggi successivi

Altre informazioni su Frontdoor di Azure.