Esta sección muestra todas las configuraciones disponibles para el conjunto de reglas WAF actual, organizadas en tres pestañas: Global , Reglas y Granjas . Recuerde hacer clic en el botón Aplicar para guardar los cambios.
Conjunto de reglas WAF de configuración global #
Esta configuración gestiona el comportamiento de todas las reglas contenidas en el conjunto.
Nombre. Una etiqueta que identifica fácilmente una regla. El nombre que elija para su conjunto de reglas no será modificable.
Verifique el cuerpo de la solicitud. Un indicador que determina si se analiza el cuerpo de las solicitudes HTTP. Si está deshabilitado, se omitirá el cuerpo y no se procesarán las coincidencias de reglas con los parámetros del cuerpo de la solicitud.
Solicitar límite de cuerpo. El número máximo de bytes del cuerpo de la solicitud guardados para inspección. Si se establece en 0, el WAF guardará completamente el tamaño de la longitud del contenido. Se recomienda establecer un límite.
Verificar cuerpo de respuesta. Un indicador que determina si se analiza el cuerpo de las respuestas HTTP. Si está deshabilitado, se omitirá el cuerpo y no se procesarán las coincidencias de reglas con los parámetros del cuerpo de la respuesta. Respuestas mayores que 524288 bytes512KB) será ignorado.
Acción por defecto. La resolución predeterminada cuando no se especifica ninguna resolución en una regla. Aquí están las posibles acciones.
- Permitir. El WAF continuará procesándose hasta que se complete la transacción HTTP.
- Pasó. El WAF evaluará la siguiente regla sin interrumpir la transacción HTTP.
- Denegar. La transacción HTTP actual finalizará. No se evaluarán más reglas. Si la regla coincide en la fase 1 o 2 (análisis de la solicitud), la solicitud no llegará al backend. Si coincide en la fase 3 o 4 (análisis de respuesta), la respuesta no llegará al cliente.
- Redireccionar. La transacción HTTP se detendrá y se enviará una redirección HTTP al cliente.
Redireccionar URL. La URL enviada al cliente cuando una regla coincide y se configura una resolución de redireccionamiento.
Fase por defecto. La fase predeterminada cuando no se especifica ninguna fase en una regla. Las fases son pasos HTTP en los que se puede conectar una regla WAF. Las fases definidas son:
- Se reciben los encabezados de la solicitud. Se ejecuta una vez que el equilibrador de carga lee todos los encabezados de solicitud del cliente.
- Se recibe el cuerpo de la solicitud. Se ejecuta cuando el cuerpo completo de la solicitud del cliente se almacena en el balanceador de carga.
- Se reciben lectores de respuesta.. Se ejecuta una vez que el equilibrador de carga lee todos los encabezados de respuesta del servidor.
- Se recibe el cuerpo de respuesta. Se ejecuta cuando el equilibrador de carga lee el cuerpo completo de la respuesta del servidor.
- Antes que iniciar sesión. Se ejecuta cuando el proceso WAF finaliza la tarea de registro.
Registro predeterminado. La acción de registro predeterminada que se utiliza si no se especifica ninguna acción en la configuración de la regla.
Solo registrando. Si está habilitado, el parámetro de resolución de las reglas del conjunto nunca se ejecutará. Este modo sólo está disponible cuando el equipo está en funcionamiento.
Deshabilitar reglas #
Estas tablas le permiten deshabilitar reglas dentro del conjunto sin modificarlas.
Reglas habilitadas. Una lista de reglas actualmente habilitadas en el conjunto, identificadas por su identificación de la regla y description.
Reglas deshabilitadas. Una lista de reglas actualmente deshabilitadas en el conjunto.
Lista de reglas WAF #
La sección Reglas le permite crear y modificar reglas WAF que detectan y protegen contra ataques HTTP.
Estas reglas se evalúan secuencialmente, en el orden en que aparecen en esta pantalla. Para ordenarlas, active el botón Ordenar y arrástrelas a la posición deseada.
Parámetros de regla #
Los siguientes son los posibles parámetros para las reglas:
ID. Identifica la regla dentro del conjunto de reglas. Este identificador corresponde a la posición de la regla en el conjunto.
ID de regla. Un identificador único para la regla. Una granja no se puede vincular a un conjunto de WAF que contenga ID de reglas duplicadas.
Mareas Ideales para Lecciones . Un mensaje descriptivo para identificar la regla, que se registrará tras una coincidencia exitosa.
Fase. El paso de solicitud HTTP donde se ejecutará la regla. Las posibles fases incluyen:
- Se reciben los encabezados de la solicitud. Se ejecuta una vez que el equilibrador de carga lee todos los encabezados de solicitud del cliente.
- Se recibe el cuerpo de la solicitud. Se ejecuta cuando el cuerpo completo de la solicitud del cliente se almacena en el balanceador de carga.
- Se reciben lectores de respuesta.. Se ejecuta una vez que el equilibrador de carga lee todos los encabezados de respuesta del servidor.
- Se recibe el cuerpo de respuesta. Se ejecuta cuando el equilibrador de carga lee el cuerpo completo de la respuesta del servidor.
- Antes que iniciar sesión. Se ejecuta cuando el proceso WAF finaliza la tarea de registro.
Resolución . La acción que se ejecutará si se cumplen todas las condiciones de coincidencia. Las opciones incluyen:
- Permitir. Deja de evaluar reglas adicionales para la transacción HTTP actual si se produce una coincidencia.
- Pasó. Continúa evaluando la siguiente regla sin interrumpir la transacción HTTP.
- Denegar. Finaliza la transacción HTTP actual, lo que impide evaluaciones adicionales de reglas. Si coincide en la fase 1 o 2 (análisis de la solicitud), la solicitud no llegará al backend. Si coinciden en la fase 3 o 4 (análisis de respuesta), la respuesta no llegará al cliente.
- Redireccionar. Detiene la transacción HTTP y envía una redirección HTTP al cliente.
- Acción por defecto. La resolución establecida cuando no se aplica ninguno, generalmente establecida en Permitir.
URL a redirigir. La URL a la que se redirigirá al cliente si se ejecuta una regla con resolución de redireccionamiento.
omitir. Si se cumplen todas las condiciones de coincidencia, la regla omitirá la cantidad de reglas especificadas en este campo.
Saltar después. Si se cumplen todas las condiciones de coincidencia, la regla saltará a otra posición del firewall. La regla puede saltar a una 'marca' u otra ID de regla, y la ID de regla ejecutada después de un salto estará en la misma fase que la regla actual.
Implementación. La ruta a un script LUA que se ejecutará una vez que se logre la primera coincidencia. El script debe estar previamente subido al balanceador de carga.
Log. Si está habilitada, la regla se registrará cuando se logre la primera coincidencia.
Editar una regla WAF en bruto #
Si el formulario no describe adecuadamente una regla WAF y el administrador desconoce la sintaxis de SecLang , puede crear reglas o un conjunto de reglas mediante la opción de edición. Este campo admite cualquier instrucción. Si las instrucciones y los parámetros son compatibles con la sintaxis de SecLang , los parámetros expresados en el formulario no se mostrarán. Sin embargo, serán visibles en el formulario de edición y se procesarán en tiempo de ejecución.
A continuación se muestran ejemplos tanto en modo formulario como en modo sin formato.
Modo formulario #
Este modo es más fácil de usar para editar una regla WAF.
Modo crudo #
Este modo es para usuarios más avanzados.
Creando una regla WAF #
Cuando se agrega una nueva regla, se agregará a las otras reglas del conjunto. Hay tres formas de crear una nueva regla:
- Acción: . Crea una regla básica usando un formulario. Los parámetros del formulario se explican en el Lista de reglas WAF sección. Si la ejecución de la regla es condicional, haga clic en el Agregar condición para establecer las condiciones de ejecución.

- Marcar. Establece una marca de firewall utilizada una vez que se logra una condición de coincidencia. El parámetro esperado es el nombre que identifica la marca.

- Personalizado. Acepta reglas (o un lote de reglas) en la sintaxis SecLang. Para más información sobre el SecLang sintaxis, visite el documentación del proyecto libmodsecurity.

Lista de condiciones #
La tabla de la imagen siguiente muestra una lista de condiciones que el paquete analizado HTTP debe cumplir para que se aplique la regla. Todos los partidos se ejecutarán en la fase definida en la regla. Las coincidencias se comprobarán secuencialmente y la regla se aplicará si se cumplen todas.
Para evaluar la coincidencia, el WAF ejecutará una operación (parámetros Operador y Operador ) sobre una lista de variables. Si algunas variables de la lista cumplen con la operación, se considerarán exitosas. Por ejemplo, en la siguiente imagen, se busca el encabezado IMAGES en la lista de encabezados de solicitud enviados por el cliente. Primero, decodifica cada 64 bits de cada encabezado y luego los convierte a minúsculas. Una vez completada la transformación de las variables, se aplica una expresión regular para buscar la cadena " images" en la lista de variables transformadas. La opción de coincidencia múltiple intentará una coincidencia para cada operación de transformación (después de la decodificación en base 64 y después de la conversión a minúsculas).
Creando condiciones #
La coincidencia establece una condición que debe cumplirse para ejecutar la regla WAF. Para evaluar la coincidencia, el WAF ejecutará una operación (parámetros Operator y Operating ) sobre una lista de variables. Si hay una coincidencia entre las operaciones y las variables de la lista, la coincidencia se considera exitosa. Por ejemplo, para buscar localhost ( 127.0.0.1 ) en la lista de encabezados de la solicitud y en el campo HTTP de host virtual, se puede evaluar con la siguiente configuración.
Estos son los parámetros de configuración para establecer condiciones:
Variable. Esto indica qué parte de la transacción HTTP intentará coincidir la regla. Puede seleccionar entre las variables enumeradas y las coincidencias serán válidas si algunas de ellas coinciden. Aparecerá un menú desplegable cuando haga clic en el campo de variables. La información sobre la configuración de variables se puede encontrar en la Creando variables .
Transformaciones. Esta es una lista de modificaciones aplicadas a las variables. Las transformaciones se aplican secuencialmente, en el orden que se muestra en el campo. Es posible probar una coincidencia para cada transformación aplicada utilizando la opción de coincidencia múltiple. Las transformaciones no modifican ninguna información en la transacción HTTP; se guardan en contextos temporales y se eliminan una vez concluida la operación. Se puede encontrar una lista de las transformaciones. aquí. Este parámetro se utiliza para eliminar técnicas anti-evasión o para eliminar datos de codificación.
Operador. Esto define cómo intenta coincidir la regla. Este parámetro suele combinarse con Paises Donde. Puede encontrar una lista de operadores aquí.
Paises Donde. Esto define lo que las reglas intentan igualar. Este parámetro generalmente se combina con el operador. El tipo de valor esperado debe coincidir con el operador.
Partidos múltiples. Este parámetro se utiliza cuando se configura más de una transformación. La regla intentará hacer coincidir las variables, la Operador, y Paises Donde para cada valor de las transformaciones. Los valores posibles son verdadero (habilita la coincidencia múltiple) o falso (deshabilita la función de coincidencia múltiple).
No coincide. Si esta casilla de verificación está habilitada, el resultado del partido será negado, convirtiéndose en su verdadero cuando el resultado es false y viceversa.
Creando variables #
Las variables son parámetros obligatorios en una condición de coincidencia. Especifican la parte de la solicitud / respuesta HTTP en la que se debe buscar información.
Variables . Este parámetro indica qué campo de la solicitud/respuesta HTTP se debe examinar (por ejemplo, hora, servidor).
Argumento de la variable . Al seleccionar una variable, puede ser necesario especificar un elemento concreto dentro de ella. Por ejemplo, la siguiente imagen muestra cómo se comprueba el host del encabezado de la solicitud.
Contar elementos de las variables . Esta casilla de verificación cuenta el número de elementos de la variable. Esta función es útil cuando la variable es una lista.
Ignorar esta variable para la coincidencia . Si esta casilla está habilitada, la variable no se tendrá en cuenta en la coincidencia. Esta función es útil cuando una variable contiene una lista de valores, pero uno de ellos debe excluirse de la comprobación.
Tabla de variables #
| Variable | Mareas Ideales para Lecciones |
|---|---|
| ARGS | Colección de valores de argumentos en una solicitud. |
| ARGS_JSON | Colección de valores de argumentos en una solicitud JSON. Disponible cuando WAF analiza argumentos JSON; requiere habilitar el conjunto de reglas REQUEST-901-INITIALIZATION. |
| ARGS_COMBINED_SIZE | Tamaño total de los parámetros de solicitud excluyendo archivos. |
| ARGS_NOMBRES | Colección de nombres de argumentos en una solicitud. |
| ARCHIVOS | Nombres de archivos en el sistema de archivos del usuario. Sólo aplicable para multipart / form-data peticiones. |
| ARCHIVOS_COMBINED_SIZE | Tamaño total de archivos en una solicitud. Solo se aplica a solicitudes de datos de formulario o de varias partes. |
| ARCHIVOS_NOMBRES | Lista de nombres de archivos utilizados para cargar archivos. Solo se aplica a solicitudes de datos de formulario o de varias partes. |
| ARCHIVOS_TAMAÑOS | Lista de tamaños de archivos individuales. Solo se aplica a solicitudes de datos de formulario o de varias partes. |
| REQBODY_ERROR | Indica si el formato del cuerpo de la solicitud es incorrecto para JSON o XML (1 si es verdadero, 0 si es falso). |
| SOLICITUD_BODY | Cuerpo de solicitud sin formato. Si la solicitud no tiene la application / x-www-form-urlencoded encabezado, es necesario utilizar ctl:forceRequestBodyVariable en la fase REQUEST_HEADER. |
| SOLICITUD_BODY_LENGTH | Número de bytes en el cuerpo de la solicitud. |
| SOLICITAR_COOKIES | Lista de todos los valores de cookies de solicitud. |
| SOLICITUD_COOKIES_NOMBRES | Lista de todos los valores de cookies de solicitud. |
| SOLICITUD_HEADERS | Todos los encabezados de solicitud. |
| REQUEST_HEADERS_NAMES | Lista de nombres de encabezados de solicitud. |
| REQUEST_METHOD | Método de solicitud (por ejemplo, GET, POST). |
| SOLICITUD_PROTOCOLO | Protocolo de versión HTTP de la solicitud. |
| REQUEST_URI | Ruta de solicitud URI excluyendo el host virtual. |
| PATH_INFO | Información antes de la ruta URI. |
| SOLICITUD_COMPLETA | Contenido completo de la solicitud. |
| FULL_REQUEST_LENGTH | Número de bytes en la solicitud completa. |
| RESPUESTA_BODY | Cuerpo de respuesta cruda. |
| RESPONSE_CONTENT_LENGTH | Número de bytes en el cuerpo de la respuesta. |
| RESPUESTA_HEADERS | Todos los encabezados de respuesta. |
| RESPONSE_HEADERS_NAMES | Lista de nombres de encabezados de respuesta. |
| PROTOCOLO_RESPUESTA | Protocolo de versión HTTP de la respuesta. |
| RESPUESTA_ESTADO | Código de estado de respuesta HTTP. |
| REMOTE_ADDR | Dirección IP del cliente. |
| REMOTE_PORT | Puerto donde el cliente inició la conexión. |
| REMOTE_USER | Nombre de usuario autenticado. |
| DE ESPERA EN | Hora del servidor en horas:minutos:segundos formato. |
| DURACION | Duración de la transacción actual en milisegundos desde el momento de inicio. |
| MULTIPARTE_NOMBRE DE ARCHIVO | Campo de nombre de archivo en una solicitud de varias partes. |
| MULTIPARTE_NOMBRE | Nombre de campo en una solicitud de varias partes. |
| MATCHED_VAR | Valor coincidente en la última operación de coincidencia. Reemplazado en cada operación de partido sin necesidad de opción de captura. |
| MATCHED_VARS | Lista de todos los valores coincidentes. |
| SERVER_ADDR | Dirección IP del servidor. |
| SERVER_NAME | Host virtual obtenido del URI de solicitud. |
| ENV | Variables de entorno de WAF. |
| TX | Colección de variables para la transacción actual. Se elimina cuando finaliza la transacción. variables TX:0-TX:9 almacenar valores capturados con strRegex o operadores de frases. |
Tabla de Operadores #
Los operadores se pueden clasificar en diferentes contextos, cada uno indicado por un prefijo como int para enteros, IP para operaciones con IP, str para cadenas de caracteres o validate para validación de datos.
| Variable | Mareas Ideales para Lecciones |
|---|---|
| strComienza | Coincide si alguna variable comienza con el valor operativo especificado. |
| strContiene | Coincide si alguna variable contiene el valor operativo especificado. |
| strContienePalabra | Coincide si alguna variable contiene la palabra o valor especificado de la operación. |
| fin de cadena | Coincide si alguna variable termina con el valor operativo especificado. |
| strDentro | Coincide si alguna variable comienza con el valor operativo especificado. |
| strPartido | Coincide si alguna variable coincide con alguna de las cadenas de la lista operativa (dividida por el carácter |). |
| strEq | Coincide si alguna variable es idéntica al valor operativo especificado. |
| strRegex | Coincide si alguna variable coincide con la expresión regular especificada en el operativo. |
| strFrases | Coincide si alguna variable coincide con algún valor de la lista especificada en el operativo. |
| strFrasesDeArchivo | Similar a strPhrases, pero la lista de frases se define en un archivo especificado en el operativo. |
| intEQ | Coincide si alguna variable es igual al número especificado en la operación. |
| intGE | Coincide si alguna variable es mayor o igual al número especificado en la operativa. |
| intGT | Coincide si alguna variable es mayor que el número especificado en el operativo. |
| intLE | Coincide si alguna variable es menor o igual al número especificado en la operativa. |
| intLT | Coincide si alguna variable es menor que el número especificado en la operación. |
| detectarSQLi | Detecta inyección SQL en la lista de variables. |
| detectarXSS | Detecta la inyección de XSS (Cross-Site Scripting) en la lista de variables. |
| coincidencia de ip | Intenta hacer coincidir direcciones IP o segmentos de red especificados en la operación con la lista de variables. Utilice una coma como separador para varias IP o segmentos. |
| ipMatchFromFile | Similar a coincidencia de ip, pero lee las IP y los segmentos de red de un archivo especificado en el operativo. |
| validarByteRange | Garantiza que el número de bytes en las variables esté dentro del rango especificado en el funcionamiento (por ejemplo, “10, 13, 32-126”). |
| validarUrlEncoding | Valida datos codificados. Úselo solo para datos que no se codifican comúnmente o para datos que se codifican varias veces. |
| validarUtf8Codificación | Valida variables codificadas en UTF-8. |
| verificar tarjeta de crédito | Verifica si las variables son números de tarjetas de crédito válidos utilizando la expresión regular especificada en el operativo. |
| verificarSSN | Verifica si las variables son válidas Números de Seguro Social de EE. UU. utilizando la expresión regular especificada en el operativo. |
| partidoSiempre | Siempre devuelve verdadero, forzando una coincidencia independientemente de otras condiciones. |
| partidoNunca | Siempre devuelve false, forzando una no coincidencia independientemente de otras condiciones. |
Tabla de Transformación #
Aquí está la tabla que describe las transformaciones:
| Mareas Ideales para Lecciones | |
|---|---|
| base64Decodificar | Decodifica una cadena codificada en Base64. |
| base64DecodeExt | Decodifica una cadena codificada en Base64 ignorando los caracteres no válidos. |
| sqlHexDecode | Decodifica datos hexadecimales SQL. |
| codificación base64 | Codifica utilizando codificación Base64. |
| cmdLinea | Evita problemas asociados con líneas de comando escapadas. |
| comprimir espacios en blanco | Convierte caracteres de espacios en blanco (0x20, \f, \t, \n, \r, \v, 0xa0) en espacios (ASCII 0x20), comprimiendo varios espacios consecutivos en uno. |
| cssDecodificar | Decodifica caracteres codificados utilizando las reglas de escape CSS 2.x. Esta función utiliza sólo hasta dos bytes en el proceso de decodificación, lo que significa que se utiliza para descubrir caracteres ASCII codificados usando codificación CSS (que normalmente no estarían codificados), o para contrarrestar la evasión, que es una combinación de barra invertida y no -caracteres hexadecimales (por ejemplo, ja\vascript es equivalente a javascript). |
| escapeSeqDecode | Decodifica secuencias de escape ANSI C: \a, \b, \f, \n, \r, \t, \v, \\, \?, \', \”, \xHH (hexadecimal), \0OOO (octal) . Se dejan codificaciones no válidas en el resultado. |
| decodificación hexadecimal | Decodifica una cadena que ha sido codificada usando el mismo algoritmo que el usado en hexEncode (ver la siguiente entrada). |
| código hexadecimal | Codifica cadenas (que posiblemente contengan caracteres binarios) reemplazando cada byte de entrada con dos caracteres hexadecimales (por ejemplo, xyz está codificado como 78797a). |
| htmlEntityDecode | Decodifica caracteres codificados como entidades HTML. |
| jsDecodificar | Decodifica secuencias de escape de JavaScript. |
| de largo | Recupera la longitud de la cadena de entrada en bytes. |
| minúsculas | Convierte todos los caracteres a minúsculas utilizando la configuración regional C actual. |
| md5 | Calcula un hash MD5 a partir de los datos de entrada. El hash calculado está en formato binario sin formato y es posible que sea necesario codificarlo en el texto que se va a imprimir (o registrar). Las funciones hash se utilizan comúnmente en combinación con código hexadecimal. |
| ninguna | Elimina funciones de transformación anteriores asociadas con la regla actual. |
| normalizar ruta | Elimina múltiples barras diagonales, autorreferencias de directorio y referencias anteriores de directorio de la cadena de entrada (excepto cuando se encuentra al comienzo de la entrada). |
| normalizarPathWin | Similar a normalizar ruta, pero primero convierte los caracteres de barra invertida en barras diagonales. |
| paridadEven7bit | Calcula la paridad par de datos de 7 bits, reemplazando el octavo bit de cada byte de destino con el bit de paridad calculado. |
| paridadOdd7bit | Calcula la paridad impar de datos de 7 bits, reemplazando el octavo bit de cada byte de destino con el bit de paridad calculado. |
| paridadCero7bit | Calcula la paridad cero de datos de 7 bits, reemplazando el octavo bit de cada byte de destino con un bit de paridad cero, lo que permite inspeccionar datos de 8 bits de paridad par/impar como datos ASCII7. |
| eliminar valores nulos | Elimina todos los bytes NUL de la entrada. |
| eliminar espacios en blanco | Elimina todos los espacios en blanco de la entrada. |
| reemplazarComentarios | Reemplaza las apariciones de comentarios de estilo C (/* … */) con un solo espacio (varias apariciones consecutivas de las cuales no se comprimirán). Los comentarios no terminados también se reemplazarán con un espacio (ASCII 0x20). Sin embargo, no se actuará sobre la terminación independiente de un comentario (*/). |
| eliminarComentariosChar | Elimina los caracteres de comentarios comunes de la entrada (/*, */, –, #). |
| reemplazar nulos | Reemplaza los bytes NUL en la entrada con caracteres de espacio (ASCII 0x20). |
| URLDecode | Decodifica una cadena de entrada codificada en URL. Las codificaciones no válidas (es decir, las que utilizan caracteres no hexadecimales o las que están al final de la cadena y les faltan uno o dos bytes) no se convierten, pero no se genera ningún error. |
| mayúsculas | Convierte todos los caracteres a mayúsculas utilizando la configuración regional C actual. |
| urlDecodeUni | Decodifica la entrada codificada en URL con soporte para codificación específica de Microsoft (como URLDecode, pero con soporte para la codificación % u específica de Microsoft). |
| codificación de URL | Codifica la cadena de entrada mediante codificación URL. |
| utf8toUnicode | Convierte secuencias de caracteres UTF-8 a Unicode. Esto ayuda a la normalización de la entrada, especialmente para idiomas distintos del inglés, minimizando los falsos positivos y los falsos negativos. |
| sha1 | Calcula un hash SHA1 a partir de los datos de entrada. El hash calculado está en formato binario sin formato y es posible que sea necesario codificarlo en el texto que se va a imprimir (o registrar). Las funciones hash se utilizan comúnmente en combinación con código hexadecimal. |
| recortarIzquierda | Elimina los espacios en blanco del lado izquierdo de la cadena de entrada. |
| recortarDerecha | Elimina los espacios en blanco del lado derecho de la cadena de entrada. |
| recorte | Elimina los espacios en blanco de ambos lados de la cadena de entrada. |
Configuración WAF de granjas #
Esta sección le permite asignar el conjunto de reglas WAF actual a granjas HTTP.
Aquí puede seleccionar una o más granjas (mantenga presionada la tecla Mayús para seleccionar varias) para asignar o eliminar el conjunto de reglas WAF. Use los botones de flecha doble para asignar o eliminar el conjunto de reglas de todas las granjas disponibles.











