Dela via


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

  1. Öppna din Azure Front Door WAF-princip.

  2. Välj Hanterade regler>Hantera undantag.

    Skärmbild som visar Azure Portal som visar WAF-principens sida Hanterade regler med knappen Hantera undantag markerad.

  3. Välj Lägg till.

    Skärmbild som visar Azure Portal med knappen Lägg till i undantagslistan.

  4. 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
  5. Konfigurera villkor för undantagsmatchning:

    Fält Värde
    Matchningsvariabel Namn på begärandehuvud
    Operator Börjar med
    Väljare Användare
  6. Granska undantaget, som bör se ut som på följande skärmbild:

    Skärmbild som visar Azure Portal som visar exkluderingskonfigurationen.

    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 med User omfattas också av undantaget. Om WAF-regel 942230 identifierar en risk i dessa rubrikvärden ignorerar den huvudet och går vidare.

  7. 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 med User 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.