¡Defiéndete de los ataques DoS a nivel de aplicación TCP/IP con mod_evasive de Apache!

Los ataques de denegación de servicio (DoS, del inglés Denial of Service) generalmente consisten en la pérdida de conexión del servidor debido a un consumo insostenible de ancho de banda.

Imagina por ejemplo que un cracker sobrecarga tu server enviando un montón de peticiones seguidas, o que una botnet envía simultáneamente 1000 robots maliciosos a tu máquina, planificando contra ti un terrible ataque DDoS (ataque de denegación de servicio distribuido, del inglés Distributed Denial of Service) que nunca habías imaginado. Pues bien, estos ataques pueden resolverse en diferentes niveles de la pila TCP; el post de hoy explica cómo añadir una capa de seguridad a tu sistema a nivel de aplicación gracias al módulo mod_evasive de Apache.

Pila TCP/IP

Una aplicación en el modelo TCP/IP

¿Qué es mod_evasive?

mod_evasive es un módulo Apache que permite tomar algunas decisiones en caso de ataques HTTP DoS y DDoS.

Instalación de mod_evasive

Descargamos el módulo de la página oficial:

Lo descomprimimos:

Y lo compilamos con apxs:

Fíjate que yo he utilizado apxs2 para compilar mod_evasive. apxs (APache eXtenSion tool) es una herramienta para construir e instalar extensiones modulares en Apache. Este mecanismo permite construir objetos dinámicos compartidos (DSO, Dynamic Shared Object) a partir de un determinado código fuente para poder cargarlos en Apache en tiempo de ejecución mediante la directiva LoadModule de mod_so.

Por cierto, si no tienes apxs prueba a instalar esto:

¡Tras ejecutar apxs2, el módulo evasive20 ya estará en Apache! Puedes comprobarlo tú mism@ haciendo lo siguiente:

Configuración de mod_evasive

Con el módulo instalado ya podemos programar el comportamiento del servidor para cuando recibe peticiones a nuestro juicio sospechosas. A continuación voy a poner el típico ejemplo de configuración que de buen seguro encontrarás en otros websites:

Ahora voy a comentar un poco por encima las directivas Apache utilizadas en este ejemplo:

DOSHashTableSize. Este es el tamaño de la tabla hash dinámica que almacena las direcciones IP y los URI.

DOSPageCount. Número máximo de solicitudes del mismo URI en los segundos especificados en DOSPageInterval (intervalo de página). Cuando se excede este valor se añade la dirección IP del cliente a la lista de bloqueo.

DOSSiteCount. Número máximo de solicitudes del mismo objeto en los segundos especificados en DOSSiteInterval. Cuando se excede este valor se añade la dirección IP del cliente a la lista de bloqueo.

DOSPageInterval. Intervalo de página en segundos. Este valor trabaja en conjunción con DOSPageCount. De este modo Apache puede bloquear las IPs que solicitan DOSPageCount URIs en DOSPageInterval segundos. En el ejemplo anterior, que tiene DOSPageCount a 2 y DOSPageInterval a 1 se bloquearán los ordenadores que solicitan más de dos páginas web en un segundo. O sea, dos páginas por segundo.

DOSSiteInterval. Intervalo de site en segundos. Este valor trabaja en conjunción con DOSSiteCount para que Apache puede bloquear las IPs que solicitan DOSSiteCount objetos (imágenes, css, etc.) en DOSSiteInterval segundos. En el ejemplo anterior se bloquearán los ordenadores que solicitan más de 50 objetos en un segundo.

DOSBlockingPeriod. Cantidad de tiempo (en segundos) que un cliente está bloqueado cuando se añade a la lista de bloqueo. Durante este tiempo todas las solicitudes del cliente obtienen un mensaje 403 (Prohibido).

DOSEmailNotify Si se establece este valor, entonces Apache envía un email a la dirección de correo especificada cada vez que se añade una IP a la lista negra.

Si necesitas más información sobre este tema puedes consultar este enlace o ir a Jonathan Zdziarski’s Domain.

0 comentarios

¿Me dejas un comentario? ¡Gracias!

Deja un comentario

Los campos obligatorios están marcados con *