Konfigurera undantagslistor för brandvägg för webbprogram
Ibland kan Azure Web Application Firewall i Azure Front Door blockera en legitim begäran. Som en del av justeringen av brandväggen för webbprogram (WAF) kan du konfigurera WAF för att tillåta begäran för ditt program. Med WAF-undantagslistor kan du utelämna specifika begärandeattribut från en WAF-utvärdering. Resten av begäran utvärderas som vanligt. Mer information om undantagslistor finns i Azure Web Application Firewall med Azure Front Door-undantagslistor.
En undantagslista kan konfigureras med hjälp av Azure PowerShell, Azure CLI, REST API, Bicep, Azure Resource Manager mallar och Azure Portal.
Scenario
Anta att du har skapat ett API. Dina klienter skickar begäranden till ditt API som innehåller rubriker med namn som userid
och user-id
.
När du justerar din WAF ser du att vissa legitima begäranden blockerades eftersom användarhuvudena inkluderade teckensekvenser som WAF identifierade som SQL-inmatningsattacker. Mer specifikt identifierar regel-ID 942230 begärandehuvudena och blockerar begäranden. Regel 942230 ingår i SQLI-regelgruppen.
Du bestämmer dig för att skapa ett undantag så att dessa legitima begäranden kan passera utan att WAF blockerar dem.
Skapa ett undantag
Öppna din Azure Front Door WAF-princip.
Välj Hanterade regler>Hantera undantag.
Välj Lägg till.
Konfigurera exkluderingsavsnittet Gäller för :
Fält Värde Regeluppsättning Microsoft_DefaultRuleSet_2.0 Regelgrupp SQLI Regel 942230 Identifierar försök till villkorlig SQL-inmatning Konfigurera villkor för undantagsmatchning:
Fält Värde Matchningsvariabel Namn på begärandehuvud Operator Börjar med Väljare Användare Granska undantaget, som bör se ut som på följande skärmbild:
Det här undantaget gäller för alla begärandehuvuden som börjar med ordet
user
. Matchningsvillkoret är skiftlägesokänsligt, så rubriker som börjar medUser
omfattas också av undantaget. Om WAF-regel 942230 identifierar en risk i dessa rubrikvärden ignorerar den huvudet och går vidare.Välj Spara.
Definiera en undantagsväljare
Använd cmdleten New-AzFrontDoorWafManagedRuleExclusionObject för att definiera en ny undantagsväljare.
I följande exempel identifieras begärandehuvuden som börjar med ordet user
. Matchningsvillkoret är skiftlägesokänsligt, så rubriker som börjar med User
omfattas också av undantaget.
$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
-Variable RequestHeaderNames `
-Operator StartsWith `
-Selector 'user'
Definiera ett undantag per regel
Använd cmdleten New-AzFrontDoorWafManagedRuleOverrideObject för att definiera ett nytt undantag per regel, som innehåller väljaren som du skapade i föregående steg.
I följande exempel skapas ett undantag för regel-ID 942230.
$exclusion = New-AzFrontDoorWafManagedRuleOverrideObject `
-RuleId '942230' `
-Exclusion $exclusionSelector
Tillämpa undantaget på regelgruppen
Använd cmdleten New-AzFrontDoorWafRuleGroupOverrideObject för att skapa en åsidosättning av regelgrupp, som tillämpar undantaget på lämplig regelgrupp.
I följande exempel används SQLI-regelgruppen eftersom den gruppen innehåller regel-ID 942230.
$ruleGroupOverride = New-AzFrontDoorWafRuleGroupOverrideObject `
-RuleGroupName 'SQLI' `
-ManagedRuleOverride $exclusion
Konfigurera den hanterade regeluppsättningen
Använd cmdleten New-AzFrontDoorWafManagedRuleObject för att konfigurera den hanterade regeluppsättningen, inklusive regelgruppens åsidosättning som du skapade i föregående steg.
I följande exempel konfigureras DRS 2.0-regeluppsättningen med regelgruppens åsidosättning och dess undantag.
$managedRuleSet = New-AzFrontDoorWafManagedRuleObject `
-Type 'Microsoft_DefaultRuleSet' `
-Version '2.0' `
-Action Block `
-RuleGroupOverride $ruleGroupOverride
Tillämpa konfigurationen för den hanterade regeluppsättningen på WAF-profilen
Använd cmdleten Update-AzFrontDoorWafPolicy för att uppdatera WAF-principen så att den innehåller den konfiguration som du skapade. Se till att du använder rätt resursgruppsnamn och WAF-principnamn för din egen miljö.
Update-AzFrontDoorWafPolicy `
-ResourceGroupName 'FrontDoorWafPolicy' `
-Name 'WafPolicy'
-ManagedRule $managedRuleSet
Skapa ett undantag
az network front-door waf-policy managed-rules exclusion add
Använd kommandot för att uppdatera waf-principen för att lägga till ett nytt undantag.
Undantaget identifierar begärandehuvuden som börjar med ordet user
. Matchningsvillkoret är skiftlägesokänsligt, så rubriker som börjar med User
omfattas också av undantaget.
Se till att du använder rätt resursgruppsnamn och WAF-principnamn för din egen miljö.
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
Exempel på Bicep-fil
Följande Bicep-exempelfil visar hur du:
- Skapa en Azure Front Door WAF-princip.
- Aktivera DRS 2.0-regeluppsättningen.
- Konfigurera ett undantag för regel 942230, som finns i SQLI-regelgruppen. Det här undantaget gäller för alla begärandehuvuden som börjar med ordet
user
. Matchningsvillkoret är skiftlägesokänsligt, så rubriker som börjar medUser
omfattas också av undantaget. Om WAF-regel 942230 identifierar en risk i dessa rubrikvärden ignorerar den huvudet och går vidare.
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ästa steg
Läs mer om Azure Front Door.