Protección anti ataques DoS en un servidor Linux

Internet no tiene normas ni leyes en cuanto a la forma de acceder a los servicios. Es habitual que haya robots de búsqueda que realicen una exploración desmedida de tu sitio y, si tienes muchas páginas publicadas, estos robots irresponsables pueden tirar el servicio. Por otra parte existe la típica fauna de listos que, por diversión, se dedican a tirar servidores y es posible que llegue el buen día en que el tuyo se convierta en un objetivo.

Existen varias formas de minimizar daños ante este tipo de ataques. Una de ellas es limitando el número de procesos Apache y otra los módulos que expulsan del servidor a los usuarios con un comportamiento poco cívico.

El módulo que vamos a emplear se llama Evasive y sirve para evitar grandes perjuicios ante estas situaciones. Para instalarlo escribimos las siguientes órdenes como root:

apt-get update
apt-get install libapache2-mod-evasive
mkdir -p /var/log/apache2/evasive
chown -R www-data:root /var/log/apache2/evasive

Proceso de instalación del mod Evasive

Con las dos primeras órdenes instalamos el módulo, con la tercera creamos una carpeta donde se almacenarán los registros de actividad y con la cuarta damos los permisos a dicha carpeta para que Apache pueda escribir en ella.

Cada vez que nos ataquen, en la carpeta de registros ‘/var/log/apache2/evasive’ se creará un archivo de texto cuyo nombre será la IP atacante. Dentro del archivo veremos un número que indica el PID del proceso Apache que se ha matado para neutralizar el ataque.

Una vez instalado el módulo hay que configurarlo, por lo que debemos editar el archivo de texto que hay en /etc/apache2/mods-available/mod-evasive.load usando como root la siguiente orden:

nano /etc/apache2/mods-available/mod-evasive.load

Entonces nos encontraremos con un archivo vacío donde debemos añadir:

LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
 DOSHashTableSize 2048
 DOSPageCount 20
 DOSSiteCount 30
 DOSPageInterval 1.0
 DOSSiteInterval 1.0
 DOSBlockingPeriod 10.0
 DOSLogDir "/var/log/apache2/evasive"
 DOSEmailNotify correo@servidor

El significado de los distintos parámetros es el siguiente:
· DOSHashTableSize: tamaño de la lista de IP que se comprueba.
· DOSPageCount: número máximo de peticiones para una misma página.
· DOSSiteCount número máximo de peticiones desde una IP determinada a cualquier página del servidor.
· DOSPageInterval: Tiempo en segundos en el que se cuentan intentos de acceso a una página en concreto por un mismo cliente.
· DOSSiteInterval: Tiempo en segundos en el que se cuentan intentos de acceso a cualquier página desde una IP.
· DOSBlockingPeriod: Tiempo en segundos en el que el atacante no podrá acceder al sitio.

Una vez que lo tenemos todo configurado, deberás reiniciar apache usando la siguiente linea como root:

/etc/init.d/apache2 restart