Trabajar con condiciones de coincidencia de regex - AWS WAF, AWS Firewall Manager, AWS Shield Advanced y director de seguridad de red AWS Shield

Presentamos una nueva experiencia de consola para AWS WAF

Ahora puede usar la experiencia actualizada para acceder a las funciones de AWS WAF desde cualquier parte de la consola. Para obtener más información, consulta Trabajo con la experiencia de consola actualizada.

Trabajar con condiciones de coincidencia de regex

aviso

AWS WAF Classic está pasando por un proceso planificado de final de vida útil. Consulte el panel de control de AWS Health para ver los hitos y las fechas específicos de su región.

nota

Esta es la documentación de AWS WAF Classic. Solo debe usar esta versión si creó recursos de AWS WAF, como reglas y ACL web, en AWS WAF antes de noviembre de 2019, y aún no los ha migrado a la versión más reciente. Para migrar las ACL web, consulte Migración de los recursos de AWS WAF a AWS WAF.

Para obtener la última versión de AWS WAF, consulte AWS WAF.

Si desea permitir o bloquear las solicitudes web en función de las cadenas que coinciden con un patrón de expresión regular (regex) que aparece en las solicitudes, cree una o más condiciones de coincidencia de regex. Una condición de coincidencia de regex es un tipo de condición de coincidencia de cadena que identifica el patrón que desea buscar y la parte de las solicitudes web que desea que AWS WAF Classic inspeccione en búsqueda del patrón, como un encabezado específico o la cadena de consulta. Más adelante, cuando cree una ACL web, puede especificar si desea permitir o bloquear las solicitudes que contienen el patrón.

Crear una condición de coincidencia de regex

Al crear condiciones de coincidencia de regex, debe especificar conjuntos de patrones que identifican la cadena (con una expresión regular) que desea buscar. A continuación, debe agregar esos conjuntos de patrones a filtros que especifiquen la parte de las solicitudes web que desea que AWS WAF Classic inspeccione para buscar dicho conjunto de patrones, como el URI o la cadena de consulta.

Puede añadir varias expresiones regulares a un único conjunto de patrones. Si lo hace, esas expresiones se combinan con un OR. Es decir, una solicitud web coincidirá con el conjunto de patrones si la parte correspondiente de la solicitud coincide con cualquiera de las expresiones que se enumeran.

Al agregar una condición de coincidencia de regex a una regla, también puede configurar AWS WAF Classic para que permita o bloquee solicitudes web que no coinciden con los valores de la condición.

AWS WAF Classic admite la mayoría de las expresiones regulares compatibles con Perl (PCRE) estándar. Sin embargo, no se admiten las siguientes:

  • Referencias a elementos anteriores y subexpresiones de captura

  • Aserciones arbitrarias de ancho cero

  • Referencias de subrutinas y patrones recursivos

  • Patrones condicionales

  • Verbos de control de búsqueda de datos anteriores

  • La directiva \C de byte único

  • La directiva \R de coincidencia de nueva línea

  • El inicio \K de la directiva de restablecimiento de coincidencia

  • Llamadas y código incrustado

  • Cuantificadores atómicos de agrupamiento y posesivos

Para crear una condición de coincidencia de regex
  1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS WAF en https://console.aws.amazon.com/wafv2/.

    Si ve Cambiar a AWS WAF Classic en el panel de navegación, selecciónelo.

  2. En el panel de navegación, elija String and regex matching (Coincidencia de cadenas y regex).

  3. Elija Create condition.

  4. Especifique la configuración de filtro aplicable. Para obtener más información, consulte Valores que se pueden especificar al crear o editar condiciones de coincidencia de RegEx.

  5. Elija Create pattern set and add filter (Crear conjunto de patrones y agregar filtro) (si ha creado un nuevo conjunto de patrones) o Add filter (Add filter) si ha utilizado un conjunto de patrones existente.

  6. Seleccione Crear.

Valores que se pueden especificar al crear o editar condiciones de coincidencia de RegEx

Al crear o actualizar una condición de coincidencia de regex, debe especificar los siguientes valores:

Nombre

Escriba un nombre para la condición de coincidencia de regex. El nombre solo puede contener caracteres alfanuméricos (A-Z, a-z, 0-9) o los siguientes caracteres especiales: _-!"#`+*},./. No se puede cambiar el nombre de una condición después de crearla.

Tipo

Elija Regex match.

Parte de la solicitud para filtrar en

Elija la parte de cada solicitud web que desea que AWS WAF Classic inspeccione para buscar el patrón que ha especificado en Valor que debe coincidir:

Encabezado

Un encabezado de solicitud específico, por ejemplo, el encabezado User-Agent o Referer. Si elige Header, indique el nombre del encabezado en el campo Header.

Método HTTP

El método HTTP indica el tipo de operación que la solicitud pide al origen que lleve a cabo. CloudFront admite los siguientes métodos: DELETE, GET, HEAD, OPTIONS, PATCH, POST y PUT.

Cadena de consulta

Es la parte de una URL que aparece después de un carácter ?, si hay alguno.

URI

La ruta del URI de la solicitud, que identifica el recurso, por ejemplo, /images/daily-ad.jpg. Esto no incluye la cadena de consulta ni los componentes del fragmento del URI. Para obtener información, consulte Identificador uniforme de recursos (URI): sintaxis genérica.

A menos que se especifique un valor en Transformation (Transformación), una URI no se normaliza y se inspecciona cuando AWS lo recibe del cliente como parte de la solicitud. Una transformación reformateará el URI según se especifique.

Cuerpo

Es la parte de una solicitud que contiene los datos adicionales que desea enviar a su servidor web como cuerpo de la solicitud HTTP, por ejemplo, los datos de un formulario.

nota

Si, por el contrario, elige Cuerpo para el valor de Parte de la consulta que se va a filtrar, AWS WAF Classic solo inspeccionará los primeros 8192 bytes (8 KB). Para permitir o bloquear solicitudes cuyo cuerpo tenga más de 8192 bytes, puede crear una condición de restricción de tamaño. (AWS WAF Classic obtiene la longitud del cuerpo de los encabezados de la solicitud). Para obtener más información, consulte Trabajar con condiciones de restricción de tamaño.

Parámetro de consulta único (solo valor)

Cualquier parámetro que haya definido como parte de la cadena de consulta. Por ejemplo, si la URL es "www.xyz.com?UserName=abc&SalesRegion=seattle", puede añadir un filtro o bien en el parámetro UserName o en el parámetro SalesRegion.

Si hay parámetros duplicados en la cadena de consulta, los valores se evalúan como "OR". Es decir, ambos valores activarán una coincidencia. Por ejemplo, en la URL "www.xyz.com?SalesRegion=boston&SalesRegion=seattle", un patrón que coincida con "boston" o "seattle" en Value to match (Valor que debe coincidir) activará una coincidencia.

Si elige Single query parameter (value only) (Parámetro de consulta único [solo valor]), también debe especificar un Query parameter name (Nombre de parámetro de consulta). Este es el parámetro de la cadena de consulta que inspeccionará, como UserName o SalesRegion. La longitud máxima del Query parameter name (Nombre de parámetro de consulta) es de 30 caracteres. Query parameter name (Nombre de parámetro de consulta) no distingue entre mayúsculas y minúsculas. Por ejemplo, si especifica UserName como Query parameter name (Nombre de parámetro de consulta), este valor coincidirá con todas las variaciones de UserName como, por ejemplo, username o UsERName.

Todos los parámetros de consulta (solo valores)

Es igual que Parámetro de consulta único (solo valor), pero en lugar de inspeccionar el valor de un único parámetro, AWS WAF Classic inspecciona el valor de todos los parámetros de la cadena de consulta del patrón especificado en Valor que debe coincidir. Por ejemplo, en la URL "www.xyz.com?UserName=abc&SalesRegion=seattle", un patrón de Value to match (Valor que debe coincidir) que coincida con el valor de UserName o SalesRegion activará una coincidencia.

Encabezado (solo cuando "Parte de la solicitud para filtrar en" es "Encabezado")

Si elige Encabezado en la lista Parte de la consulta que se va a filtrar, seleccione un encabezado de la lista de encabezados comunes o escriba el nombre de un encabezado que desea que inspeccione AWS WAF Classic.

Transformación

Una transformación reformatea una solicitud web antes de que AWS WAF Classic inspeccione la solicitud. De este modo, se elimina parte del formato inusual que los atacantes utilizan en las solicitudes web con el objetivo de eludir AWS WAF Classic.

Solo puede especificar un único tipo de transformación de texto.

Las transformaciones pueden realizar las siguientes operaciones:

Ninguno

AWS WAF Classic no realiza ninguna transformación de texto en la solicitud web antes de inspeccionarla para la cadena en Valor que debe coincidir.

Cambiar a minúsculas

AWS WAF Classic convierte las mayúsculas (A-Z) en minúsculas (a-z).

Descodificar en HTML

AWS WAF Classic sustituye los caracteres codificados en HTML por caracteres sin codificar:

  • Sustituye " por &

  • Sustituye   por un espacio de no separación

  • Sustituye &lt; por <

  • Sustituye &gt; por >

  • Sustituye los caracteres representados con formato hexadecimal, &#xhhhh;, por los caracteres correspondientes

  • Sustituye los caracteres representados con formato decimal, &#nnnn;, por los caracteres correspondientes

Normalizar espacios en blanco

AWS WAF Classic sustituye los siguientes caracteres por un carácter de espacio (32 decimales):

  • \f, salto de página, 12 decimales

  • \t, pestaña, 9 decimales

  • \n, línea nueva, 10 decimales

  • \r, salto de línea, 13 decimales

  • \v, pestaña vertical, 11 decimales

  • espacio de no separación, 160 decimales

Además, esta opción sustituye varios espacios por un espacio.

Simplificar la línea de comandos

Si le preocupa que un atacante inyecte un comando de la línea de comandos del sistema operativo y utilice un formato inusual para ocultar parte o todo el comando, utilice esta opción para realizar las siguientes transformaciones:

  • Eliminar los siguientes caracteres: \ " ' ^

  • Eliminar los espacios delante de los siguientes caracteres: / (

  • Sustituir los siguientes caracteres por un espacio: , ;

  • Sustituir varios espacios por un espacio

  • Convertir las mayúsculas (A-Z) en minúsculas (a-z)

Descodificar la URL

Descodifique una solicitud de URL codificada.

Patrón de expresión regular que coincide con la solicitud

Puede elegir un conjunto de patrones existente o crear uno nuevo. Si crea uno nuevo, especifique lo siguiente:

Nombre del nuevo patrón

Escriba un nombre y, a continuación, especifique el patrón de expresiones regulares que desea que AWS WAF Classic busque.

Si añade varias expresiones regulares a un conjunto de patrones, esas expresiones se combinan con un OR. Es decir, una solicitud web coincidirá con el conjunto de patrones si la parte correspondiente de la solicitud coincide con cualquiera de las expresiones que se enumeran.

La longitud máxima de Value to match (Valor que debe coincidir) es 70 caracteres.

Editar una condición de coincidencia de regex

Puede realizar los siguientes cambios en una condición de coincidencia de regex existente:

  • Eliminar un patrón de un conjunto de patrones existentes

  • Añadir un patrón a un conjunto de patrones existentes

  • Eliminar un filtro para una condición de coincidencia de regex existente

  • Agregue un filtro a una condición de coincidencia de regex existente (solo puede tener un filtro en una condición de coincidencia de expresiones regulares; por tanto, para agregar un filtro, debe eliminar primero el filtro existente).

  • Eliminar una condición de coincidencia de regex existente

nota

No puede añadir ni eliminar un conjunto de patrones de un filtro existente. Debe editar el conjunto de patrones, o eliminar el filtro y crear un nuevo filtro con un nuevo conjunto de patrones.

Para eliminar un patrón de un conjunto de patrones existentes
  1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS WAF en https://console.aws.amazon.com/wafv2/.

    Si ve Cambiar a AWS WAF Classic en el panel de navegación, selecciónelo.

  2. En el panel de navegación, elija String and regex matching (Coincidencia de cadenas y regex).

  3. Elija View regex pattern sets.

  4. Elija el nombre del conjunto de patrones que desea editar.

  5. Seleccione Editar.

  6. Elija la X situada al lado del patrón que desea eliminar.

  7. Seleccione Save (Guardar).

Para añadir un patrón a un conjunto de patrones existentes
  1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS WAF en https://console.aws.amazon.com/wafv2/.

    Si ve Cambiar a AWS WAF Classic en el panel de navegación, selecciónelo.

  2. En el panel de navegación, elija String and regex matching (Coincidencia de cadenas y regex).

  3. Elija View regex pattern sets.

  4. Elija el nombre del conjunto de patrones que desea editar.

  5. Elija Edit (Editar).

  6. Escriba un nuevo patrón regex.

  7. Elija el signo + situado junto al nuevo patrón.

  8. Seleccione Save.

Para eliminar un filtro de una condición de coincidencia de regex existente
  1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS WAF en https://console.aws.amazon.com/wafv2/.

    Si ve Cambiar a AWS WAF Classic en el panel de navegación, selecciónelo.

  2. En el panel de navegación, elija String and regex matching (Coincidencia de cadenas y regex).

  3. Elija el nombre de la condición que tiene el filtro que desea eliminar.

  4. Elija la casilla situada junto al filtro que desea eliminar.

  5. Elija Delete filter (Eliminar filtro).

Para eliminar una condición de coincidencia de regex
  1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS WAF en https://console.aws.amazon.com/wafv2/.

    Si ve Cambiar a AWS WAF Classic en el panel de navegación, selecciónelo.

  2. Elimine el filtro de la condición regex. Consulte Para eliminar un filtro de una condición de coincidencia de regex existente para obtener instrucciones al respecto).

  3. Quite la condición de coincidencia de regex de las reglas que la utilizan:

    1. En el panel de navegación, seleccione Reglas.

    2. Elija el nombre de una regla que utilice la condición de coincidencia de regex que desea eliminar.

    3. En el panel de la derecha, elija Edit rule (Editar regla).

    4. Elija la X situada al lado de la condición que desea eliminar.

    5. Elija Actualizar.

    6. Repita estos pasos para todas las demás reglas que utilizan la condición de coincidencia de regex que desea eliminar.

  4. En el panel de navegación, elija String and regex matching (Coincidencia de cadenas y regex).

  5. Seleccione el botón situado al lado de la condición que desea eliminar.

  6. Elija Eliminar.

Para añadir o cambiar un filtro para una condición de coincidencia de regex existente

Solo puede haber un filtro en una condición de coincidencia de regex. Si desea añadir o cambiar el filtro, debe eliminar primero el filtro existente.

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de AWS WAF en https://console.aws.amazon.com/wafv2/.

    Si ve Cambiar a AWS WAF Classic en el panel de navegación, selecciónelo.

  2. Elimine el filtro de la condición regex que desea cambiar. Consulte Para eliminar un filtro de una condición de coincidencia de regex existente para obtener instrucciones al respecto).

  3. En el panel de navegación, elija String and regex matching (Coincidencia de cadenas y regex).

  4. Elija el nombre de la condición que desea cambiar.

  5. Elija Add filter (Agregar filtro).

  6. Introduzca los valores adecuados para el nuevo filtro y elija Add (Agregar).