Plesk: cómo habilitar ModSecurity y reglas OWASP
¿Qué es ModSecurity y por qué debería importarte?
Si tienes una web alojada en un servidor con Plesk, seguramente has escuchado hablar de ModSecurity. Pero, ¿qué es exactamente? Piénsalo como un guarda de seguridad que se coloca en la puerta de tu servidor web. Su trabajo es analizar cada petición que llega a tu sitio (cada clic, cada formulario enviado, cada URL solicitada) y decidir si es legítima o si parece un intento de ataque.
ModSecurity es un firewall de aplicaciones web (WAF) de código abierto. A diferencia de un firewall tradicional que solo filtra el tráfico por puertos o IPs, este analiza el contenido mismo de las peticiones HTTP. Detecta patrones sospechosos como inyecciones SQL, cross-site scripting (XSS), inclusión de archivos remotos y otras amenazas comunes.
Ahora bien, ModSecurity por sí solo es como un guardia sin instrucciones. Necesita un "manual" de qué buscar. Aquí es donde entran las reglas OWASP. El proyecto OWASP (Open Web Application Security Project) mantiene un conjunto de reglas gratuitas y actualizadas que le dicen a ModSecurity exactamente qué patrones son peligrosos. Juntos forman una barrera formidable contra ataques automatizados y manuales.
En este artículo te explicaré paso a paso cómo activarlos en Plesk, qué configuración elegir y cómo evitar los típicos problemas de "falsos positivos" (cuando el firewall bloquea a usuarios legítimos).
Antes de empezar: requisitos y consideraciones
Activar ModSecurity no es complicado, pero hay que hacerlo con cuidado. Un servidor mal configurado puede bloquear todo el tráfico o, peor aún, dejar pasar ataques.
[WARNING]
Antes de tocar nada, haz una copia de seguridad completa de tu sitio y de la configuración del servidor. Si algo sale mal, podrás revertir los cambios sin perder datos.
Estos son los requisitos mínimos para seguir esta guía:
- Tener acceso a Plesk con permisos de administrador o, al menos, de suscripción.
- El servidor debe tener instalado el paquete de ModSecurity. En la mayoría de instalaciones recientes de Plesk ya viene incluido, pero no activado.
- Saber si tu hosting es compartido o dedicado. En un hosting compartido, algunas opciones pueden estar limitadas por el proveedor.
[INFO]
Si tu proveedor de hosting usa Plesk pero no ves las opciones de ModSecurity, contacta con su soporte. Es posible que lo tengan deshabilitado a nivel de servidor por políticas de rendimiento.
Paso 1: Activar ModSecurity en Plesk (nivel de suscripción)
Plesk permite activar ModSecurity de dos maneras: globalmente para todo el servidor o individualmente para cada suscripción (sitio web). Te recomiendo empezar por el nivel de suscripción para ir probando.
Sigue estos pasos:
- Inicia sesión en Plesk con tu cuenta de administrador o de cliente.
- En el panel izquierdo, ve a "Sitios web y dominios".
- Busca el dominio que quieres proteger y haz clic en "Seguridad" (el candado).
- Dentro de la sección de seguridad, busca el bloque de "ModSecurity". Si no lo ves, puede estar en "Configuración de la suscripción" o en "Aplicaciones y servicios".
- Marca la casilla "Activar ModSecurity".
- Se desplegará un menú para elegir el conjunto de reglas. Selecciona "OWASP CRS" (si está disponible) o la opción que diga "OWASP".
- Guarda los cambios.
En este momento, ModSecurity ya está activo con las reglas básicas. Pero ojo, la configuración por defecto suele ser bastante estricta y puede generar bloqueos. Vamos a ajustarla.
Paso 2: Configurar el conjunto de reglas OWASP correctamente
El OWASP Core Rule Set (CRS) es el estándar de facto. Plesk suele incluir dos versiones: la 3.x (recomendada) y la 2.x (obsoleta). Siempre que puedas, elige la 3.x.
Dentro de la configuración de ModSecurity en Plesk, puedes elegir el nivel de paranoia. Esto es importante:
- Nivel 1 (Paranoia baja): Bloquea solo ataques evidentes. Es el recomendado para empezar. Muy pocos falsos positivos.
- Nivel 2 (Paranoia media): Añade más reglas. Puede bloquear algunas peticiones legítimas con caracteres especiales.
- Nivel 3 y 4 (Paranoia alta): Bloquea casi todo lo que no sea "normal". Solo apto para sitios muy simples y sin formularios complejos.
[TIP]
Empieza siempre en Nivel 1. Observa los logs de ModSecurity durante unos días y, si ves que no bloquea nada legítimo, sube el nivel. Es mejor tener un sitio funcionando que uno seguro pero inaccesible.
Otra configuración clave es el modo de funcionamiento. Plesk te ofrece dos modos:
- Modo de detección (o log): ModSecurity registra los ataques pero no los bloquea. Es perfecto para probar.
- Modo de protección (o activo): Bloquea las peticiones maliciosas. Es el modo definitivo.
Recomendación: Activa primero el modo de detección, revisa los logs durante 24-48 horas y luego cambia a protección.
Paso 3: Crear reglas de exclusión para evitar falsos positivos
Aquí es donde muchos usuarios se frustran. ModSecurity con OWASP es muy bueno, pero a veces bloquea peticiones legítimas. Por ejemplo, si tu web tiene un formulario que permite comentarios con caracteres raros (emojis, acentos, comillas), el firewall puede pensar que es un ataque XSS.
Para solucionarlo, Plesk permite crear reglas de exclusión (excepciones). Puedes excluir:
- URLs específicas: Por ejemplo,
/admin/o/tienda/carrito. - Parámetros concretos: Por ejemplo, excluir el campo "mensaje" de un formulario.
- Direcciones IP: Para que una IP concreta no sea filtrada (útil para tu IP de trabajo).
En Plesk, ve a la configuración de ModSecurity y busca la pestaña o botón "Reglas de exclusión" o "Administrar excepciones". Allí podrás añadir nuevas reglas.
[INFO]
Si no encuentras esta opción, es porque tu suscripción no la incluye. En ese caso, puedes crear un archivo de configuración manualmente en el servidor, pero eso ya requiere acceso SSH y conocimientos más avanzados.
Un ejemplo práctico de exclusión: si usas WordPress y el plugin de WooCommerce, es habitual que las peticiones de pago generen falsos positivos. Excluir la URL /wp-admin/admin-ajax.php suele ser necesario.
Paso 4: Ver los logs de ModSecurity y analizar ataques
Plesk guarda un registro detallado de todo lo que hace ModSecurity. Para verlo:
- Ve a "Sitios web y dominios".
- Selecciona el dominio.
- Entra en "Registros" o "Logs".
- Busca el archivo de logs de ModSecurity (suele llamarse
modsec_audit.logo similar).
En estos registros verás:
- La IP del atacante.
- El tipo de ataque detectado (por ejemplo, "SQL Injection").
- La regla exacta de OWASP que se activó.
- La URL que se intentó atacar.
[WARNING]
No compartas estos logs públicamente si contienen datos de usuarios. Podrían considerarse información sensible.
Si ves muchos ataques bloqueados, ¡enhorabuena! Eso significa que el firewall está haciendo su trabajo. Si ves falsos positivos, es hora de crear excepciones como explicamos antes.
Paso 5: Optimizar el rendimiento del servidor
ModSecurity consume recursos. Cada petición HTTP pasa por el filtro y eso añade latencia. En un servidor pequeño, esto puede notarse. Para minimizar el impacto:
- Usa el nivel de paranoia más bajo posible.
- Evita activar ModSecurity en sitios estáticos que no procesan datos del usuario.
- Configura la caché correctamente. Si usas LiteSpeed o Nginx con caché, las peticiones cacheadas no pasan por ModSecurity, lo que reduce la carga.
- Revisa la memoria RAM del servidor. Si es menor a 1GB, considera actualizar el plan o limitar ModSecurity a los sitios críticos.
[INFO]
Si usas Syspanel (la alternativa a Plesk que algunos proveedores usan), el proceso es similar pero se accede por el puerto 2106. La lógica de configuración de ModSecurity es idéntica, aunque los nombres de los menús pueden variar ligeramente.
Preguntas frecuentes (FAQ)
¿ModSecurity es compatible con todos los CMS?
Sí, es compatible con WordPress, Joomla, PrestaShop, Magento y cualquier otro CMS que funcione sobre Apache o Nginx. Sin embargo, los plugins y temas mal codificados pueden generar falsos positivos.
¿Puedo activar ModSecurity solo para una carpeta?
No directamente desde Plesk. Pero puedes crear una regla de exclusión para la carpeta que quieres dejar fuera, y el resto del sitio seguirá protegido.
¿Qué hago si mi web se cae después de activar ModSecurity?
Lo primero: desactívalo inmediatamente desde Plesk. Luego revisa los logs para ver qué regla se activó. Crea una excepción para esa URL o parámetro y reactiva el firewall.
¿OWASP CRS se actualiza solo?
En Plesk, las reglas se actualizan con el paquete de actualizaciones del sistema. No tienes que hacer nada manualmente, pero es buena práctica revisar cada mes si hay nuevas versiones.
¿Es mejor usar un WAF externo como Cloudflare?
No es excluyente. Puedes usar ambos. Cloudflare protege a nivel de DNS y red, mientras que ModSecurity protege a nivel de aplicación. Si tu web es crítica, la doble capa es ideal.
Conclusión y buenas prácticas finales
Activar ModSecurity con reglas OWASP en Plesk es una de las mejores decisiones de seguridad que puedes tomar. Es gratuito, integrado y muy potente. Pero como toda herramienta de seguridad, requiere configuración y mantenimiento.
Resumen de buenas prácticas:
- Empieza en modo detección para ver qué hace sin romper nada.
- Usa el nivel de paranoia 1 al principio.
- Revisa los logs semanalmente para ajustar excepciones.
- Combínalo con un backup automático diario.
- Mantén Plesk y el sistema operativo actualizados.
[TIP]
Si tienes dudas sobre si una regla bloquea algo legítimo, usa la herramienta de prueba de ModSecurity que incluye Plesk. Te permite simular peticiones y ver si serían bloqueadas o no.
Recuerda que la seguridad web no es un destino, es un proceso continuo. Los atacantes evolucionan, y tus defensas también deben hacerlo. Con ModSecurity y OWASP bien configurados, ya tienes una base sólida para dormir tranquilo.
Si tu proveedor usa Syspanel en lugar de Plesk, recuerda que el acceso es por el puerto 2106 y que la configuración de ModSecurity se encuentra en una sección similar llamada "Seguridad" o "Firewall de aplicaciones". Los conceptos son exactamente los mismos.
Espero que esta guía te haya sido útil. Si tienes alguna duda, déjala en los comentarios y estaré encantado de ayudarte. ¡Buena suerte con tu servidor!
