Guía Completa para Configurar y Utilizar Mod_evasive en Apache

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Mod_evasive es un módulo para Apache que ayuda a prevenir ataques de denegación de servicio (DoS) y de fuerza bruta al detectar y bloquear múltiples solicitudes desde la misma dirección IP en un corto período de tiempo. A continuación, te explico cómo instalar y configurar Mod_evasive en tu servidor Apache, paso a paso.

Paso 1: Instalación de Mod_evasive

En Ubuntu/Debian

Primero, actualiza el sistema y luego instala el módulo:

sudo apt-get update
sudo apt-get install libapache2-mod-evasive

En CentOS/RHEL

Habilita el repositorio EPEL e instala Mod_evasive:

sudo yum install epel-release
sudo yum install mod_evasive

Paso 2: Configuración de Mod_evasive

Crear el Archivo de Configuración

Crea o edita el archivo de configuración para Mod_evasive.

En Ubuntu/Debian

sudo nano /etc/apache2/mods-available/evasive.conf

En CentOS/RHEL

sudo nano /etc/httpd/conf.d/mod_evasive.conf

Configuración Básica

Añade las siguientes líneas al archivo de configuración para establecer los parámetros de Mod_evasive:

<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSEmailNotify [email protected]
DOSSystemCommand "su - someuser -c '/sbin/... %s ...'"
DOSLogDir "/var/log/mod_evasive"
</IfModule>

Descripción de los Parámetros

  • DOSHashTableSize: Tamaño de la tabla hash utilizada por Mod_evasive. Un tamaño mayor puede mejorar el rendimiento.
  • DOSPageCount: Número máximo de solicitudes permitidas a la misma página en el intervalo definido por DOSPageInterval.
  • DOSSiteCount: Número máximo de solicitudes permitidas al mismo sitio en el intervalo definido por DOSSiteInterval.
  • DOSPageInterval y DOSSiteInterval: Intervalo de tiempo en segundos para DOSPageCount y DOSSiteCount, respectivamente.
  • DOSBlockingPeriod: Tiempo en segundos que una dirección IP será bloqueada si excede los límites.
  • DOSEmailNotify: Dirección de correo electrónico donde se enviarán notificaciones de ataques.
  • DOSSystemCommand: Comando del sistema que se ejecutará cuando se detecte un ataque.
  • DOSLogDir: Directorio donde se guardarán los registros de Mod_evasive.

Paso 3: Creación del Directorio de Registro

Asegúrate de crear el directorio de registro especificado en DOSLogDir y asignar los permisos adecuados:

sudo mkdir /var/log/mod_evasive
sudo chown -R www-data:www-data /var/log/mod_evasive

Paso 4: Habilitar el Módulo y Reiniciar Apache

En Ubuntu/Debian

Habilita el módulo Mod_evasive y reinicia Apache:

sudo a2enmod evasive
sudo systemctl restart apache2

En CentOS/RHEL

Reinicia el servicio Apache para aplicar los cambios:

sudo systemctl restart httpd

Paso 5: Verificación de Funcionamiento

Para verificar que Mod_evasive está funcionando correctamente, puedes realizar una prueba con un script en Perl que simula múltiples solicitudes:

Crear el Script de Prueba

Crea un archivo llamado test_evasive.pl con el siguiente contenido:

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
for (my $i=0; $i<100; $i++) {
my $response = $ua->get('http://tu-servidor-url');
print $response->status_line . "\n";
}

Ejecutar el Script de Prueba

Haz el archivo ejecutable y ejecútalo:

chmod +x test_evasive.pl
./test_evasive.pl

Si Mod_evasive está configurado correctamente, debería bloquear las solicitudes repetitivas y verás respuestas de error HTTP 403 Forbidden.

Conclusión

Mod_evasive es una herramienta eficaz para mitigar ataques DoS y de fuerza bruta en servidores Apache. Con la configuración adecuada, puedes proteger tu servidor contra tráfico malicioso, mejorando así la seguridad y estabilidad de tus servicios web.