Webalkalmazási tűzfal kizárási listáinak konfigurálása

Előfordulhat, hogy az Azure Web Application Firewall az Azure Front Doorban blokkol egy jogos kérést. A webalkalmazási tűzfal (WAF) finomhangolásának részeként konfigurálhatja a WAF-ot az alkalmazás kérésének engedélyezésére. A WAF-kizárási listák lehetővé teszik, hogy bizonyos kérésattribútumokat kihagyjon a WAF-értékelésből. A kérés többi része a szokásos módon lesz kiértékelve. További információ a kizárási listákról: Azure Web Application Firewall az Azure Front Door kizárási listáival.

A kizárási lista konfigurálható Azure PowerShell, az Azure CLI, a REST API, a Bicep, az Azure Resource Manager sablonok és a Azure Portal használatával.

Eset

Tegyük fel, hogy létrehozott egy API-t. Az ügyfelek kéréseket küldenek az API-nak, amelyek olyan fejléceket tartalmaznak, mint a userid és user-ida .

A WAF finomhangolása során megfigyelheti, hogy néhány jogos kérés le lett tiltva, mert a felhasználói fejlécek olyan karaktersorozatokat tartalmaztak, amelyeket a WAF SQL-injektálási támadásként észlelt. Pontosabban a 942230-ás szabályazonosító észleli a kérésfejléceket, és blokkolja a kéréseket. A 942230 szabály az SQLI-szabálycsoport része.

Úgy dönt, hogy kizárást hoz létre, hogy lehetővé tegye ezeknek a jogos kéréseknek a továbbítását anélkül, hogy a WAF blokkolta őket.

Kizárás létrehozása

  1. Nyissa meg az Azure Front Door WAF-szabályzatát.

  2. Válassza a Felügyelt szabályok>Kizárások kezelése lehetőséget.

    Képernyőkép a WAF-szabályzat Felügyelt szabályok lapját megjelenítő Azure Portal a Kivételek kezelése gomb kiemelésével.

  3. Válassza a Hozzáadás lehetőséget.

    Képernyőkép a Azure Portal a kizárási listáról Hozzáadás gombbal.

  4. Konfigurálja a kizárásI szakaszra vonatkozó szakaszát:

    Mező Érték
    Szabálykészlet Microsoft_DefaultRuleSet_2.0
    Szabálycsoport SQLI
    Szabály 942230 Feltételes SQL-injektálási kísérletek észlelése
  5. Konfigurálja a kizárási egyezés feltételeit:

    Mező Érték
    Változó egyeztetése Kérelem fejlécének neve
    Operátor Ezzel kezdődik
    Szelektor Felhasználó
  6. Tekintse át a kizárást, amelynek az alábbi képernyőképhez hasonlóan kell kinéznie:

    Képernyőkép a kizárási konfigurációt megjelenítő Azure Portal.

    Ez a kizárás minden olyan kérelemfejlécre vonatkozik, amely a következő szóval userkezdődik: . Az egyezési feltétel nem különbözteti meg a kis- és nagybetűket, ezért a kezdő fejlécekre User is vonatkozik a kizárás. Ha a 942230 WAF-szabály kockázatot észlel ezekben a fejlécértékekben, figyelmen kívül hagyja a fejlécet, és továbblép.

  7. Kattintson a Mentés gombra.

Kizárási választó definiálása

Új kizárási választó definiálásához használja a New-AzFrontDoorWafManagedRuleExclusionObject parancsmagot.

Az alábbi példa a következő szóval userkezdődő kérelemfejléceket azonosítja: . Az egyezési feltétel nem különbözteti meg a kis- és nagybetűket, ezért a kezdő fejlécekre User is vonatkozik a kizárás.

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

Szabályonkénti kizárás definiálása

A New-AzFrontDoorWafManagedRuleOverrideObject parancsmaggal definiáljon egy új szabályonkénti kizárást, amely tartalmazza az előző lépésben létrehozott választót.

Az alábbi példa egy kizárást hoz létre a 942230-at azonosító szabályhoz.

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

A kizárás alkalmazása a szabálycsoportra

A New-AzFrontDoorWafRuleGroupOverrideObject parancsmaggal hozzon létre egy szabálycsoport-felülbírálást, amely a kizárást a megfelelő szabálycsoportra alkalmazza.

Az alábbi példa az SQLI-szabálycsoportot használja, mert ez a csoport a 942230-ás szabályazonosítót tartalmazza.

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

A felügyelt szabálykészlet konfigurálása

A New-AzFrontDoorWafManagedRuleObject parancsmaggal konfigurálhatja a felügyelt szabálykészletet, beleértve az előző lépésben létrehozott szabálycsoport-felülbírálást is.

Az alábbi példa a DRS 2.0 szabálykészletet konfigurálja a szabálycsoport felülbírálásával és kizárásával.

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

A felügyelt szabálykészlet konfigurációjának alkalmazása a WAF-profilra

Az Update-AzFrontDoorWafPolicy parancsmaggal frissítse a WAF-szabályzatot, hogy tartalmazza a létrehozott konfigurációt. Győződjön meg arról, hogy a megfelelő erőforráscsoport-nevet és WAF-szabályzatnevet használja a saját környezetéhez.

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

Kizárás létrehozása

az network front-door waf-policy managed-rules exclusion add Az paranccsal frissítse a WAF-szabályzatot egy új kizárás hozzáadásához.

A kizárás a következő szóval userkezdődő kérelemfejléceket azonosítja: . Az egyezési feltétel nem különbözteti meg a kis- és nagybetűket, ezért a kezdő fejlécekre User is vonatkozik a kizárás.

Győződjön meg arról, hogy a megfelelő erőforráscsoport-nevet és WAF-szabályzatnevet használja a saját környezetéhez.

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élda Bicep-fájlra

Az alábbi Bicep-példafájl a következőket mutatja be:

  • Hozzon létre egy Azure Front Door WAF-szabályzatot.
  • Engedélyezze a DRS 2.0 szabálykészletet.
  • Konfiguráljon kizárást a 942230-ás szabályhoz, amely az SQLI-szabálycsoporton belül létezik. Ez a kizárás minden olyan kérelemfejlécre vonatkozik, amely a következő szóval userkezdődik: . Az egyezési feltétel nem különbözteti meg a kis- és nagybetűket, ezért a kezdő fejlécekre User is vonatkozik a kizárás. Ha a 942230 WAF-szabály kockázatot észlel ezekben a fejlécértékekben, figyelmen kívül hagyja a fejlécet, és továbblép.
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'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Következő lépések

További információ az Azure Front Doorról.