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
Abra a política WAF do Azure Front Door.
Selecione Regras>geridas Gerir exclusões.
Selecione Adicionar.
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 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 Reveja a exclusão, que deverá ser semelhante à seguinte captura de ecrã:
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 comUser
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.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 comUser
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.