Introducción
El módulo mod_evasive es un módulo de servicios web de Apache que ayuda a que su servidor siga funcionando en caso de un ataque. Un tipo común de ciberataque se presenta en forma de denegación de servicio (DoS), denegación de servicio distribuida (DDoS) o fuerza bruta que intenta abrumar su seguridad.
La naturaleza de estos ataques es utilizar varias computadoras diferentes para realizar solicitudes repetidas contra su servidor. Esto hace que el servidor se quede sin potencia de procesamiento, memoria, ancho de banda de red y deje de responder.
Esta guía lo guiará a través de la configuración e instalación de mod_evasive para protegerse contra DoS y DDoS.
Requisitos previos
- La pila LAMP (Linux, Apache, MySQL, PHP) instalada y configurada
- Acceso a una cuenta de usuario con sudo o privilegios de root
- Un servidor de correo en funcionamiento (para alertas por correo electrónico)
¿Cómo funciona Apache mod_evasive?
El mod_evasive Apache La utilidad funciona monitoreando las solicitudes entrantes del servidor. La herramienta también detecta actividad sospechosa de una IP, como:
- Varias solicitudes para la misma página en un segundo.
- Más de 50 solicitudes simultáneas por segundo.
- Solicitudes realizadas mientras la IP está temporalmente en la lista negra.
El módulo envía un error 403 si ocurre alguna de estas cosas. De forma predeterminada, esto también incluye un período de espera de 10 segundos en la lista negra. Si la dirección IP que realiza la solicitud vuelve a intentarlo en esa ventana de 10 segundos, el tiempo de espera aumenta.
mod_evasivo lo ayuda a defenderse contra este tipo de ataques a través de la detección y administración de redes.
Pasos para instalar la utilidad Apache mod_evasive
Paso 1:Instale la utilidad del servidor web Apache
Antes de instalar la utilidad, actualice el repositorio de paquetes con el comando para su distribución de Linux:
Debian / Ubuntu :
sudo apt update
RedHat / Cent OS :
sudo yum update
Permita que el sistema actualice sus listados de software.
Luego, instale una utilidad auxiliar:
sudo apt install apache2-utils
RedHat / CentOS :
sudo yum install httpd-devel
La sección final de la salida se ve así:
Esta utilidad es necesaria para la instalación de mod_evasive .
Paso 2:Instalar mod_evasive
Debian/Ubuntu
Para instalar el mod_evasive módulo en Debian/Ubuntu, ingrese lo siguiente:
sudo apt install libapache2-mod-evasive
Cuando reciba un aviso, seleccione Aceptar. y elige tu configuración.
Si no está seguro, seleccione Sin configuración. o Solo local.
CentOS/RedHat
Para instalar el módulo mod_evasive en RedHat / CentOS:
Agregue el repositorio EPEL:
sudo yum install epel-release
Y luego, ingrese:
sudo yum install mod_evasive
Permita que el proceso se complete.
Paso 3:Configurar mod_evasivo
Como la mayoría de los paquetes de software de Linux, mod_evasive está controlado por un archivo de configuración. Realice los siguientes cambios en el archivo de configuración como primer paso para prevenir ataques DDoS:
1. Utilice un editor de texto de su elección con los siguientes comandos:
Debian / Ubuntu :
sudo nano /etc/apache2/mods-enabled/evasive.conf
RedHat / Cent OS :
sudo nano /etc/httpd/conf.d/mod_evasive.conf
2. Busque la siguiente entrada:
#DOSEmailNotify [email protected]
Eliminar el #
firme, luego reemplace [email protected]
con su dirección de correo electrónico real. Use un correo electrónico que revise regularmente:aquí es donde la herramienta enviará alertas.
3. Elimine la etiqueta de comentario de las siguientes entradas, para que el archivo de registro tenga el siguiente aspecto:
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify [email protected]
DOSLogDir "/var/log/apache2/"
4. Guarde el archivo y salga. Vuelva a cargar el servicio de Apache ingresando lo siguiente:
Debian / Ubuntu :
sudo systemctl reload apache2
RedHat / Cent OS :
sudo systemctl restart httpd.service
Prueba mod_evasivo
Ahora, verifiquemos que el módulo funcione correctamente.
En este ejemplo, use test.pl script para probar mod_evasive.
El script se encuentra en:/usr/share/doc/libapache2-mod-evasive/examples/test.pl .
Use el siguiente comando para ejecutar el script:
perl /usr/share/doc/libapache2-mod-evasive/examples/test.pl
La salida debería devolver este mensaje:
Parámetros y configuraciones
Hay muchos parámetros mod_evasive que puede configurar:
DOSSystemCommand
: En primer lugar, es posible que haya notado que esta opción se dejó deshabilitada como comentario. Este comando le permite especificar un comando del sistema que se ejecutará cuando se agregue una dirección IP a la lista negra. Puede usar esto para ejecutar un comando para agregar una dirección IP a un firewall o filtro de IP.DOSHashTableSize
: Aumente esto para servidores web más ocupados. Esta configuración asigna espacio para ejecutar las operaciones de búsqueda. Aumentar el tamaño mejora la velocidad a costa de la memoria.DOSPageCount
: El número de solicitudes de una página individual que desencadena la inclusión en la lista negra. Se establece en 2, que es bajo (y agresivo); aumente este valor para reducir los falsos positivos.DOSSiteCount
: El número total de solicitudes para el mismo sitio por la misma dirección IP. De forma predeterminada, se establece en 50. Puede aumentar a 100 para reducir los falsos positivos.DOSPageInterval
: Número de segundos paraDOSPageCount
. De forma predeterminada, se establece en 1 segundo. Eso significa que si no lo cambia, solicitar 2 páginas en 1 segundo incluirá temporalmente una dirección IP en la lista negra.DOSSiteInterval
: Similar aDOSPageInterval
, esta opción especifica el número de segundos queDOSSiteCount
monitores De forma predeterminada, se establece en 1 segundo. Eso significa que si una sola dirección IP solicita 50 recursos en el mismo sitio web en un solo segundo, se incluirá temporalmente en la lista negra.DOSBlockingPeriod
: La cantidad de tiempo que una dirección IP permanece en la lista negra. Establecido en 10 segundos de forma predeterminada, puede cambiarlo a cualquier valor que desee. Aumente este valor para mantener las direcciones IP bloqueadas en tiempo de espera durante un período más prolongado.DOSLogDir
: De forma predeterminada, está configurado para escribir registros en /var/log/mod_evasive. Estos registros se pueden revisar más tarde para evaluar el comportamiento del cliente.
Puede crear un nuevo directorio para guardar estos registros de acceso de Apache; asegúrese de cambiar el propietario a Apache, luego actualice la ubicación en esta entrada:
sudo mkdir /var/log/apache/mod_evasive
sudo chown -R apache:apache /var/log/apache/mod_evasive
sudo nano /etc/apache2/mods-enabled/evasive.conf
DOSLogDir "/var/log/apache/mod_evasive"
Incluir direcciones IP en la lista blanca: Esta opción no está incluida en evasive.conf f archivo por defecto.
Abra el archivo nuevamente para editarlo, luego agregue la siguiente línea:
DOSWhitelist 192.168.0.13
DOSWhitelist 192.168.0.*
Sustituya la dirección IP por la que desea incluir en la lista blanca. Además, debe enumerar solo una entrada por línea . Por lo general, esto se usa con un cliente confiable que intercambia una gran cantidad de datos con su sitio web.
Esta herramienta es buena para detectar bots y scripts. Si hay bots o secuencias de comandos que desea permitir, puede incluirlos en la lista blanca para evitar que estos bots y secuencias de comandos activen una acción de lista negra.
Asegúrese de guardar el archivo y salir. Luego, vuelva a cargar su servicio Apache antes de probar cualquiera de estas opciones.