Configuración de listas de exclusión del firewall de aplicaciones web
A veces, Azure Web Application Firewall en Azure Front Door podría bloquear una solicitud legítima. Como parte del proceso de ajuste del Firewall de aplicaciones web (WAF), puede configurarlo para que permita la solicitud de la aplicación. Las listas de exclusión del WAF le permiten omitir atributos de solicitud concretos de una evaluación del WAF. El resto de la solicitud se evaluará normalmente. Para más información sobre las listas de exclusión, consulte Listas de exclusión de Azure Web Application Firewall con Azure Front Door.
Se puede configurar una lista de exclusión mediante Azure PowerShell, la CLI de Azure, la API de REST, Bicep, las plantillas de ARM y Azure Portal.
Escenario
Supongamos que ha creado una API. Los clientes envían solicitudes a la API que incluyen encabezados con nombres como userid
y user-id
.
Al ajustar el firewall de aplicaciones web, observa que se bloquearon algunas solicitudes legítimas porque los encabezados de usuario incluían secuencias de caracteres que dicho firewall ha detectado como ataques por inyección de código SQL. En concreto, el identificador de regla 942230 detecta los encabezados de solicitud y bloquea las solicitudes. La regla 942230 forma parte del grupo de reglas SQLI.
Ha decidido crear una exclusión para permitir el paso de estas solicitudes legítimas sin que el firewall de aplicaciones web las bloquee.
Creación de una exclusión
Abra la directiva del firewall de aplicaciones web de Azure Front Door.
Seleccione Reglas administradas>Administrar exclusiones.
Seleccione Agregar.
Configure la sección Se aplica a de la exclusión:
Campo Valor Conjunto de reglas Microsoft_DefaultRuleSet_2.0 Grupo de reglas SQLI Regla 942230 Detección de intentos de inyección de código SQL condicional Configure las condiciones de coincidencia de exclusión:
Campo Valor Variable de coincidencia Nombre del encabezado de la solicitud Operador Empieza por Selector Usuario Revise la exclusión, que debería ser similar a la captura de pantalla siguiente:
Esta exclusión se aplica a los encabezados de solicitud que comienzan por la palabra
user
. La condición de coincidencia no distingue mayúsculas de minúsculas, por lo que los encabezados que comienzan porUser
también están cubiertos por la exclusión. Si la regla 942230 del firewall de aplicaciones web detecta un riesgo en estos valores de encabezado, omite el encabezado y continúa.Seleccione Guardar.
Definición de un selector de exclusión
Use el cmdlet New-AzFrontDoorWafManagedRuleExclusionObject para definir un nuevo selector de exclusión.
En el ejemplo siguiente se identifican los encabezados de solicitud que comienzan por la palabra user
. La condición de coincidencia no distingue mayúsculas de minúsculas, por lo que los encabezados que comienzan por User
también están cubiertos por la exclusión.
$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
-Variable RequestHeaderNames `
-Operator StartsWith `
-Selector 'user'
Definición de una exclusión por regla
Use el cmdlet New-AzFrontDoorWafManagedRuleOverrideObject para definir una nueva exclusión por regla, que incluye el selector que creó en el paso anterior.
En el ejemplo siguiente se crea una exclusión para el identificador de regla 942230.
$exclusion = New-AzFrontDoorWafManagedRuleOverrideObject `
-RuleId '942230' `
-Exclusion $exclusionSelector
Aplicación de la exclusión al grupo de reglas
Use el cmdlet New-AzFrontDoorWafRuleGroupOverrideObject para crear una invalidación de grupo de reglas, que aplica la exclusión al grupo de reglas adecuado.
En el ejemplo siguiente se usa el grupo de reglas SQLI, porque ese grupo contiene el identificador de regla 942230.
$ruleGroupOverride = New-AzFrontDoorWafRuleGroupOverrideObject `
-RuleGroupName 'SQLI' `
-ManagedRuleOverride $exclusion
Configuración del conjunto de reglas administradas
Use el cmdlet New-AzFrontDoorWafManagedRuleObject para configurar el conjunto de reglas administradas, incluida la invalidación del grupo de reglas que creó en el paso anterior.
En el ejemplo siguiente se configura el conjunto de reglas DRS 2.0 con la invalidación del grupo de reglas y su exclusión.
$managedRuleSet = New-AzFrontDoorWafManagedRuleObject `
-Type 'Microsoft_DefaultRuleSet' `
-Version '2.0' `
-Action Block `
-RuleGroupOverride $ruleGroupOverride
Aplicación de la configuración del conjunto de reglas administradas al perfil del firewall de aplicaciones web
Use el cmdlet Update-AzFrontDoorWafPolicy para actualizar la directiva WAF con el fin de incluir la configuración que creó. Asegúrese de usar el nombre correcto del grupo de recursos y el nombre de la directiva WAF para su propio entorno.
Update-AzFrontDoorWafPolicy `
-ResourceGroupName 'FrontDoorWafPolicy' `
-Name 'WafPolicy'
-ManagedRule $managedRuleSet
Creación de una exclusión
Use el comando az network front-door waf-policy managed-rules exclusion add
para actualizar la directiva del firewall de aplicaciones web y agregar una nueva exclusión.
La exclusión identifica los encabezados de solicitud que comienzan por la palabra user
. La condición de coincidencia no distingue mayúsculas de minúsculas, por lo que los encabezados que comienzan por User
también están cubiertos por la exclusión.
Asegúrese de usar el nombre correcto del grupo de recursos y el nombre de la directiva WAF para su propio entorno.
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
Archivo Bicep de ejemplo
En el siguiente ejemplo de archivo Bicep se muestra cómo hacerlo:
- Crear una directiva del firewall de aplicaciones web de Azure Front Door.
- Habilite el conjunto de reglas DRS 2.0.
- Configure una exclusión para la regla 942230, que existe en el grupo de reglas SQLI. Esta exclusión se aplica a los encabezados de solicitud que comienzan por la palabra
user
. La condición de coincidencia no distingue mayúsculas de minúsculas, por lo que los encabezados que comienzan porUser
también están cubiertos por la exclusión. Si la regla 942230 del firewall de aplicaciones web detecta un riesgo en estos valores de encabezado, omite el encabezado y continú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'
}
]
}
]
}
]
}
]
}
}
}
Pasos siguientes
Obtenga más información acerca de Azure Front Door.