Cómo configurar mod_evasive para Apache DDoS Protection

Contenidos

Gráfico que muestra el símbolo de un candado con colores y gráficos técnicos

mod_evasive es un módulo de Apache que ayuda a defender su servidor contra la fuerza bruta y los ataques de denegación de servicio. La configuración de mod_evasive le brinda una red de seguridad para atrapar a los actores maliciosos antes de que puedan comenzar a degradar el rendimiento de su servidor.

El módulo viene con varios parámetros de configuración que le permiten definir la cantidad de solicitudes simultáneas que un cliente puede realizar en un período de tiempo establecido. Las solicitudes adicionales se bloquearán durante un período después de que se exceda el límite.

Instalación de mod_evasive

Los pasos de instalación varían según la distribución de su sistema operativo y la versión de Apache. Para obtener la combinación más popular de Apache 2.4 en un sistema basado en Debian, siga los siguientes pasos. También se proporcionan instrucciones para construir desde la fuente. en el repositorio del proyecto.

apt update
apt install libapache2-mod-evasive

Instalaciones vía apt habilitará el módulo automáticamente.

Puede verificar esto usando el apachectl utilidad:

apachectl -M | grep evasive

Debería ver el nombre del módulo mostrado si está activo.

Configurar opciones de bloqueo

El archivo de configuración mod_evasive generalmente se puede encontrar en /etc/apache2/mods-enabled/evasive.conf. Utiliza el mismo formato que otros archivos de configuración de Apache. Puede encontrar una referencia completa en el mod_evasive docs.

A continuación, se muestra un archivo de configuración de ejemplo con varias personalizaciones:

<IfModule mod_evasive20.c>
    DOSPageCount 5
    DOSSiteCount 10

    DOSPageInterval 1
    DOSSiteInterval 2

    DOSBlockingPeriod 300

    DOSEmailNotify [email protected]
</IfModule>

mod_evasive distingue entre solicitudes de página y solicitudes de sitio. Puede configurar estos dos factores de bloqueo de forma independiente. Este ejemplo bloqueará a los clientes que soliciten el mismo URI cinco veces en un intervalo de un segundo. Además, se impondrá un bloqueo a los clientes que soliciten más de diez URI de un solo sitio en un intervalo de dos segundos.

Cuando se excede cualquiera de los límites, el cliente no podrá realizar más solicitudes durante un período de cinco minutos (300 segundos). mod_evasive enviará un correo electrónico a [email protected] notificando que la dirección IP ha sido bloqueada.

mod_evasive también admite la ejecución de un comando del sistema arbitrario cuando se alcanza un límite. Esto se puede utilizar para integrar la herramienta con su propia aplicación o firewall para que pueda registrar un bloque en su base de datos. Selecciona el DOSSystemCommand ajuste, usando %s para indicar la dirección IP bloqueada:

DOSSystemCommand /app/blacklisted_ip.php  --ip=%s

Incluir direcciones IP conocidas en la lista blanca

mod_evasive admite una lista blanca de IP conocidas para ayudar al desarrollo y las pruebas. En ocasiones, los desarrolladores pueden crear grandes volúmenes de solicitudes mientras trabajan en un servidor, ya sea de forma intencionada o no.

Utilizar el DOSWhiteList configuración para especificar rangos de direcciones IP para ignorar. No se aplicarán límites a ninguna de estas direcciones.

DOSWhiteList 127.0.0.1
DOSWhiteList 192.168.0.*

¿Como funciona?

mod_evasive funciona manteniendo una tabla hash de direcciones IP y URI en una lista negra temporal. La dirección IP y el URI se codifican para crear una clave que se puede usar para verificar si el cliente ha solicitado la misma página anteriormente.

Un bloqueo ocurre cuando un URI o un sitio aparece en la tabla hash de la IP con mayor frecuencia de la permitida. Esto da como resultado una 403 el código de estado se envía de vuelta al cliente. El estado es la única respuesta que recibirá el cliente, lo que minimiza los recursos del servidor necesarios para manejar las solicitudes que se consideran falsas o maliciosas.

Una vez que se alcanza un límite, el cliente debe esperar el tiempo especificado. DOSBlockingPeriod antes de que pueda realizar otra solicitud con éxito. Si vuelve a intentarlo durante el período de espera, se impondrá un bloqueo aún más largo. Otras direcciones IP continúan admitiéndose como de costumbre y no deberían experimentar interrupciones por el intento de denegación de servicio.

El módulo puede causar una penalización del rendimiento en servidores muy activos. Necesita registrar cada solicitud y verificar si la IP ha sido bloqueada o necesita ser bloqueada. Los servidores ocupados con suficiente memoria deberían aumentar la DOSHashTableSize para permitir una tabla hash en memoria más grande. Esto reduce el tiempo necesario para buscar una IP entrante frente a sus otras solicitudes recientes.

DOSHashTableSize 32768

Prueba de su instalación

La mejor forma de probar mod_evasive es lanzar una breve avalancha de solicitudes para comprobar cómo responde su servidor. Con mod_evasive habilitado correctamente, debería comenzar a ver rápidamente 403 y una alerta por correo electrónico si está configurado.

los ab La herramienta de línea de comandos se puede utilizar para iniciar conexiones en masa:

ab -n 1000 -c 50 http://...

Deberías ajustar el -n y -c parámetros para adaptarse a su configuración mod_evasive y al impacto anticipado del servidor:

  • -n – El número total de solicitudes a realizar.
  • -c – El número de conexiones simultáneas para abrir.

El ejemplo anterior enviará 1,000 solicitudes en lotes de 50.

ab es una herramienta poderosa que podría iniciar un ataque genuino de denegación de servicio. ¡Asegúrese doblemente de haber especificado la dirección correcta del servidor antes de enviar las solicitudes!

Resumen

mod_evasive es un módulo simple pero efectivo para evitar que los ataques de fuerza bruta afecten el funcionamiento de su servidor. Puede configurar límites por página y por sitio que se apliquen a cada cliente que intente conectarse. Si el cliente termina excediendo el límite, recibirá un 403 y deberá ceder a un período de bloqueo temporal.

Como administrador, puede optar por recibir alertas por correo electrónico cuando se impone un nuevo bloqueo. Esto lo mantiene informado de posibles ataques y le permite monitorear los falsos positivos. Necesita una pila de correo electrónico que funcione en el servidor: mod_evasive envía utilizando el agente de transferencia de correo del sistema.

Finalmente, es posible integrar mod_evasive con otras partes de su aplicación ejecutando un comando del sistema cada vez que una IP está en la lista negra. Esta capacidad podría usarse para marcar un usuario de base de datos, crear una alerta en una herramienta de monitoreo de terceros o transmitir el bloqueo a sus otros servidores para proteger partes adicionales de su infraestructura.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.