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
Abra sua política WAF do Azure Front Door.
Selecione Regras>gerenciadas Gerenciar exclusões.
Selecione Adicionar.
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 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 Revise a exclusão, que deve se parecer com a seguinte captura de tela:
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 comUser
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.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 comUser
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.