Configurar mod_evasive en Ubuntu Server

Mod_evasive es un módulo de apache que sirve para mitigar ataques de denegación de servicio. Para ello, utiliza una tabla hash para registrar los accesos ip y bloquear direcciones en caso de que se detecte abuso. En este manual rápido aprenderás a instalar y configurar mod_evasive en Ubuntu Server.

Para instalarlo por paquetería en Ubuntu Server:

 apt-get install libapache2-mod-evasive

El módulo se activará solo (si no lo hace, usaremos a2enmod).

Podemos configurar el módulo editando el fichero /etc/apache2/mods-available/evasive.conf, aunque la mayoría de sus valores por defecto no necesitan modificación:

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify email@yourdomain.com
DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
DOSLogDir "/var/log/mod_evasive"
</IfModule>
  • DOSHashTableSize: especifica cómo mod_evasive realiza un seguimiento de quién accede a qué. Aumentar el número mejora el rendimiento, pero también consume más memoria.
  • DOSPageCount: especifica el umbral para el número de solicitudes para la misma página por intervalo de página.
  • DOSSiteCount: especifica el umbral para el número total de solicitudes de cualquier objeto por el mismo cliente en el mismo escucha por intervalo de sitio.
  • DOSPageInterval: el intervalo utilizado en el umbral de recuento de páginas.
  • DOSSiteInterval: el intervalo utilizado en el umbral de recuento del sitio.
  • DOSBlockingPeriod: especifica la cantidad de tiempo (en segundos) que una IP está bloqueada.
  • DOSEmailNotify: especifica la dirección de correo electrónico de notificación si la dirección IP se incluye en la lista negra.
  • DOSLogDir: especifica el directorio de registro.

Una vez configurado a nuestro gusto, hay que reiniciar apache:

  systemctl restart apache2 

Testear mod_evasive

En primer lugar usaremos el script de prueba incluído en la instalación, pero para mod_evasive en Ubuntu Server habrá que hacerle una modificacion antes. Editamos /usr/share/doc/libapache2-mod-evasive/examples/test.pl y modificamos la línea que empieza por print $SOCKET,

ANTES
print $SOCKET "GET /?$_ HTTP/1.0\n\n";
DESPUES
print $SOCKET "GET /?$_ HTTP/1.0\r\nHost: 127.0.0.1\r\n\r\n"

Ya podemos ejecutar el script:

perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl

Si funciona correctamente, debería devolver muchas salidas como esta:

HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden

Otra forma de testear más realista es con Siege , pero ojo desde donde hacemos las pruebas porque puede bloquearnos nuestra propia ip y dejarnos sin acceso al servidor.

Si algo no te funciona o tienes alguna duda puedes comentar o contactar, y desde NSS intentaremos ayudarte.

Fuentes: Linode, Rapid7

Espacio para publicidad
[Total:2    Promedio:5/5]

NSS

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *