Mod Evasive – Apache

Introducción

Hoy vamos a trabajar con el módulo de Apache Mod Evasive, el cual nos permitirá controlar el número de peticiones por IP.

Esto nos permite tener controlado si existe algún tipo de ataque de alta capacidad (DDOS y Brute Force) el cual nos puede saturar de conexiones los servidores Apache (frontales web).

Instalando Mod Evasive

Para empezar a trabajar:

  • Ubuntu 18.04
  • Apache instalado

Por lo tanto para todos los sistemas basados en Debian será compatible esta instalación.

 apt-get install libapache2-mod-evasive

Esto nos instalará el módulo en nuestro servidor Apache y además lo habilitará automáticamente.

Tened en cuenta, aunque lo haya habilitado, todas las configuraciones por defecto están comentadas.

Configurando Mod Evasive

Por defecto la configuración, una vez habilitado, se encuentra en el siguiente fichero:

/etc/apache2/mods-enabled/evasive.conf

La configuración por defecto:

<IfModule mod_evasive20.c>
 DOSHashTableSize 3097
 DOSPageCount     20
 DOSSiteCount     100
 DOSPageInterval  1
 DOSSiteInterval  1
 DOSBlockingPeriod   10
 
 DOSEmailNotify   xxx@ejemplo.com
 #DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
 DOSLogDir        "/var/log/mod_evasive"
</IfModule>

Explicación de los parámetros:

DOSHashTableSize: Si se baja la cantidad consume más recursos y revisa con mayor frecuencia. Sin embargo si tenemos el servidor muy sobrecargado se recomienda subir este parámetro para que no penalice la carga.

DOSPageCount: Cantidad de veces que ha accedido a la misma página esa IP en el intervalo definido por DOSPageInterval. Generalmente suele ser de 1 segundo.

DOSSiteCount: Numero de peticiones a la misma página web por IP por el intervalo definido por DOSSiteInterval.

DOSPageInterval: Es el intervalo en segundos que toma de referencia DOSPageCount. Por defecto es de 1 segundo.

DOSSiteInterval: Es el intervalo en segundos que toma de referencia DOSSiteCount. Por defecto es de 1 segundo.

DOSBlockingPeriod: La cantidad de tiempo en segundos en la que la persona será bloqueado. Por regla general es de 10 segundos. Este valor no hace falta aumentarlo tanto ya que cada vez que se recibe el ataque, si está bloqueado, el contador se reinicia a 0. Esto sigue el principio de que si es un ataque DDOS es evidente que el ataque suele ser continuado.

DOSEmailNotify: Se enviará un email por cada IP que ha sido bloqueada. Existe un mecanismo en /tmp que previene continuos envíos de email de la misma IP.

DOSSystemCommand: Esto es un comando que podemos ejecutar en el momento que la IP es incluida en una lista negra. Esto es bueno para cuando usamos un firewall externo o similar.

DOSLogDir: Directorio donde guardará los registros de la IP que bloquea.

DOSWhitelist: Si queremos meter en lista blanca, podemos poner una IP o Rango. Ejemplo:

DOSWhitelist 127.0.0.1
DOSWhitelist 127.0.0.*

Es decir no sigue la notificación CDIR.

Recordamos que después de aplicar la configuración debemos hacer un reload en Apache:

service apache2 reload

Probando Mod Evasive

En teoría existe un script que permite el testeo de esta configuración para que nos bloquee desde localhost. Pero cuando realizamos las pruebas directamente no nos funcionaba (nos daba BAD REQUEST).

La alternativa que hemos buscado es usar “ab” (Apache Benchmark) el cual nos permite realizar peticiones para ser bloqueados.

Por lo tanto para probar hemos ejecutado el siguiente comando:

 ab -n 300 -c 10 http://sitio-ejemplo.com/

-n: Indica la cantidad de peticiones.

-c: Cantidad de personas realizando las peticiones (concurrency).

Con este ejemplo nos bloqueará Mod Evasive enviándonos un correo si lo tenemos bien configurado en el servidor.

Conclusión

Ya sabéis que mientras mayor seguridad establezcamos en nuestro sistema mejor dormiremos por la noche.

Recordad que podéis visitar la categoría SEGURIDAD, para obtener otros artículos relacionados.

Si tenéis alguna duda, podéis comentar la entrada e intentaré resolverlas.