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
Öffnen Sie Ihre WAF-Richtlinie für Azure Front Door.
Wählen Sie Verwaltete Regeln>Ausschlüsse verwalten aus.
Wählen Sie Hinzufügen.
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. Konfigurieren Sie die Übereinstimmungsbedingungen für den Ausschluss:
Feld Wert Übereinstimmungsvariable Name des Anforderungsheaders Operator Beginnt mit Auswahl User Überprüfen Sie den Ausschluss, der dem folgenden Screenshot entsprechen sollte:
Dieser Ausschluss gilt für alle Anforderungsheader, die mit dem Wort
user
beginnen. Bei der Übereinstimmungsbedingung wird die Groß-/Kleinschreibung nicht beachtet, sodass Kopfzeilen, die mitUser
beginnen, durch den Ausschluss ebenfalls abgedeckt werden. Wenn WAF-Regel 942230 ein Risiko in diesen Kopfzeilenwerten erkennt, wird die Kopfzeile ignoriert und fortgefahren.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 user
beginnen. 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
user
beginnen. Bei der Übereinstimmungsbedingung wird die Groß-/Kleinschreibung nicht beachtet, sodass Kopfzeilen, die mitUser
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.