Konfigurieren von Ausschlusslisten für die Web Application Firewall

Es kann vorkommen, dass die Azure Web Application Firewall in Azure Front Door eine legitime Anforderung blockiert. Im Rahmen der Optimierung Ihrer Web Application Firewall (WAF) können Sie die WAF so konfigurieren, dass die Anforderung für Ihre Anwendung zugelassen wird. Mit WAF-Ausschlusslisten können Sie bestimmte Anforderungsattribute in einer WAF-Auswertung auslassen. Der Rest der Anforderung wird wie gewohnt ausgewertet. Weitere Informationen zu Ausschlusslisten finden Sie unter Azure Web Application Firewall mit Ausschlusslisten für Azure Front Door.

Eine Ausschlussliste kann über Azure PowerShell, die Azure-Befehlszeilenschnittstelle, die REST-API, Bicep, Azure Resource Manager-Vorlagen und das Azure-Portal konfiguriert werden.

Szenario

Angenommen, Sie haben eine API erstellt. Ihre Clients senden Anforderungen an Ihre API, die Header mit Namen wie userid und user-id enthalten.

Beim Optimieren Ihrer WAF stellen Sie fest, dass einige legitime Anforderungen blockiert wurden, da die Benutzerkopfzeilen Zeichensequenzen enthielten, die die WAF als Angriffe durch Einschleusung von SQL-Befehlen erkannte. Insbesondere erkennt die Regel mit der ID 942230 die Anforderungsheader und blockiert die Anforderungen. Regel 942230 ist ein Teil der SQLI-Regelgruppe.

Sie entscheiden sich, einen Ausschluss zu erstellen, um diese legitimen Anforderungen zuzulassen, ohne dass die WAF sie blockiert.

Erstellen eines Ausschlusses

  1. Öffnen Sie Ihre WAF-Richtlinie für Azure Front Door.

  2. Wählen Sie Verwaltete Regeln>Ausschlüsse verwalten aus.

    Screenshot, der das Azure-Portal mit der Seite für die verwalteten Regeln (Managed Rules) der WAF-Richtlinie und hervorgehobener Schaltfläche „Ausschlüsse verwalten“ (Manage exclusions) anzeigt.

  3. Wählen Sie Hinzufügen.

    Screenshot, der das Azure-Portal mit der Schaltfläche „Hinzufügen“ (Add) der Ausschlussliste anzeigt.

  4. Konfigurieren Sie den Abschnitt Gilt für des Ausschlusses:

    Feld Wert
    Regelsatz Microsoft_DefaultRuleSet_2.0
    Regelgruppe SQLI
    Regel 942230 erkennt Angriffsversuche mit bedingter SQL-Einschleusung.
  5. Konfigurieren Sie die Übereinstimmungsbedingungen für den Ausschluss:

    Feld Wert
    Übereinstimmungsvariable Name des Anforderungsheaders
    Operator Beginnt mit
    Auswahl User
  6. Überprüfen Sie den Ausschluss, der dem folgenden Screenshot entsprechen sollte:

    Screenshot, der das Azure-Portal mit der Ausschlusskonfiguration anzeigt.

    Dieser Ausschluss gilt für alle Anforderungsheader, die mit dem Wort userbeginnen. Bei der Übereinstimmungsbedingung wird die Groß-/Kleinschreibung nicht beachtet, sodass Kopfzeilen, die mit User beginnen, durch den Ausschluss ebenfalls abgedeckt werden. Wenn WAF-Regel 942230 ein Risiko in diesen Kopfzeilenwerten erkennt, wird die Kopfzeile ignoriert und fortgefahren.

  7. Wählen Sie Speichern aus.

Definieren eines Ausschlussselektors

Verwenden Sie das Cmdlet New-AzFrontDoorWafManagedRuleExclusionObject, um einen neuen Ausschlussselektor zu definieren.

Im folgenden Beispiel werden Anforderungskopfzeilen identifiziert, die mit dem Wort user beginnen. Bei der Übereinstimmungsbedingung wird die Groß-/Kleinschreibung nicht beachtet, sodass Kopfzeilen, die mit User beginnen, durch den Ausschluss ebenfalls abgedeckt werden.

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

Definieren eines Ausschlusses pro Regel

Verwenden Sie das Cmdlet New-AzFrontDoorWafManagedRuleOverrideObject, um einen neuen Ausschluss pro Regel zu definieren, der den im vorherigen Schritt erstellten Selektor enthält.

Im folgenden Beispiel wird ein Ausschluss für Regel-ID 942230 erstellt.

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

Anwenden des Ausschlusses auf die Regelgruppe

Verwenden Sie das Cmdlet New-AzFrontDoorWafRuleGroupOverrideObject, um eine Regelgruppen-Außerkraftsetzung zu erstellen, die den Ausschluss auf die entsprechende Regelgruppe anwendet.

Im folgenden Beispiel wird die SQLI-Regelgruppe verwendet, da diese Gruppe die Regel-ID „942230“ enthält.

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

Konfigurieren des verwalteten Regelsatzes

Verwenden Sie das Cmdlet New-AzFrontDoorWafManagedRuleObject, um den verwalteten Regelsatz einschließlich der im vorherigen Schritt erstellten Regelgruppen-Außerkraftsetzung zu konfigurieren.

Im folgenden Beispiel wird der DRS 2.0-Regelsatz mit der Außerkraftsetzung der Regelgruppe und deren Ausschluss konfiguriert.

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

Anwenden der Konfiguration des verwalteten Regelsatzes auf das WAF-Profil

Verwenden Sie das Cmdlet Update-AzFrontDoorWafPolicy, um Ihre WAF-Richtlinie zu aktualisieren, um die erstellte Konfiguration einzuschließen. Stellen Sie sicher, dass Sie den richtigen Ressourcengruppennamen und den WAF-Richtliniennamen für Ihre eigene Umgebung verwenden.

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

Erstellen eines Ausschlusses

Verwenden Sie den Befehl az network front-door waf-policy managed-rules exclusion add, um Ihre WAF-Richtlinie zu aktualisieren und einen neuen Ausschluss hinzuzufügen.

Der Ausschluss identifiziert Anforderungsheader, die mit dem Wort userbeginnen. Bei der Übereinstimmungsbedingung wird die Groß-/Kleinschreibung nicht beachtet, sodass Kopfzeilen, die mit User beginnen, durch den Ausschluss ebenfalls abgedeckt werden.

Stellen Sie sicher, dass Sie den richtigen Ressourcengruppennamen und den WAF-Richtliniennamen für Ihre eigene Umgebung verwenden.

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

Beispiel-Bicep-Datei

Anhand der folgenden Bicep-Beispieldatei wird gezeigt, wie Sie die folgenden Schritte ausführen:

  • Erstellen Sie eine WAF-Richtlinie für Azure Front Door.
  • Aktivieren Sie den DRS 2.0-Regelsatz.
  • Konfigurieren Sie einen Ausschluss für Regel 942230, die in der SQLI-Regelgruppe enthalten ist. Dieser Ausschluss gilt für alle Anforderungsheader, die mit dem Wort userbeginnen. Bei der Übereinstimmungsbedingung wird die Groß-/Kleinschreibung nicht beachtet, sodass Kopfzeilen, die mit User beginnen, durch den Ausschluss ebenfalls abgedeckt werden. Wenn WAF-Regel 942230 ein Risiko in diesen Kopfzeilenwerten erkennt, wird die Kopfzeile ignoriert und fortgefahren.
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'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Nächste Schritte

Erfahren Sie mehr zu Azure Front Door.