Sdílet prostřednictvím


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í

  1. Otevřete zásady WAF služby Azure Front Door.

  2. Vyberte Spravovaná pravidla>Spravovat vyloučení.

    Snímek obrazovky zobrazující Azure Portal zobrazující stránku Spravovaná pravidla zásad WAF se zvýrazněným tlačítkem Spravovat vyloučení

  3. Vyberte Přidat.

    Snímek obrazovky znázorňující Azure Portal s tlačítkem Přidat v seznamu vyloučení

  4. 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
  5. 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
  6. Zkontrolujte vyloučení, které by mělo vypadat jako na následujícím snímku obrazovky:

    Snímek obrazovky znázorňující Azure Portal znázorňující konfiguraci vyloučení

    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.

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