Delen via


Uitsluitingslijsten voor Web Application Firewall configureren

Soms blokkeert Azure Web Application Firewall in Azure Front Door een legitieme aanvraag. Als onderdeel van het afstemmen van uw WAF (Web Application Firewall) kunt u de WAF configureren om de aanvraag voor uw toepassing toe te staan. Met WAF-uitsluitingslijsten kunt u specifieke aanvraagkenmerken weglaten uit een WAF-evaluatie. De rest van de aanvraag wordt als normaal geëvalueerd. Zie Azure Web Application Firewall met Azure Front Door-uitsluitingslijsten voor meer informatie over uitsluitingslijsten.

Een uitsluitingslijst kan worden geconfigureerd met behulp van Azure PowerShell, de Azure CLI, de REST API, Bicep, Azure Resource Manager-sjablonen en de Azure Portal.

Scenario

Stel dat u een API hebt gemaakt. Uw clients verzenden aanvragen naar uw API die headers bevatten met namen zoals userid en user-id.

Tijdens het afstemmen van uw WAF ziet u dat sommige legitieme aanvragen zijn geblokkeerd omdat de gebruikersheaders tekenreeksen bevatten die door WAF zijn gedetecteerd als SQL-injectieaanvallen. Met name regel-id 942230 detecteert de aanvraagheaders en blokkeert de aanvragen. Regel 942230 maakt deel uit van de SQLI-regelgroep.

U besluit een uitsluiting te maken om deze legitieme aanvragen door te geven zonder dat de WAF ze blokkeert.

Een uitsluiting maken

  1. Open uw Azure Front Door WAF-beleid.

  2. Selecteer Beheerde regels>Uitsluitingen beheren.

    Schermopname van de Azure Portal met de pagina Beheerde regels van het WAF-beleid, met de knop Uitsluitingen beheren gemarkeerd.

  3. Selecteer Toevoegen.

    Schermopname van de Azure Portal met de knop Toevoegen van de uitsluitingslijst.

  4. Configureer de sectie Van toepassing op van de uitsluiting:

    Veld Waarde
    Regelset Microsoft_DefaultRuleSet_2.0
    Regelgroep SQLI
    Regel 942230 Detecteert voorwaardelijke SQL-injectiepogingen
  5. Configureer de voorwaarden voor uitsluitingsovereenkomst:

    Veld Waarde
    Overeenkomende variabele Naam van aanvraagheader
    Operator Begint met
    Kiezer Gebruiker
  6. Bekijk de uitsluiting, die eruit moet zien als in de volgende schermopname:

    Schermopname van de Azure Portal met de uitsluitingsconfiguratie.

    Deze uitsluiting geldt voor alle aanvraagheaders die beginnen met het woord user. De overeenkomstvoorwaarde is niet hoofdlettergevoelig, dus headers die beginnen met User worden ook gedekt door de uitsluiting. Als WAF-regel 942230 een risico in deze headerwaarden detecteert, wordt de header genegeerd en wordt verdergegaan.

  7. Selecteer Opslaan.

Een uitsluitingskiezer definiëren

Gebruik de cmdlet New-AzFrontDoorWafManagedRuleExclusionObject om een nieuwe uitsluitingskiezer te definiëren.

In het volgende voorbeeld worden aanvraagheaders geïdentificeerd die beginnen met het woord user. De overeenkomstvoorwaarde is niet hoofdlettergevoelig, dus headers die beginnen met User worden ook gedekt door de uitsluiting.

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

Een uitsluiting per regel definiëren

Gebruik de cmdlet New-AzFrontDoorWafManagedRuleOverrideObject om een nieuwe uitsluiting per regel te definiëren, waaronder de selector die u in de vorige stap hebt gemaakt.

In het volgende voorbeeld wordt een uitsluiting gemaakt voor regel-id 942230.

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

De uitsluiting toepassen op de regelgroep

Gebruik de cmdlet New-AzFrontDoorWafRuleGroupOverrideObject om een regelgroepoverschrijven te maken, waarmee de uitsluiting wordt toegepast op de juiste regelgroep.

In het volgende voorbeeld wordt de SQLI-regelgroep gebruikt, omdat die groep regel-id 942230 bevat.

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

De beheerde regelset configureren

Gebruik de cmdlet New-AzFrontDoorWafManagedRuleObject om de beheerde regelset te configureren, inclusief de regelgroep die u in de vorige stap hebt gemaakt.

In het volgende voorbeeld wordt de DRS 2.0-regelset geconfigureerd met de regelgroepoverschrijving en de uitsluiting ervan.

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

De configuratie van de beheerde regelset toepassen op het WAF-profiel

Gebruik de cmdlet Update-AzFrontDoorWafPolicy om uw WAF-beleid bij te werken met de configuratie die u hebt gemaakt. Zorg ervoor dat u de juiste resourcegroepnaam en WAF-beleidsnaam gebruikt voor uw eigen omgeving.

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

Een uitsluiting maken

Gebruik de az network front-door waf-policy managed-rules exclusion add opdracht om uw WAF-beleid bij te werken om een nieuwe uitsluiting toe te voegen.

De uitsluiting identificeert aanvraagheaders die beginnen met het woord user. De overeenkomstvoorwaarde is niet hoofdlettergevoelig, dus headers die beginnen met User worden ook gedekt door de uitsluiting.

Zorg ervoor dat u de juiste resourcegroepnaam en WAF-beleidsnaam gebruikt voor uw eigen omgeving.

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

Voorbeeld van Bicep-bestand

In het volgende Bicep-voorbeeldbestand ziet u hoe u het volgende kunt doen:

  • Een Azure Front Door WAF-beleid maken.
  • Schakel de regelset DRS 2.0 in.
  • Configureer een uitsluiting voor regel 942230, die bestaat binnen de SQLI-regelgroep. Deze uitsluiting geldt voor alle aanvraagheaders die beginnen met het woord user. De overeenkomstvoorwaarde is niet hoofdlettergevoelig, dus headers die beginnen met User worden ook gedekt door de uitsluiting. Als WAF-regel 942230 een risico in deze headerwaarden detecteert, wordt de header genegeerd en wordt verdergegaan.
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'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Volgende stappen

Meer informatie over Azure Front Door.