Evitar ataques DoS en Apache con mod_evasive

21 08 2007

En paginas con consultas pesadas o en servidores que no soporten una minima carga resulta tremendamente facil provocar que el servidor deje de responder lanzando una simple prueba de carga utilizando el comando

ab - apache Benchmark

o cualquier otra herramienta decente para generar trafico HTTP.

Hay una tecnica para evitar ataques a nuestro servidor web Apache usando mod_evasive, un módulo de detección y evasion de ataques DoS. Y esta disponible tanto para Apache 1.x como para 2.x.

Se puede descargar desde aquí.

Lo descomprimimos con tar xzf y lo instalamos en nuestro Apache ejecutando:

apxs -c -a -i mod_evasive20.c - para Apache 2.x

apxs -c -a -i mod_evasive.c - para Apache 1.x

Revisamos que en nuestro httpd.conf exista:

LoadModule evasive20_module /usr/lib/httpd/modules/mod_evasive20.so

Funciona de la siguiente forma: cada usuario que realiza una peticion a un proceso de Apache se almacena en una tabla en memoria. Si ese usuario excede de un cierto numero de peticiones en el intervalo definido, comienza a rechazar peticiones denegandole el acceso (les devuelve un codigo de error 403).

La configuracion es muy sencilla, y se puede situar tanto en un VirtualHost en particular, para un directorio o para el servidor en general.

DOSHashTableSize 3000 - Le indicamos el tamaño de la tabla donde almacenaremos los datos de los clientes.
DOSPageCount 25 - Indica el maximo numero de peticiones en el intervalo definido despues para una URI en concreto.
DOSSiteCount 100 - Lo mismo, pero para todo el sitio.
DOSPageInterval 7 - El intervalo de medida para una URI en concreto.
DOSSiteInterval 7 - El intervalo de medida para todo el sitio.
DOSBlockingPeriod 90 - El tiempo, en segundos, que va a estar bloqueada esa IP.
DOSWhitelist 127.0.0.1 micasa.com - ciertos dominios o IPs a los que no queremos que se deniegue nunca el servicio.

Hay un par de comandos mas que yo personalmente no activo.

DOSEmailNotify - Manda un mail a una cuenta de correo cada vez que se deniega el servicio a una IP.

DOSSystemCommand - cada vez que deneguemos el acceso a una IP, ejecutara un comando en el sistema, como por ejemplo, añadir una linea a iptables.

Fuente: http://vlan7.blogspot.com/


Acciones

Informacion

Deje un comentario

usted puede usar estos tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>