Mod_evasive es un módulo de Apache que proporciona una acción evasiva en caso de un ataque HTTP DoS o DDoS o un ataque de fuerza bruta. mod_evasive actualmente informa actividad maliciosa a través de correo electrónico y syslog. El módulo mod_evasive funciona creando una tabla hash dinámica interna de direcciones IP y URI y denegando cualquier dirección IP única de cualquiera de las siguientes condiciones:
- Solicitar la misma página más de unas pocas veces por segundo
- Hacer más de 50 solicitudes simultáneas en el mismo niño por segundo
- Hacer cualquier solicitud mientras está temporalmente en la lista negra (en una lista de bloqueo)
En este tutorial, discutiré cómo instalar, configurar y usar mod_evasive en su servidor Apache. Este tutorial utiliza un servidor Ubuntu 14.04.
Instalando mod_evasive
Primero, asegúrese de que el servidor Apache esté instalado y funcionando.
A continuación, puede instalar el módulo mod_evasive ejecutando:
sudo apt-get install libapache2-mod-evasive
Después de instalar mod_evasive, puede verificar este módulo ejecutando los siguientes comandos:
sudo apachectl -M | grep evasive
Si mod_evasive está habilitado, verá el siguiente resultado:
evasive20_module (shared)
Configurar Mod_evasive
El módulo mod_evasive lee su configuración desde «/etc/apache2/mods-enabled/evasive.conf». Puede personalizar fácilmente el módulo mod_evasive a través del archivo de configuración «evasive.conf». De forma predeterminada, las opciones de configuración de mod_evasive están deshabilitadas, por lo que deberá habilitarlas primero. Para hacer esto, edite el archivo “evasive.conf”:
sudo nano /etc/apache2/mods-enabled/evasive.conf
Remover #
de las siguientes lineas:
DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 DOSEmailNotify mail@yourdomain.com DOSLogDir "/var/log/apache2/"
Guarde el archivo y reinicie Apache para que los cambios surtan efecto:
sudo /etc/init.d/apache2 restart
Puede cambiar los valores anteriores de acuerdo con la cantidad y el tipo de tráfico que su servidor web necesita manejar.
DOSHashTableSize :
Esta directiva especifica cómo mod_evasive realiza un seguimiento de quién accede a qué. Aumentar este número proporcionará una búsqueda más rápida de los sitios que el cliente ha visitado en el pasado.
DOSPageCount :
Esta directiva especifica cuántas solicitudes idénticas a un URI específico puede realizar un visitante durante el intervalo DOSPageInterval.
DOSSiteCount :
Esto es similar a DOSPageCount pero corresponde a cuántas solicitudes en general puede hacer un visitante a su sitio durante el intervalo DOSSiteInterval.
DOSBlockingPeriod :
Si un visitante excede los límites establecidos por DOSSPageCount o DOSSiteCount, su IP será bloqueada durante el período de tiempo de DOSBlockingPeriod. Durante este intervalo, recibirá un error 403 (Prohibido).
DOSEmailNotify :
Se enviará un correo electrónico a la dirección de correo electrónico especificada siempre que una dirección IP esté en la lista negra.
DOSLogDir :
Esta directiva especifica la ubicación del directorio de registro.
Probando Mod_evasive
Ahora es el momento de probar si el módulo mod_evasive funciona o no. Puede hacerlo utilizando un script de perl «test.pl» ubicado en el directorio «/usr/share/doc/libapache2-mod-evasive/examples/».
Puede ejecutar el script ejecutando el siguiente comando:
sudo perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
Debería ver el siguiente resultado:
El script realiza 100 solicitudes a su servidor web. El código de respuesta 403 indica que el servidor web deniega el acceso.
Conclusión
mod_evasive es una herramienta muy importante para asegurar un servidor web Apache contra varias amenazas. Puede experimentar con mod_evasive y diferentes opciones en un entorno de prueba. Si tiene alguna pregunta, puede escribirla en el cuadro de comentarios a continuación.