Personalización de reglas del Firewall de aplicaciones web v2 en Azure Application Gateway

Se aplica a: ✔️ Application Gateway V2

El Azure Application Gateway Web Application Firewall (WAF) v2 incluye un conjunto de reglas preconfigurado administrado por la plataforma que protege contra muchos tipos diferentes de ataques. Estos ataques incluyen scripting entre sitios, inyección de código SQL y otros. Si es un administrador de WAF, puede escribir reglas propias para aumentar las del conjunto de reglas principal (CRS). Las reglas personalizadas pueden bloquear, permitir o registrar el tráfico solicitado en función de los criterios de coincidencia. Si estableces la política WAF en modo de detección y se activa una regla de bloqueo personalizada, la solicitud se registra y no se realiza ninguna acción de bloqueo.

Use reglas personalizadas para crear sus propias reglas que el WAF evalúa para cada solicitud. Estas reglas tienen una prioridad más alta que el resto de las reglas de los conjuntos de reglas administradas. Las reglas personalizadas contienen un nombre de regla, la prioridad de la regla y una matriz de condiciones de coincidencia. Si se cumplen estas condiciones, la WAF realiza una acción para permitir, bloquear o registrar. Si una regla personalizada se activa y el WAF realiza una acción de permitir o bloquear, el WAF no realiza acciones adicionales de las reglas personalizadas o administradas. En caso de que una regla personalizada desencadene una acción de permitir o bloquear, es posible que todavía vea algunos eventos de registro para las coincidencias de reglas del conjunto de reglas configurado (Core Rule Set/conjunto de reglas predeterminado), pero esas reglas no se aplican. Los eventos de registro se muestran simplemente debido a la optimización aplicada por el motor de WAF para el procesamiento de reglas en paralelo y se pueden omitir de forma segura. Puede habilitar o deshabilitar reglas personalizadas a petición.

Por ejemplo, puede bloquear todas las solicitudes de una dirección IP en el intervalo 192.168.5.0/24. En esta regla, el operador es IPMatch, matchValues es el intervalo de direcciones IP (192.168.5.0/24) y la acción es bloquear el tráfico. También se establece el nombre, la prioridad y el estado habilitado o deshabilitado de la regla.

Las reglas personalizadas admiten el uso de lógica de composición para crear reglas más avanzadas que solucionen los requisitos de seguridad. Por ejemplo, puede utilizar dos reglas personalizadas para crear la siguiente lógica ((rule1:Condition 1 y rule1:Condition 2) o rule2:Condition 3). Esta lógica significa que si se cumplen la Condición 1 y la Condición 2, o si se cumple la Condición 3, el WAF debe tomar la acción especificada en las reglas personalizadas.

En una misma regla, las condiciones de coincidencia diferentes siempre se combinan mediante y. Por ejemplo, bloquear el tráfico desde una dirección IP específica, y solo si se usa un explorador determinado.

Si desea usar o entre dos condiciones diferentes, las dos condiciones deben estar en reglas diferentes. Por ejemplo, bloquear el tráfico desde una dirección IP específica o bloquear el tráfico si se usa un explorador determinado.

Las reglas personalizadas también admiten expresiones regulares, al igual que en los conjuntos de reglas crS. Para obtener ejemplos, consulte los ejemplos 3 y 5 en Creación y uso de reglas personalizadas del firewall de aplicaciones web.

Nota:

Puede crear hasta 100 reglas personalizadas de WAF. Para más información sobre los límites de Application Gateway, vea Suscripción de Azure y límites de servicio, cuotas y restricciones.

Precaución

Las reglas de redirección que aplique en el nivel de puerta de enlace de la aplicación omiten las reglas personalizadas de firewall de aplicaciones web (WAF). Para más información, consulte Introducción a la redirección de Application Gateway.

Diferencias entre permitir y bloquear

Puede permitir o bloquear fácilmente el tráfico mediante reglas personalizadas. Por ejemplo, puede bloquear todo el tráfico desde un intervalo de direcciones IP. Puede crear otra regla para permitir el tráfico si la solicitud procede de un explorador específico.

Para permitir algo, establezca el -Action parámetro en Allow. Para bloquear algo, establezca el -Action parámetro en Bloquear.

$AllowRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example1 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Allow `
   -State Enabled

$BlockRule = New-AzApplicationGatewayFirewallCustomRule `
   -Name example2 `
   -Priority 2 `
   -RuleType MatchRule `
   -MatchCondition $condition `
   -Action Block `
   -State Enabled

La regla $BlockRule anterior se asigna a la siguiente regla personalizada en Azure Resource Manager:

"customRules": [
      {
        "name": "blockEvilBot",
        "priority": 2,
        "ruleType": "MatchRule",
        "action": "Block",
        "state": "Enabled",
        "matchConditions": [
          {
            "matchVariables": [
              {
                "variableName": "RequestHeaders",
                "selector": "User-Agent"
              }
            ],
            "operator": "Contains",
            "negationCondition": false,
            "matchValues": [
              "evilbot"
            ],
            "transforms": [
              "Lowercase"
            ]
          }
        ]
      }
    ], 

Esta regla personalizada contiene un nombre, una prioridad, una acción y la matriz de condiciones de coincidencia que se deben cumplir para que la acción tenga lugar. Para obtener una explicación de estos campos, vea las descripciones siguientes. Para obtener ejemplos de reglas personalizadas, vea Creación y uso de reglas personalizadas del firewall de aplicaciones web.

Nota:

Las reglas personalizadas de WAF no admiten solicitudes de permiso ni bloqueo basadas en nombres de archivo o tipos de archivo.

Campos para reglas personalizadas

Nombre [opcional]

Nombre de la regla. Aparece en los registros.

Habilitar regla [opcional]

Active o desactive esta regla. Las reglas personalizadas están habilitadas de manera predeterminada.

Prioridad [obligatorio]

  • Determina el orden de evaluación de la regla. Cuanto menor sea el valor, antes se evalúa la regla. El intervalo permitido es de 1 a 100.
  • Debe ser única en todas las reglas personalizadas. Una regla con prioridad de 40 es evaluada antes que una regla con prioridad de 80.

Tipo de regla [obligatorio]

En la actualidad, debe ser MatchRule.

Variable de coincidencia [obligatorio]

Debe ser una de estas variables:

  • RemoteAddr: dirección IPv4 o intervalo de la conexión remota del equipo
  • RequestMethod: método de solicitud HTTP
  • QueryString: la variable en el URI
  • PostArgs: argumentos enviados en el cuerpo de POST. Las reglas personalizadas que usan esta variable de coincidencia solo se aplican si el encabezado "Content-Type" está establecido en "application/x-www-form-urlencoded" o "multipart/form-data". CRS versión 3.2 o posterior admite un tipo de contenido adicional de application/json, junto con reglas para la protección contra bots y reglas personalizadas de geo-coincidencia.
  • RequestUri: URI de la solicitud
  • RequestHeaders: encabezados de la solicitud
  • RequestBody: esta variable contiene todo el cuerpo de la solicitud en su conjunto. Las reglas personalizadas que usan esta variable de coincidencia solo se aplican si el encabezado "Content-Type" está establecido en application/x-www-form-urlencoded tipo de medio. La versión 3.2 o superior de CRS admite los tipos de contenido adicionales de application/soap+xml, application/xml, text/xml, junto con el conjunto de reglas de protección de bots y las reglas personalizadas de coincidencia geográfica.
  • RequestCookies: las cookies de la solicitud

Selector [opcional]

Describe el campo de la colección matchVariable. Por ejemplo, si matchVariable es RequestHeaders, el selector podría estar en el encabezado User-Agent.

Operador [obligatorio]

Use uno de los operadores siguientes:

  • IPMatch : solo se usa cuando la variable Match es RemoteAddr y solo admite IPv4.
  • Equal : se usa cuando la entrada es la misma que MatchValue.
  • Any - Use cuando no haya MatchValue. Se recomienda usar una variable de coincidencia con un selector válido.
  • Contains - Se usa cuando MatchValue es solo un valor explícito. No se admiten caracteres comodín y regex.
  • LessThan
  • GreaterThan
  • MenorQueOIgual
  • GreaterThanOrEqual
  • EmpiezaCon
  • EndsWith
  • Regex
  • Geomatch

Negar condición [opcional]

Niega la condición actual.

Transformación [opcional]

Lista de valores de cadena que especifican las transformaciones que se van a aplicar antes de intentar una coincidencia. Las transformaciones disponibles incluyen:

  • Minúsculas
  • Mayúsculo
  • Recortar
  • UrlDecode
  • UrlEncode
  • RemoveNulls
  • HtmlEntityDecode

Valores de coincidencia [obligatorio]

Lista de valores con los que debe coincidir, que se puede considerar como OR'ed. Por ejemplo, la lista podría contener direcciones IP u otras cadenas. El formato del valor depende del operador anterior.

Nota:

Si tu WAF ejecuta Core Rule Set (CRS) 3.1, o cualquier otra versión anterior de CRS, el valor de coincidencia solo acepta letras, números y signos de puntuación. No se admiten las comillas ", 'y los espacios.

Los valores del método de solicitud HTTP admitidos incluyen:

  • GET
  • CABEZA
  • PUBLICAR
  • OPCIONES
  • PON
  • SUPRIMIR
  • PARCHE

Acción [obligatorio]

En el modo de detección de directivas WAF, si se desencadena una regla personalizada, la acción siempre se registra independientemente del valor de acción establecido en la regla personalizada.

  • Permitir: autoriza la transacción y se omiten todas las otras reglas. La solicitud especificada se agrega a la lista de permitidos y, una vez que se encuentra una coincidencia, la solicitud detiene la evaluación adicional y se envía al grupo de servidores backend. Las reglas que están en la lista de permitidos no se evalúan para más reglas personalizadas o administradas.
  • Bloquear: bloquea o registra la transacción en función de SecDefaultAction (modo de detección o prevención). - Modo de prevención: bloquea la transacción basada en SecDefaultAction. Al igual que la Allow acción, una vez que la solicitud se evalúa y se agrega a la lista de bloqueos, la evaluación se detiene y la solicitud está bloqueada. Las solicitudes posteriores que cumplan las mismas condiciones no se evaluarán y simplemente se bloquearán.
    • Modo de detección: registra la transacción basada en SecDefaultAction después de la cual se detiene la evaluación. Cualquier solicitud que se realice después de cumplir las mismas condiciones no se evalúa y queda registrada.
  • Log: permite que la regla escriba en el registro, pero deja que el resto de las reglas se ejecute para la evaluación. Las otras reglas personalizadas se evalúan por orden de prioridad, seguidas por las reglas administradas.

Copiar y duplicar reglas personalizadas

Puede duplicar reglas personalizadas dentro de una directiva determinada. Al duplicar una regla, debe especificar un nombre único para la regla y un valor de prioridad único. Además, puede copiar reglas personalizadas de una directiva waf de Application Gateway a otra siempre que las directivas estén en la misma suscripción. Al copiar una regla de una directiva a otra, debe seleccionar la directiva waf de Application Gateway en la que desea copiar la regla. Una vez que seleccione la directiva WAF, debe asignar un nombre único a la regla y determinar una clasificación de prioridad.

Reglas personalizadas de geomatch

Las reglas personalizadas permiten la creación de reglas adaptadas para satisfacer las necesidades precisas de las aplicaciones y las directivas de seguridad. Puede restringir el acceso a las aplicaciones web por país o región. Para obtener más información, consulte Reglas personalizadas de Geomatch.

Paso siguiente