Konfigurace seznamů vyloučení Firewallu webových aplikací
V některých případech může azure Web Application Firewall ve službě Azure Front Door blokovat legitimní požadavek. V rámci ladění Firewallu webových aplikací (WAF) můžete waf nakonfigurovat tak, aby povolovali požadavek pro vaši aplikaci. Seznamy vyloučení WAF umožňují vynechat konkrétní atributy požadavků z vyhodnocení WAF. Zbytek požadavku se vyhodnotí jako normální. Další informace o seznamech vyloučení najdete v tématu Azure Web Application Firewall se seznamy vyloučení služby Azure Front Door.
Seznam vyloučení je možné nakonfigurovat pomocí Azure PowerShell, Azure CLI, rozhraní REST API, Bicep, šablon Azure Resource Manager a Azure Portal.
Scenario
Předpokládejme, že jste vytvořili rozhraní API. Vaši klienti odesílají do vašeho rozhraní API požadavky, které obsahují hlavičky s názvy jako userid
a user-id
.
Při ladění WAF si všimnete, že některé legitimní požadavky byly zablokované, protože hlavičky uživatelů obsahovaly sekvence znaků, které WAF zjistil jako útoky prostřednictvím injektáže SQL. Konkrétně pravidlo s ID 942230 rozpozná hlavičky požadavku a zablokuje požadavky. Pravidlo 942230 je součástí skupiny pravidel SQLI.
Rozhodnete se vytvořit vyloučení, které umožní průchod těmto legitimním požadavkům, aniž by je WAF blokoval.
Vytvoření vyloučení
Otevřete zásady WAF služby Azure Front Door.
Vyberte Spravovaná pravidla>Spravovat vyloučení.
Vyberte Přidat.
Nakonfigurujte část Vyloučení platí pro :
Pole Hodnota Sada pravidel Microsoft_DefaultRuleSet_2.0 Skupina pravidla SQLI Pravidlo 942230 Zjišťuje pokusy o podmíněné injektáže SQL Nakonfigurujte podmínky shody vyloučení:
Pole Hodnota Shoda s proměnnou Název hlavičky požadavku Operátor Začíná na Volič Uživatel Zkontrolujte vyloučení, které by mělo vypadat jako na následujícím snímku obrazovky:
Toto vyloučení se vztahuje na všechny hlavičky požadavků, které začínají slovem
user
. Podmínka shody nerozlišuje velká a malá písmena, takže vyloučení se vztahuje i na hlavičky, které začínajíUser
na . Pokud pravidlo WAF 942230 zjistí riziko v těchto hodnotách hlaviček, hlavičku ignoruje a pokračuje dál.Vyberte Uložit.
Definování selektoru vyloučení
K definování nového selektoru vyloučení použijte rutinu New-AzFrontDoorWafManagedRuleExclusionObject .
Následující příklad identifikuje hlavičky požadavku, které začínají slovem user
. Podmínka shody nerozlišuje velká a malá písmena, takže vyloučení se vztahuje i na hlavičky, které začínají User
na .
$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
-Variable RequestHeaderNames `
-Operator StartsWith `
-Selector 'user'
Definování vyloučení podle pravidla
Pomocí rutiny New-AzFrontDoorWafManagedRuleOverrideObject definujte nové vyloučení podle pravidla, které zahrnuje selektor, který jste vytvořili v předchozím kroku.
Následující příklad vytvoří vyloučení pro pravidlo s ID 942230.
$exclusion = New-AzFrontDoorWafManagedRuleOverrideObject `
-RuleId '942230' `
-Exclusion $exclusionSelector
Použití vyloučení na skupinu pravidel
Pomocí rutiny New-AzFrontDoorWafRuleGroupOverrideObject vytvořte přepsání skupiny pravidel, které použije vyloučení na příslušnou skupinu pravidel.
Následující příklad používá skupinu pravidel SQLI, protože tato skupina obsahuje id pravidla 942230.
$ruleGroupOverride = New-AzFrontDoorWafRuleGroupOverrideObject `
-RuleGroupName 'SQLI' `
-ManagedRuleOverride $exclusion
Konfigurace spravované sady pravidel
Pomocí rutiny New-AzFrontDoorWafManagedRuleObject nakonfigurujte spravovanou sadu pravidel, včetně přepsání skupiny pravidel, které jste vytvořili v předchozím kroku.
Následující příklad konfiguruje sadu pravidel DRS 2.0 s přepsání skupiny pravidel a jejím vyloučením.
$managedRuleSet = New-AzFrontDoorWafManagedRuleObject `
-Type 'Microsoft_DefaultRuleSet' `
-Version '2.0' `
-Action Block `
-RuleGroupOverride $ruleGroupOverride
Použití konfigurace spravované sady pravidel na profil WAF
Pomocí rutiny Update-AzFrontDoorWafPolicy aktualizujte zásady WAF tak, aby zahrnovaly vámi vytvořenou konfiguraci. Ujistěte se, že používáte správný název skupiny prostředků a název zásad WAF pro vaše vlastní prostředí.
Update-AzFrontDoorWafPolicy `
-ResourceGroupName 'FrontDoorWafPolicy' `
-Name 'WafPolicy'
-ManagedRule $managedRuleSet
Vytvoření vyloučení
Pomocí příkazu az network front-door waf-policy managed-rules exclusion add
aktualizujte zásady WAF a přidejte nové vyloučení.
Vyloučení identifikuje hlavičky požadavků, které začínají slovem user
. Podmínka shody nerozlišuje velká a malá písmena, takže vyloučení se vztahuje i na hlavičky, které začínají User
na .
Ujistěte se, že používáte správný název skupiny prostředků a název zásad WAF pro vaše vlastní prostředí.
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
Příklad souboru Bicep
Následující příklad souboru Bicep ukazuje, jak:
- Vytvořte zásadu WAF služby Azure Front Door.
- Povolte sadu pravidel DRS 2.0.
- Nakonfigurujte vyloučení pro pravidlo 942230, které existuje v rámci skupiny pravidel SQLI. Toto vyloučení se vztahuje na všechny hlavičky požadavků, které začínají slovem
user
. Podmínka shody nerozlišuje velká a malá písmena, takže vyloučení se vztahuje i na hlavičky, které začínajíUser
na . Pokud pravidlo WAF 942230 zjistí riziko v těchto hodnotách hlaviček, hlavičku ignoruje a pokračuje dál.
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'
}
]
}
]
}
]
}
]
}
}
}
Další kroky
Přečtěte si další informace o službě Azure Front Door.