Compartir a través de


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

  1. Abra la directiva del firewall de aplicaciones web de Azure Front Door.

  2. Seleccione Reglas administradas>Administrar exclusiones.

    Captura de pantalla que muestra el Azure Portal mostrando la página de reglas administradas de la directiva del firewall de aplicaciones web con el botón Administrar exclusiones resaltado.

  3. Seleccione Agregar.

    Captura de pantalla que muestra el Azure Portal con el botón Añadir lista de exclusión.

  4. 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
  5. Configure las condiciones de coincidencia de exclusión:

    Campo Valor
    Variable de coincidencia Nombre del encabezado de la solicitud
    Operador Empieza por
    Selector Usuario
  6. Revise la exclusión, que debería ser similar a la captura de pantalla siguiente:

    Captura de pantalla que muestra el Azure Portal mostrando la configuración de exclusión.

    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 por User 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.

  7. 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 por User 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.