En el ámbito de la ciberseguridad, la protección de aplicaciones web es crucial para asegurar la integridad y confidencialidad de la información procesada en la red. ModSecurity, un firewall de aplicaciones web (WAF) altamente configurable y adaptable, ofrece una capa de seguridad robusta contra una variedad de ataques. Entre sus numerosas funcionalidades, la capacidad de configurar listas blancas para direcciones IP específicas es de vital importancia para administradores que necesitan permitir el acceso sin restricciones a usuarios o sistemas de confianza.
Para cualquier pregunta relacionada con la sintaxis de los comandos, se recomienda consultar el Manual de Referencia de ModSecurity disponible en: https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual.
La Directiva Principal: SecRule
La creación y configuración de reglas dentro de ModSecurity se realiza a través de la directiva SecRule
. Se conforma por tres componentes principales: VARIABLES, OPERATOR y ACTIONS.
- VARIABLES: Define las partes de una transacción HTTP que se deben inspeccionar. Por ejemplo,
ARGS
para todos los argumentos incluidos en el Payload de POST,REQUEST_METHOD
para el método de solicitud utilizado en la transacción,REQUEST_HEADERS
para un conjunto de todos los encabezados de la solicitud o para inspeccionar encabezados seleccionados. - OPERATOR: Especifica una expresión regular, patrón o palabra clave que se debe comprobar en las variables. Los operadores comienzan con el carácter @.
- ACTIONS: Determina las acciones a realizar si la regla concuerda. Las acciones se dividen en siete categorías como Disruptive, Flow, Meta-data, Variable, Logging, Special y Miscellaneous. Si no se proporcionan ACTIONS, las acciones predeterminadas se aplican según
SecDefaultAction
.
A continuación, se ilustran tres enfoques para incluir una dirección IP en la lista blanca del motor de ModSecurity.
Ejemplo de Regla 1: Bypass Total
La siguiente regla demuestra cómo incluir una dirección IP en la lista blanca para eludir el motor de ModSecurity por completo.
SecRule REMOTE_ADDR "@ipMatch 192.168.1.101" \
id:101,phase:1,t:none,log,allow
- REMOTE_ADDR: La dirección IP del cliente remoto a incluir en la lista blanca.
- ACTIONS: La combinación de
log
yallow
detiene el procesamiento de reglas afectando toda la transacción.
Ejemplo de Regla 2: Desactivación Temporal
El siguiente ejemplo es considerado menos eficiente que el primero pero ofrece una alternativa para desactivar temporalmente el motor de ModSecurity.
SecRule REMOTE_ADDR "@ipMatch 192.168.1.101" \
id:102,phase:1,t:none,nolog,pass,ctl:ruleEngine=off
- ACTIONS: La acción
ctl:ruleEngine=off
cambia la configuración de ModSecurity de forma transitoria, afectando únicamente la transacción en curso.
Ejemplo de Regla 3: Eliminación de Regla por ID
El último ejemplo muestra cómo incluir una dirección IP en la lista blanca asumiendo la existencia de una regla que bloquea una IP o rango de IPs específicos y que necesita ser eludido.
SecRule REMOTE_ADDR "@ipMatch 192.168.1.101" \
id:101,phase:1,t:none,log,pass,ctl:ruleRemoveById=1234
- ACTIONS: La acción
ctl:ruleRemoveById=1234
elimina, para la transacción actual, la regla identificada por el ID especificado, permitiendo así el acceso de la dirección IP señalada.
La inclusión de una dirección IP en la lista blanca de ModSecurity permite a administradores y protectores de aplicaciones web flexibilizar el acceso mientras mantienen un alto nivel de seguridad. Cada enfoque descrito tiene sus propios casos de uso, permitiendo una configuración detallada adaptada a las necesidades específicas de cada entorno web.