Partilhar via


Configurar listas de exclusão de firewall de aplicativos Web

Às vezes, o Firewall de Aplicativo Web do Azure no Azure Front Door pode bloquear uma solicitação legítima. Como parte do ajuste do firewall do aplicativo Web (WAF), você pode configurar o WAF para permitir a solicitação do seu aplicativo. As listas de exclusão do WAF permitem omitir atributos de solicitação específicos de uma avaliação do WAF. O restante do pedido é avaliado normalmente. Para obter mais informações sobre listas de exclusão, consulte Firewall de Aplicações Web do Azure com listas de exclusão do Azure Front Door.

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

Cenário

Suponha que você tenha criado uma API. Seus clientes enviam solicitações para sua API que incluem cabeçalhos com nomes como userid e user-id.

Ao ajustar o WAF, você percebe que algumas solicitações legítimas foram bloqueadas porque os cabeçalhos do usuário incluíam sequências de caracteres que o WAF detetou como ataques de injeção de SQL. Especificamente, a regra ID 942230 deteta os cabeçalhos de solicitação e bloqueia as solicitações. A regra 942230 faz parte do grupo de regras SQLI.

Você decide criar uma exclusão para permitir que essas solicitações legítimas passem sem que o WAF as bloqueie.

Criar uma exclusão

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

  2. Selecione Regras>gerenciadas Gerenciar exclusões.

    Captura de tela que mostra o portal do Azure mostrando a página Regras gerenciadas da política do WAF, com o botão Gerenciar 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. Configure a seção Aplica-se à exclusão:

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

    Campo Value
    Variável de correspondência Nome do cabeçalho da solicitação
    Operador Começa com
    Seletor User
  6. Revise a exclusão, que deve se parecer com a seguinte captura de tela:

    Captura de tela que mostra o portal do Azure mostrando a configuração de exclusão.

    Esta exclusão aplica-se a quaisquer cabeçalhos de pedido que comecem com a palavra user. A condição de correspondência não diferencia maiúsculas de minúsculas, portanto, os cabeçalhos que começam com User também são cobertos pela exclusão. Se a regra WAF 942230 detetar um risco nesses valores de cabeçalho, ela ignorará o cabeçalho e seguirá em frente.

  7. Selecione Guardar.

Definir um seletor de exclusão

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

O exemplo a seguir identifica cabeçalhos de solicitação que começam com a palavra user. A condição de correspondência não diferencia maiúsculas de minúsculas, portanto, os cabeçalhos que começam com User também são cobertos pela exclusão.

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

Definir uma exclusão por regra

Use o cmdlet New-AzFrontDoorWafManagedRuleOverrideObject para definir uma nova exclusão por regra, que inclui o seletor criado na etapa anterior.

O exemplo a seguir cria uma exclusão para a ID de regra 942230.

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

Aplicar a exclusão ao grupo de regras

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

O exemplo a seguir usa o grupo de regras SQLI porque esse grupo contém a ID de regra 942230.

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

Configurar o conjunto de regras gerenciadas

Use o cmdlet New-AzFrontDoorWafManagedRuleObject para configurar o conjunto de regras gerenciadas, incluindo a substituição do grupo de regras que você criou na etapa anterior.

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

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

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

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

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

Criar uma exclusão

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

A exclusão identifica cabeçalhos de solicitação que começam com a palavra user. A condição de correspondência não diferencia maiúsculas de minúsculas, portanto, os cabeçalhos que começam com User também são cobertos pela exclusão.

Certifique-se de usar o nome correto do grupo de recursos e o nome da política WAF para 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

Exemplo de arquivo Bicep

O seguinte exemplo de arquivo Bicep mostra como:

  • Crie uma política WAF do Azure Front Door.
  • Habilite o conjunto de regras do DRS 2.0.
  • Configure uma exclusão para a regra 942230, que existe dentro do grupo de regras SQLI. Esta exclusão aplica-se a quaisquer cabeçalhos de pedido que comecem com a palavra user. A condição de correspondência não diferencia maiúsculas de minúsculas, portanto, os cabeçalhos que começam com User também são cobertos pela exclusão. Se a regra WAF 942230 detetar um risco nesses valores de cabeçalho, ela ignorará o cabeçalho e seguirá em frente.
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'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Próximos passos

Saiba mais sobre o Azure Front Door.