Partilhar via


Configurar listas de exclusão da firewall de aplicações Web

Por vezes, o Azure Firewall de Aplicações Web no Azure Front Door pode bloquear um pedido legítimo. Como parte da otimização da firewall de aplicações Web (WAF), pode configurar a WAF para permitir o pedido para a sua aplicação. As listas de exclusão da WAF permitem-lhe omitir atributos de pedido específicos de uma avaliação da WAF. O resto do pedido é avaliado normalmente. Para obter mais informações sobre listas de exclusão, veja Azure Firewall de Aplicações Web com listas de exclusão do Azure Front Door.

Uma lista de exclusão pode ser configurada com Azure PowerShell, a CLI do Azure, a API REST, o Bicep, os modelos de Resource Manager do Azure e a portal do Azure.

Scenario

Suponha que criou uma API. Os clientes enviam pedidos para a sua API que incluem cabeçalhos com nomes como userid e user-id.

Ao ajustar a WAF, repara que alguns pedidos legítimos foram bloqueados porque os cabeçalhos de utilizador incluíam sequências de carateres que a WAF detetou como ataques de injeção de SQL. Especificamente, o ID da regra 942230 deteta os cabeçalhos do pedido e bloqueia os pedidos. A regra 942230 faz parte do grupo de regras SQLI.

Decide criar uma exclusão para permitir que estes pedidos legítimos passem sem que a WAF os bloqueie.

Criar uma exclusão

  1. Abra a política WAF do Azure Front Door.

  2. Selecione Regras>geridas Gerir exclusões.

    Captura de ecrã a mostrar o portal do Azure a mostrar a página Regras geridas da política WAF, com o botão Gerir exclusões realçado.

  3. Selecione Adicionar.

    Captura de ecrã que mostra o portal do Azure com o botão Adicionar da lista de exclusão.

  4. Configurar a secção Aplica-se à exclusão:

    Campo Valor
    Conjunto de regras Microsoft_DefaultRuleSet_2.0
    Grupo de regras SQLI
    Regra 942230 Deteta tentativas de injeção de SQL condicional
  5. Configurar as condições de correspondência de exclusão:

    Campo Valor
    Corresponder variável Nome do cabeçalho do pedido
    Operador Starts with
    Seletor Utilizador
  6. Reveja a exclusão, que deverá ser semelhante à seguinte captura de ecrã:

    Captura de ecrã a mostrar o portal do Azure a mostrar a configuração de exclusão.

    Esta exclusão aplica-se a todos os cabeçalhos de pedido que comecem com a palavra user. A condição de correspondência não é sensível a maiúsculas e minúsculas, pelo que os cabeçalhos que começam com User também são abrangidos pela exclusão. Se a regra 942230 da WAF detetar um risco nestes valores de cabeçalho, ignora o cabeçalho e avança.

  7. Selecione Guardar.

Definir um seletor de exclusão

Utilize o cmdlet New-AzFrontDoorWafManagedRuleExclusionObject para definir um novo seletor de exclusão.

O exemplo seguinte identifica os cabeçalhos de pedido que começam com a palavra user. A condição de correspondência não é sensível a maiúsculas e minúsculas, pelo que os cabeçalhos que começam com User também são abrangidos pela exclusão.

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

Definir uma exclusão por regra

Utilize o cmdlet New-AzFrontDoorWafManagedRuleOverrideObject para definir uma nova exclusão por regra, que inclui o seletor que criou no passo anterior.

O exemplo seguinte cria uma exclusão para o ID da regra 942230.

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

Aplicar a exclusão ao grupo de regras

Utilize o cmdlet New-AzFrontDoorWafRuleGroupOverrideObject para criar uma substituição de grupo de regras, que aplica a exclusão ao grupo de regras adequado.

O exemplo seguinte utiliza o grupo de regras SQLI porque esse grupo contém o ID da regra 942230.

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

Configurar o conjunto de regras geridas

Utilize o cmdlet New-AzFrontDoorWafManagedRuleObject para configurar o conjunto de regras geridas, incluindo a substituição do grupo de regras que criou no passo anterior.

O exemplo seguinte configura o conjunto de regras DRS 2.0 com a substituição do grupo de regras e a respetiva exclusão.

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

Aplicar a configuração do conjunto de regras geridas ao perfil WAF

Utilize o cmdlet Update-AzFrontDoorWafPolicy para atualizar a política waf para incluir a configuração que criou. Certifique-se de que utiliza o nome correto do grupo de recursos e o nome da política WAF para o seu próprio ambiente.

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

Criar uma exclusão

Utilize o az network front-door waf-policy managed-rules exclusion add comando para atualizar a política waf para adicionar uma nova exclusão.

A exclusão identifica os cabeçalhos de pedido que começam com a palavra user. A condição de correspondência não é sensível a maiúsculas e minúsculas, pelo que os cabeçalhos que começam com User também são abrangidos pela exclusão.

Certifique-se de que utiliza o nome correto do grupo de recursos e o nome da política WAF para o seu próprio ambiente.

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

Ficheiro Bicep de exemplo

O seguinte ficheiro Bicep de exemplo mostra como:

  • Crie uma política WAF do Azure Front Door.
  • Ative o conjunto de regras DRS 2.0.
  • Configure uma exclusão para a regra 942230, que existe no grupo de regras SQLI. Esta exclusão aplica-se a todos os cabeçalhos de pedido que comecem com a palavra user. A condição de correspondência não é sensível a maiúsculas e minúsculas, pelo que os cabeçalhos que começam com User também são abrangidos pela exclusão. Se a regra 942230 da WAF detetar um risco nestes valores de cabeçalho, ignora o cabeçalho e avança.
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'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Passos seguintes

Saiba mais sobre o Azure Front Door.