Configurar firewall en Plesk con ModSecurity
¿Qué es ModSecurity y por qué debería importarte?
Cuando hablamos de seguridad en un servidor web, a menudo pensamos en contraseñas robustas, certificados SSL o copias de seguridad. Pero hay una capa de protección que trabaja silenciosamente, analizando cada petición que llega a tu sitio web: el firewall de aplicaciones web (WAF). ModSecurity es precisamente eso, un WAF de código abierto que actúa como un portero muy estricto, decidiendo qué tráfico es legítimo y cuál debe ser bloqueado antes de que llegue a tu aplicación.
Imagina que tu servidor es un edificio de oficinas. El firewall tradicional (como el de Plesk) es la puerta principal con un guardia de seguridad. ModSecurity es un segundo control en cada planta, que revisa el contenido de cada paquete que entra. No solo mira "quién" entra, sino "qué" trae dentro. Esto es crucial porque los ataques modernos no vienen de un solo lugar, sino que se esconden en peticiones aparentemente normales, como un formulario de contacto o una URL con parámetros extraños.
Para un usuario de Plesk, configurar ModSecurity no es un lujo, es una necesidad. Los sitios web construidos con WordPress, Joomla o incluso tiendas online personalizadas son objetivos frecuentes de ataques automatizados que buscan inyecciones SQL, cross-site scripting (XSS) o intentos de inclusión de archivos remotos. ModSecurity, con sus reglas predefinidas (como el famoso OWASP Core Rule Set), puede detectar y bloquear el 99% de estos intentos sin que tú tengas que escribir una sola línea de código.
La buena noticia es que Plesk integra ModSecurity de forma nativa. No necesitas instalar nada extraño ni acceder por terminal con comandos complejos. Todo se gestiona desde el panel de control, con una interfaz gráfica que, aunque al principio puede parecer abrumadora, es bastante lógica una vez que entiendes los conceptos básicos. Este artículo te guiará paso a paso, desde la activación inicial hasta la configuración fina de reglas personalizadas, para que tu sitio web navegue con un chaleco antibalas digital.
Activando ModSecurity en Plesk: Primeros pasos
Antes de empezar, es importante que sepas que ModSecurity no viene activado por defecto en todos los servidores. Dependiendo de tu proveedor de hosting o de cómo se instaló Plesk, puede estar disponible pero deshabilitado. Vamos a encenderlo.
Cómo acceder a la configuración de seguridad
Lo primero es iniciar sesión en tu panel de Plesk. Normalmente accedes a través de https://tu-dominio.com:8443 o la URL que te haya proporcionado tu administrador. Una vez dentro, busca la sección que dice "Herramientas y ajustes" en el menú lateral izquierdo. Dentro de esa sección, desplázate hasta encontrar el apartado de "Seguridad" y haz clic en "ModSecurity".
Verás una pantalla con un interruptor principal. Actívalo. Plesk te preguntará si quieres usar la configuración recomendada. Acepta. En ese momento, se descargará e instalará el conjunto de reglas básicas de OWASP. Este proceso puede tardar un par de minutos, dependiendo de la velocidad de tu servidor y de la conexión a internet. No cierres la pestaña del navegador mientras se completa.
Configuración inicial recomendada
Una vez activado, verás varias opciones. La más importante es el "Modo de funcionamiento". Tienes dos opciones: "Detección" y "Prevención".
En modo Detección, ModSecurity solo registra los ataques en un archivo de log. No bloquea nada. Esto es útil para probar si tus reglas personalizadas o las reglas OWASP generan falsos positivos (es decir, bloquean tráfico legítimo). Es la opción más segura para empezar, especialmente si tu sitio web tiene formularios complejos o funcionalidades de inicio de sesión personalizadas.
En modo Prevención, ModSecurity bloquea activamente las peticiones que coinciden con las reglas. Es la configuración que realmente te protege, pero requiere que estés atento a los logs durante los primeros días para asegurarte de que no estás bloqueando a usuarios reales.
[TIP]: Siempre empieza en modo Detección durante al menos 48 horas. Revisa los logs de ModSecurity (los encontrarás en el mismo apartado) para ver qué tipo de tráfico se está marcando. Si ves muchas alertas sobre tu propia IP o sobre acciones normales como "buscar en el sitio", entonces necesitas ajustar las reglas antes de pasar a Prevención.
Entendiendo las reglas de ModSecurity
ModSecurity funciona con reglas. Cada regla es una instrucción que dice "si encuentras este patrón, haz esto". Los patrones pueden ser desde una cadena de texto específica (como union select) hasta expresiones regulares complejas que buscan comportamientos anómalos.
El conjunto de reglas OWASP (CRS)
El OWASP Core Rule Set es el estándar de oro. Es una colección de reglas gratuitas y actualizadas que cubren los ataques más comunes. Plesk te permite elegir qué versión del CRS usar y actualizarla desde el panel.
En la configuración de ModSecurity, verás una lista de reglas agrupadas por categorías. Por ejemplo:
- Protocolo: Detecta violaciones del protocolo HTTP.
- Ataques de inyección: Cubre SQLi, XSS, inyección de comandos, etc.
- Protección de archivos: Bloquea intentos de acceso a archivos sensibles como
.envowp-config.php. - Límites de petición: Evita que alguien envíe peticiones gigantes para saturar tu servidor.
Cada regla tiene un ID numérico. Es importante que anotes algunos IDs porque los necesitarás para crear excepciones.
¿Qué son los falsos positivos y cómo manejarlos?
Un falso positivo ocurre cuando ModSecurity bloquea una acción que no es maliciosa. Por ejemplo, un plugin de WordPress que envía datos mediante JSON puede activar una regla anti-XSS porque el formato se parece a un ataque. Otro caso típico es el uso de caracteres especiales en un formulario de búsqueda que activa la regla de "inyección SQL".
Para manejar esto, tienes dos opciones:
- Deshabilitar la regla específica: Si sabes que una regla concreta (ej. ID 942100) no es relevante para tu sitio, puedes desactivarla. Esto se hace creando una excepción.
- Añadir tu IP a la lista blanca: Si eres tú el que se bloquea al administrar el sitio, puedes añadir tu dirección IP para que ModSecurity la ignore por completo. Esto no es recomendable para todo el tráfico, pero sí para tu IP de administrador.
Plesk facilita esto con un botón en la interfaz. Cuando veas un evento en los logs, puedes hacer clic en "Añadir excepción" y elegir si quieres excluir esa regla, esa URL o ese parámetro específico.
Configurando reglas personalizadas y excepciones
Ahora vamos a la parte interesante: adaptar ModSecurity a las necesidades de tu sitio web. No quieres desactivar la protección global, pero sí quieres que tu web funcione sin errores.
Crear una excepción para una URL específica
Imagina que tienes un endpoint de API en tu-sitio.com/api/v1/consulta que envía datos en formato JSON. La regla anti-XSS está bloqueando estas peticiones. Para solucionarlo:
- Ve a la pestaña de "Excepciones" dentro de la configuración de ModSecurity.
- Haz clic en "Añadir excepción".
- En el campo "Regla ID", escribe el ID numérico de la regla problemática (ej.
942100). - En el campo "URL", pon la ruta exacta:
/api/v1/consulta. - Guarda los cambios.
Ahora, esa regla no se aplicará únicamente a esa URL, pero seguirá protegiendo el resto de tu sitio.
Ajustar el nivel de paranoia
El CRS tiene niveles de paranoia (1 a 4). El nivel 1 es el más básico y el que menos falsos positivos genera. El nivel 4 es extremadamente estricto y solo se recomienda para sitios con requisitos de seguridad muy altos (como banca online).
En Plesk, puedes cambiar este nivel en la configuración general. Si tu sitio es un blog o una web corporativa, quédate en nivel 1. Si tienes una tienda online, puedes probar con el nivel 2, pero estate preparado para revisar logs con frecuencia.
Crear una regla personalizada
Aunque no es necesario para la mayoría de usuarios, Plesk te permite escribir reglas personalizadas en formato SecRule. Por ejemplo, podrías bloquear todas las peticiones que vengan de un país específico (usando la base de datos GeoIP) o bloquear un User-Agent concreto (como el de algún bot malicioso).
Un ejemplo sencillo para bloquear un bot que no te deja en paz:
SecRule REQUEST_HEADERS:User-Agent "BadBot" "id:100001,phase:1,deny,status:403,log"
Para añadirlo, ve a "Ajustes avanzados" y pega la regla en el cuadro de texto. Asegúrate de que el ID no entre en conflicto con las reglas existentes del CRS (usa IDs superiores a 100000).
Monitoreo y análisis de logs: La clave del éxito
Configurar ModSecurity no es un "configurar y olvidar". Es un proceso continuo. Los logs te dirán si tu configuración es efectiva y si está causando problemas.
Dónde encontrar los logs en Plesk
En el mismo apartado de ModSecurity, encontrarás una pestaña llamada "Registro de eventos" o "Logs". Ahí se muestran las últimas alertas con detalles como:
- La IP del atacante.
- La URL atacada.
- El ID de la regla que se activó.
- El mensaje de error.
Puedes filtrar por fecha, por IP o por severidad. La severidad se marca con colores: rojo para crítico, amarillo para medio, etc.
Cómo interpretar un evento
Un evento típico puede verse así:
[client 203.0.113.5] ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?i:union select|select.*from)" at ARGS:q. [file "/etc/modsecurity/owasp-crs/rules/REQUEST-942-APPLICATION-ATTACK-SQLI.conf"] [line "37"] [id "942100"]
Traducción: Un usuario con IP 203.0.113.5 intentó acceder a una URL con el parámetro q que contenía la cadena "union select". La regla 942100 lo bloqueó. Esto es un ataque de inyección SQL típico. Perfecto, el sistema funciona.
Si ves muchos eventos de una misma IP, considera bloquearla en el firewall de Plesk. Plesk tiene un módulo de firewall que te permite crear reglas de bloqueo por IP fácilmente.
Revisión semanal
Te recomiendo dedicar 15 minutos cada semana a revisar los logs. Busca patrones extraños, como picos de actividad en horas inusuales o intentos repetidos de acceso a wp-admin. Si encuentras algo, actúa. ModSecurity es tu primera línea de defensa, pero no la única.
Preguntas frecuentes (FAQ)
¿ModSecurity afecta al rendimiento de mi sitio?
Sí, cualquier WAF añade una pequeña latencia porque analiza cada petición. Sin embargo, con la configuración por defecto y el nivel de paranoia 1, el impacto es mínimo (menos del 5%). Si notas una ralentización significativa, revisa si tienes demasiadas reglas personalizadas o si tu servidor es muy limitado en recursos. En ese caso, puedes ajustar el nivel de paranoia o excluir rutas estáticas (como imágenes o archivos CSS) del análisis.
¿Puedo usar ModSecurity junto con otros firewalls como Cloudflare?
Absolutamente. De hecho, es una práctica recomendada. Cloudflare actúa en el nivel de red (protege contra ataques DDoS y filtra el tráfico antes de que llegue a tu servidor). ModSecurity actúa a nivel de aplicación, justo antes de que el código PHP procese la petición. No son excluyentes, se complementan.
¿Qué pasa si ModSecurity bloquea a un usuario legítimo?
Es el escenario que más temen los administradores. La solución es la gestión de excepciones que hemos visto. Si un usuario te reporta que no puede completar una compra o enviar un formulario, revisa los logs en ese rango de tiempo y busca su IP. Verás qué regla se activó y podrás crear una excepción para esa situación específica.
¿ModSecurity protege contra ataques de fuerza bruta?
No directamente. ModSecurity puede limitar la frecuencia de peticiones (rate limiting) si configuras reglas personalizadas, pero para fuerza bruta en el panel de administración de WordPress o en el propio Plesk, necesitas herramientas como "Fail2Ban". Plesk tiene un módulo para Fail2Ban integrado, que trabaja en conjunto con ModSecurity: cuando ModSecurity detecta un ataque, puede pasar la IP a Fail2Ban para que la bloquee a nivel de red durante un tiempo determinado.
¿Debo usar la versión de ModSecurity que viene con Plesk o instalar la mía propia?
Usa la que viene con Plesk. Está compilada y optimizada para funcionar con el panel. Instalar tu propia versión desde el código fuente puede causar conflictos con las actualizaciones de Plesk y es más difícil de mantener. La versión integrada recibe actualizaciones automáticas con el propio panel, lo que es una gran ventaja.
Conclusión: Tu sitio web, ahora con un guardián más fuerte
Configurar ModSecurity en Plesk no es un proceso de un solo clic, pero tampoco es una ciencia espacial. Con esta guía, has aprendido a activarlo, a entender sus reglas, a manejar los falsos positivos y a monitorear su actividad. La seguridad de tu sitio web es una inversión continua, y ModSecurity es una pieza fundamental en ese rompecabezas.
[WARNING]: No te confíes solo con ModSecurity. Un buen hosting en Plesk debe incluir también copias de seguridad periódicas, actualizaciones automáticas del sistema y el uso de contraseñas robustas. ModSecurity es un escudo, no una armadura completa.
Si tu sitio web está alojado en un panel de control diferente, como Syspanel (accesible por el puerto 2106), los conceptos son similares, pero la interfaz cambia. En Syspanel, la configuración del firewall y ModSecurity suele estar en "Seguridad" > "Firewall" y es igualmente intuitiva. Lo importante es que entiendas la lógica: activar, monitorizar y ajustar.
Ahora que tienes el conocimiento, te animo a que vayas a tu panel de Plesk, actives ModSecurity en modo detección y observes durante unos días. Verás cómo empiezas a detectar intentos de ataque que antes pasaban desapercibidos. Es una sensación de control y seguridad que vale la pena. Tu web te lo agradecerá.
