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