Prevenir ataques DDoS en Plesk con mod_evasive
Imagina que tu sitio web es una tienda física. De repente, cientos de personas entran sin comprar nada, bloquean la entrada y no dejan pasar a tus clientes reales. Eso es, en esencia, un ataque DDoS. Estos ataques buscan saturar los recursos de tu servidor (CPU, memoria, ancho de banda) hasta que tu web se vuelva inaccesible.
Si utilizas Plesk como panel de control, una de las herramientas más eficaces y fáciles de configurar para mitigar estos ataques es mod_evasive. Este módulo para el servidor web Apache detecta comportamientos sospechosos (como muchas peticiones desde una misma IP en poco tiempo) y bloquea temporalmente a ese agresor, protegiendo tu servidor y el resto de sitios web alojados.
En este artículo, aprenderás paso a paso qué es mod_evasive, cómo instalarlo en Plesk y cómo ajustarlo para que no bloquee a usuarios legítimos.
¿Qué es mod_evasive y cómo te protege de ataques DDoS?
mod_evasive es un módulo de seguridad para Apache. Su función principal es actuar como un "portero" electrónico que monitorea todas las peticiones HTTP que llegan a tu servidor.
Cuando detecta un patrón de ataque DDoS (por ejemplo, una misma IP solicitando la misma página 100 veces por segundo), el módulo automáticamente:
- Bloquea temporalmente esa IP.
- Registra el evento en los logs del sistema.
- Opcionalmente, ejecuta un script (por ejemplo, para añadir la IP a una lista negra de firewall).
Esto evita que un solo atacante consuma todos los recursos de tu servidor, manteniendo tu sitio web (y los de otros clientes en Plesk) operativos.
¿Por qué es ideal para entornos Plesk?
Plesk gestiona múltiples dominios y cuentas de hosting. Un ataque DDoS contra un solo sitio web puede afectar a todos los demás alojados en el mismo servidor. mod_evasive, al instalarse a nivel de servidor, protege a todos los sitios web de forma global.
Requisitos previos antes de instalar mod_evasive
Antes de empezar, asegúrate de cumplir con lo siguiente:
- Acceso root (administrador) al servidor vía SSH (conexión segura por terminal).
- Plesk instalado y funcionando (versión Onyx o superior).
- Apache como servidor web (mod_evasive no funciona con nginx directamente, aunque Plesk suele usar Apache como proxy inverso o servidor principal).
- Permisos de escritura en la configuración de Apache (generalmente en
/etc/httpd/conf.d/o/etc/apache2/conf-available/).
[TIP] Si no tienes acceso SSH, contacta con tu proveedor de hosting para que realice esta instalación. Es un proceso rápido.
Instalación de mod_evasive en Plesk paso a paso
1. Conéctate por SSH a tu servidor
Abre tu terminal (o usa un cliente como PuTTY) y conéctate como usuario root:
ssh root@tu-servidor.com
2. Actualiza los repositorios del sistema
Dependiendo de tu sistema operativo (CentOS, Ubuntu, Debian), usa los siguientes comandos:
Para CentOS/RHEL/Fedora:
yum update -y
Para Ubuntu/Debian:
apt update && apt upgrade -y
3. Instala mod_evasive
El módulo está disponible en los repositorios estándar de la mayoría de distribuciones:
CentOS/RHEL:
yum install epel-release -y
yum install mod_evasive -y
Ubuntu/Debian:
apt install libapache2-mod-evasive -y
4. Habilita el módulo en Apache
Una vez instalado, debes activarlo:
CentOS/RHEL:
echo "LoadModule evasive20_module modules/mod_evasive24.so" > /etc/httpd/conf.d/evasive.conf
systemctl restart httpd
Ubuntu/Debian:
a2enmod evasive
systemctl restart apache2
[INFO] En Plesk, a veces Apache se reinicia automáticamente al aplicar cambios. Si ves errores, verifica que el módulo se cargó correctamente con
httpd -M | grep evasiveoapachectl -M | grep evasive.
5. Verifica que el módulo está activo
Ejecuta:
apachectl -M | grep evasive
Deberías ver una línea como evasive20_module (shared). Si no aparece, revisa los pasos anteriores.
Configuración básica de mod_evasive para Plesk
La configuración se almacena en un archivo de texto. Dependiendo de tu sistema:
- CentOS/RHEL:
/etc/httpd/conf.d/evasive.conf - Ubuntu/Debian:
/etc/apache2/mods-available/evasive.conf
Edítalo con un editor como nano o vim:
nano /etc/httpd/conf.d/evasive.conf # Ejemplo CentOS
Parámetros clave que debes ajustar
Dentro del archivo verás algo similar a esto (si no existe, créalo con el contenido básico):
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSLogDir "/var/log/mod_evasive"
</IfModule>
Explicación de cada parámetro:
- DOSHashTableSize: Tamaño de la tabla hash interna. No lo toques a menos que tengas muchos sitios.
- DOSPageCount: Número máximo de peticiones a la misma página (URI) desde una IP en el intervalo definido (DOSPageInterval). Si se supera, se bloquea.
- DOSSiteCount: Número máximo de peticiones a cualquier página del sitio desde una IP en el intervalo DOSSiteInterval.
- DOSPageInterval: Intervalo en segundos para contar las peticiones por página.
- DOSSiteInterval: Intervalo en segundos para contar las peticiones totales al sitio.
- DOSBlockingPeriod: Tiempo en segundos que se bloquea a la IP infractora.
- DOSLogDir: Directorio donde se guardan los logs de bloqueos.
[WARNING] No copies estos números sin pensar. Valores muy bajos pueden bloquear a usuarios reales (por ejemplo, alguien que recarga una página varias veces). Empieza con valores más permisivos y ajusta según los logs.
Configuración recomendada para empezar
Para un sitio web típico con tráfico moderado, prueba estos valores:
<IfModule mod_evasive20.c>
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 1
DOSSiteInterval 2
DOSBlockingPeriod 60
DOSLogDir "/var/log/mod_evasive"
DOSEmailNotify tu-email@dominio.com
</IfModule>
- DOSPageCount=5: Permite 5 peticiones a la misma página en 1 segundo. Si alguien la recarga 6 veces en un segundo, se bloquea.
- DOSSiteCount=100: Permite 100 peticiones totales al sitio en 2 segundos.
- DOSBlockingPeriod=60: Bloquea por 60 segundos.
- DOSEmailNotify: Recibirás un correo cada vez que se bloquee una IP (opcional, pero muy útil para monitorear).
Guarda el archivo y reinicia Apache:
systemctl restart httpd # o apache2
Cómo probar que mod_evasive funciona correctamente
No querrás esperar a un ataque real para saber si está activo. Puedes simular un ataque desde tu propia máquina (con cuidado).
Método 1: Usar ab (Apache Benchmark)
Desde otra terminal (no desde el servidor), ejecuta:
ab -n 1000 -c 100 http://tudominio.com/
Esto envía 1000 peticiones con 100 concurrentes. mod_evasive debería bloquear tu IP después de las primeras decenas de peticiones.
Método 2: Ver los logs de bloqueo
Revisa el directorio de logs que configuraste:
ls /var/log/mod_evasive/
Deberías ver archivos con nombres como dos-192.168.1.100 (la IP bloqueada). Si no aparece, los valores son demasiado permisivos o el módulo no está funcionando.
Método 3: Comprobar en tiempo real con tail
tail -f /var/log/messages | grep mod_evasive
Cuando se bloquee una IP, verás un mensaje como:
mod_evasive[12345]: Blacklisting address 192.168.1.100: possible DoS attack.
[TIP] Si no ves logs, asegúrate de que el directorio
/var/log/mod_evasiveexista y tenga permisos de escritura para el usuario de Apache (normalmenteapacheowww-data).
Solución de problemas comunes (FAQ)
"Después de instalar, mi web dejó de cargar o se vuelve muy lenta"
Esto suele ocurrir porque los umbrales son demasiado bajos. Aumenta los valores de DOSPageCount y DOSSiteCount. Por ejemplo, duplica los números que usas y prueba de nuevo.
"Los logs de mod_evasive están vacíos"
Posibles causas:
- El módulo no está cargado (verifica con
apachectl -M). - El directorio de logs no existe o no tiene permisos.
- Los umbrales son demasiado altos y nunca se alcanzan.
"¿Cómo desbloquear una IP que fue bloqueada por error?"
Si bloqueaste tu propia IP mientras probabas, espera a que termine el DOSBlockingPeriod (60 segundos en nuestro ejemplo). Si necesitas desbloquearla inmediatamente, reinicia Apache:
systemctl restart httpd
Esto borra todas las IPs bloqueadas temporalmente.
"¿mod_evasive protege contra ataques DDoS de capa 7?"
Sí, mod_evasive es excelente contra ataques de capa de aplicación (HTTP flood). No protege contra ataques de capa de red (como SYN flood), para eso necesitas un firewall como CSF o iptables.
Mejores prácticas para una protección completa
- Combina mod_evasive con un firewall: Usa CSF (ConfigServer Security & Firewall) o iptables. mod_evasive puede ejecutar un script para añadir IPs bloqueadas al firewall automáticamente (configura
DOSSystemCommanden el archivo de configuración). - Monitorea los logs: Revisa semanalmente los logs de mod_evasive para detectar patrones de ataque.
- Ajusta según tu tráfico: Si tienes un sitio con mucho tráfico legítimo (como una tienda en oferta), sube los umbrales. Si es un sitio pequeño, bájalos.
- Actualiza Plesk y Apache: Las versiones nuevas corrigen vulnerabilidades que podrían eludir mod_evasive.
Conclusión
mod_evasive es una herramienta gratuita, ligera y muy efectiva para mitigar ataques DDoS básicos en servidores con Plesk. Su instalación es sencilla y, con una configuración cuidadosa, puedes proteger tu sitio web sin afectar a los usuarios reales.
Recuerda: ningún sistema es 100% infalible, pero combinar mod_evasive con un firewall y buenas prácticas de monitoreo te dará una defensa sólida contra los ataques más comunes.
[INFO] Si tu servidor usa Syspanel (anteriormente HestiaCP), el proceso de instalación es similar, pero el puerto de acceso al panel es el 2106. En ese caso, mod_evasive también se instala a nivel de Apache y la configuración es idéntica.
¿Tienes dudas? Déjalas en los comentarios y te ayudaremos a ajustar los parámetros para tu caso específico. ¡Tu web merece estar protegida!
