Ascenso de la guarida / Shutterstock.com
mod_evasive es un módulo de Apache que ayuda a defender su servidor contra ataques de fuerza bruta y de denegación de servicio. La configuración mod_evasive proporciona una red de seguridad para detectar actores maliciosos antes de que comiencen a degradar el rendimiento del 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 determinado. Otras solicitudes se bloquearán durante un período después de que se exceda el límite.
Instalando mod_evasivo
Contenidos
Los pasos de instalación varían según la distribución de su sistema operativo y la versión de Apache. Para la combinación más popular de Apache 2.4 en un sistema basado en Debian, utilice los siguientes pasos. También se proporcionan instrucciones para construir desde la fuente. en el repositorio del proyecto.
apt actualizar apt instalar libapache2-mod-evasivo
Las instalaciones a través de apt habilitarán el módulo automáticamente.
Puede verificar esto usando la Utilidad apachectl:
apachectl -M | grep evasivo
Debería ver el nombre del módulo en pantalla si está activo.
Configuración de ajustes 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. Se puede encontrar una referencia completa en documentos mod_evasive.
Aquí hay un archivo de configuración de ejemplo con varias personalizaciones:
mod_evasive distingue entre solicitudes de una página y solicitudes de una ubicación. 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 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 exceda 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 de sistema arbitrario cuando se alcanza un límite. Esto se puede usar para integrar la herramienta con su propia aplicación o firewall para que pueda registrar un bloqueo en su base de datos. Coloque la configuración de DOSSystemCommand, usando %s para indicar la dirección IP bloqueada:
DOSSystemCommand /app/blacklisted_ip.php –ip=%s
Lista blanca de IP conocidas
mod_evasive admite una lista blanca de direcciones IP conocidas para ayudar en el desarrollo y las pruebas. Los desarrolladores a veces pueden crear grandes volúmenes de solicitudes mientras trabajan en un servidor, ya sea intencionalmente o no.
Utilice la configuración DOSWhiteList para especificar los intervalos de direcciones IP que se ignorarán. No se aplicarán límites a ninguna de estas direcciones.
DOS WhiteList 127.0.0.1 DOS WhiteList 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 que el cliente haya solicitado la misma página anteriormente.
Se produce un bloqueo cuando un URI o un sitio web aparece en la tabla hash de IP con más frecuencia de la permitida. Esto da como resultado que se envíe un código de estado 403 al cliente. El estado es la única respuesta que recibirá el cliente, lo que minimiza los recursos del servidor necesarios para manejar las solicitudes consideradas falsas o maliciosas.
Una vez que se alcanza el límite, el cliente debe esperar el DOSBlockingPeriod especificado antes de realizar otra solicitud exitosa. Si vuelve a intentarlo durante el período de espera, se impondrá un bloqueo aún más prolongado. Otras direcciones IP continúan siendo compatibles como de costumbre y no deben ser interrumpidas por el intento de denegación de servicio.
El módulo puede causar una penalización de 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 deben aumentar la configuración de DOSHashTableSize para permitir una tabla hash en memoria más grande. Esto reduce el tiempo necesario para comparar una IP entrante con sus otras solicitudes recientes.
DOSHashTableTamaño 32768
Probando tu instalación
La mejor manera de probar mod_evasive es lanzar un breve aluvión de solicitudes para ver 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.
la herramienta de línea de comandos ab se puede utilizar para iniciar conexiones masivas:
ab -n 1000 -c 50 http://…
Debe ajustar los parámetros -ne -c para adaptarse a su configuración mod_evasive y al impacto anticipado en el servidor:
- -n: el número total de solicitudes a realizar.
- -c: el número de conexiones simultáneas para abrir.
El ejemplo anterior enviará 1000 solicitudes en lotes de 50.
ab es una poderosa herramienta que puede lanzar un verdadero ataque de denegación de servicio. ¡Asegúrese de haber especificado la dirección correcta del servidor antes de enviar 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 aplican a cada cliente que intenta una conexión. Si el cliente termina superando el umbral, obtendrá un 403 y deberá otorgar un período de bloqueo temporal.
Como administrador, puede optar por recibir alertas por correo electrónico cuando se imponga un nuevo bloqueo. Esto lo mantiene informado sobre posibles ataques y le permite monitorear los falsos positivos. Necesita una pila de correo electrónico en funcionamiento en el servidor: mod_evasive envía utilizando el agente de transferencia de correo electrónico del sistema.
Finalmente, es posible integrar mod_evasive con otras partes de su aplicación ejecutando un comando del sistema siempre que una IP esté en la lista negra. Esta característica se puede usar para marcar a un usuario de la 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.