Konfigurowanie list wykluczeń zapory aplikacji internetowej

Czasami usługa Azure Web Application Firewall w usłudze Azure Front Door może blokować uzasadnione żądanie. W ramach dostrajania zapory aplikacji internetowej (WAF) można skonfigurować zaporę aplikacji internetowej tak, aby zezwalała na żądanie aplikacji. Listy wykluczeń zapory aplikacji internetowej umożliwiają pominięcie określonych atrybutów żądania z oceny zapory aplikacji internetowej. Pozostała część żądania jest oceniana jako normalna. Aby uzyskać więcej informacji na temat list wykluczeń, zobacz Azure Web Application Firewall z listami wykluczeń usługi Azure Front Door.

Listę wykluczeń można skonfigurować przy użyciu Azure PowerShell, interfejsu wiersza polecenia platformy Azure, interfejsu API REST, Bicep, szablonów usługi Azure Resource Manager i Azure Portal.

Scenariusz

Załóżmy, że utworzono interfejs API. Klienci wysyłają żądania do interfejsu API zawierające nagłówki z nazwami takimi jak userid i user-id.

Podczas dostrajania zapory aplikacji internetowej zauważasz, że niektóre uzasadnione żądania zostały zablokowane, ponieważ nagłówki użytkownika zawierały sekwencje znaków wykryte przez zaporę aplikacji internetowej podczas ataków polegających na wstrzyknięciu kodu SQL. W szczególności identyfikator reguły 942230 wykrywa nagłówki żądania i blokuje żądania. Reguła 942230 jest częścią grupy reguł SQLI.

Postanawiasz utworzyć wykluczenie, aby zezwolić na przekazywanie tych uzasadnionych żądań bez blokowania ich przez zaporę aplikacji internetowej.

Tworzenie wykluczenia

  1. Otwórz zasady zapory aplikacji internetowej usługi Azure Front Door.

  2. Wybierz pozycję Reguły zarządzane>Zarządzaj wykluczeniami.

    Zrzut ekranu przedstawiający Azure Portal strony Zarządzane reguły zapory aplikacji internetowej z wyróżnionym przyciskiem Zarządzaj wykluczeniami.

  3. Wybierz pozycję Dodaj.

    Zrzut ekranu przedstawiający Azure Portal z przyciskiem Dodaj listę wykluczeń.

  4. Skonfiguruj sekcję Dotyczącą wykluczenia:

    Pole Wartość
    Zestaw reguł Microsoft_DefaultRuleSet_2.0
    Grupa reguł SQLI
    Reguła 942230 Wykrywa próby wstrzyknięcia warunkowego KODU SQL
  5. Skonfiguruj warunki dopasowania wykluczenia:

    Pole Wartość
    Dopasuj zmienną Nazwa nagłówka żądania
    Operator Rozpoczyna się od
    Selektor Użytkownik
  6. Przejrzyj wykluczenie, które powinno wyglądać podobnie do poniższego zrzutu ekranu:

    Zrzut ekranu przedstawiający Azure Portal pokazujący konfigurację wykluczeń.

    To wykluczenie dotyczy wszystkich nagłówków żądań rozpoczynających się od wyrazu user. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się User od są również objęte wykluczeniem. Jeśli reguła zapory aplikacji internetowej 942230 wykryje ryzyko w tych wartościach nagłówka, ignoruje nagłówek i przechodzi dalej.

  7. Wybierz pozycję Zapisz.

Definiowanie selektora wykluczeń

Użyj polecenia cmdlet New-AzFrontDoorWafManagedRuleExclusionObject , aby zdefiniować nowy selektor wykluczeń.

W poniższym przykładzie zidentyfikowane są nagłówki żądań rozpoczynające się od wyrazu user. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się User od są również objęte wykluczeniem.

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

Definiowanie wykluczenia dla poszczególnych reguł

Użyj polecenia cmdlet New-AzFrontDoorWafManagedRuleOverrideObject , aby zdefiniować nowe wykluczenie poszczególnych reguł, które obejmuje selektor utworzony w poprzednim kroku.

Poniższy przykład tworzy wykluczenie dla identyfikatora reguły 942230.

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

Stosowanie wykluczenia do grupy reguł

Użyj polecenia cmdlet New-AzFrontDoorWafRuleGroupOverrideObject , aby utworzyć przesłonięć grupę reguł, która stosuje wykluczenie do odpowiedniej grupy reguł.

W poniższym przykładzie użyto grupy reguł SQLI, ponieważ ta grupa zawiera identyfikator reguły 942230.

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

Konfigurowanie zarządzanego zestawu reguł

Użyj polecenia cmdlet New-AzFrontDoorWafManagedRuleObject , aby skonfigurować zarządzany zestaw reguł, w tym zastąpienie grupy reguł utworzone w poprzednim kroku.

W poniższym przykładzie skonfigurowaliśmy zestaw reguł DRS 2.0 z zastąpieniem grupy reguł i jego wykluczeniem.

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

Stosowanie konfiguracji zestawu reguł zarządzanych do profilu zapory aplikacji internetowej

Użyj polecenia cmdlet Update-AzFrontDoorWafPolicy , aby zaktualizować zasady zapory aplikacji internetowej w celu uwzględnienia utworzonej konfiguracji. Upewnij się, że używasz poprawnej nazwy grupy zasobów i nazwy zasad zapory aplikacji internetowej dla własnego środowiska.

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

Tworzenie wykluczenia

az network front-door waf-policy managed-rules exclusion add Użyj polecenia , aby zaktualizować zasady zapory aplikacji internetowej, aby dodać nowe wykluczenie.

Wykluczenie identyfikuje nagłówki żądań rozpoczynające się od wyrazu user. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się User od są również objęte wykluczeniem.

Upewnij się, że używasz poprawnej nazwy grupy zasobów i nazwy zasad zapory aplikacji internetowej dla własnego środowiska.

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

Przykładowy plik Bicep

Poniższy przykładowy plik Bicep pokazuje, jak:

  • Tworzenie zasad zapory aplikacji internetowej usługi Azure Front Door.
  • Włącz zestaw reguł DRS 2.0.
  • Skonfiguruj wykluczenie dla reguły 942230, która istnieje w grupie reguł SQLI. To wykluczenie dotyczy wszystkich nagłówków żądań rozpoczynających się od wyrazu user. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się User od są również objęte wykluczeniem. Jeśli reguła zapory aplikacji internetowej 942230 wykryje ryzyko w tych wartościach nagłówka, ignoruje nagłówek i przechodzi dalej.
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'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Następne kroki

Dowiedz się więcej o usłudze Azure Front Door.