viernes, 29 de noviembre de 2013

Incrementar la seguridad de tu servidor (Tercera parte) (Fail2ban)

Hola de nuevo,

después de la primera parte y de la segunda parte, vamos a explicar cómo incrementar la seguridad de nuestro servidor evitando que nos hagan un ataque de fuerza bruta (o de diccionario) a servicios que requieran un usuario y una contraseña.


Cuando hablamos de un ataque de fuerza bruta nos estamos refiriendo a que alguien empiece a probar usuarios y contraseñas en algún servicio que tengamos en nuestro servidor. Por ejemplo, en el servicio SSH, que nos pide usuario y contraseña, alguien podría empezar a probar contraseñas para el usuario "root", empezaría por aaaaaaaa, aaaaaaab, aaaaaaac, etc. Evidentemente, esto se realiza de forma automática mediante un script que va probando distintas contraseñas hasta que da con la nuestra.

De forma análoga tenemos el ataque de diccionario, en el que se prueban contraseñas de un diccionario de contraseñas, el cual contiene las contraseñas más habituales, por ejemplo "12345678", "qwertyuio", "god","password", etc.

Servicios que sean vulnerables a este tipo de ataques son SSH, apache, ftp, wordpress, etc. En general, cualquier servicio que nos pida un usuario y una contraseña.

Fail2ban es una herramienta que nos protege de este tipo de ataques, bloqueando la IP del cliente que nos está haciendo dicho ataque cuando llega a un número de intentos determinados que podemos configurar.

Es decir, podemos poner que como máximo una misma IP pueda equivocarse tres veces poniendo la contraseña de SSH, o la del admin del wordpress, o la de FTP, y al intentar una cuarta vez ya no podría conectar porque estaría bloqueado por el firewall de nuestro servidor.
Que se bloquee a nivel de firewall nos da dos ventajas:
- Que no puede seguir realizando el ataque
- Y que no nos consumirá tanto ancho de banda, ya que ni siquiera puede establecer la conexión para intentar introducir el usuario y la contraseña.
Fail2ban lo que hace es leer los ficheros de log de los distintos servicios para saber qué ip se ha equivocado al hacer login y bloquearla siguiendo unas reglas.


Para instalar fail2ban en Ubuntu tenemos que ejecutar el siguiente comando como root:

 Una vez instalado tenemos que hacer una copia del fichero /etc/fail2ban/jail.conf a jail.local para que si alguna vez se actualiza el paquete fail2ban no nos sobreescriba nuestra configuración:


Y luego hay que editar el fichero /etc/fail2ban/jail.local para activar los servicios que queremos monitorear, en mi caso serían vsftp (FTP), ssh y wordpress:


En la línea 6 (ignoreip) puedes poner IP's que NUNCA serán baneadas, por ejemplo la de tu trabajo (si es IP fija).
En la línea 7 (bantime) se especifica el tiempo de baneo, en mi caso puse 36000 segundos = 10 horas
En la línea 8 pones las veces como máximo que se pueden equivocar al poner la contraseña, he puesto 3 aunque luego en cada servicio se puede especificar las veces que quieres.

Y después tenemos la configuración para cada servicio que se entiende bastante fácil para qué es cada cosa, si tenéis dudas poned un comentario y respondo.

 Para que funcione bien hay que modificar la configuración de ssh para que en el log guarde las IP's y no los nombres de las máquinas que se contectan, para ello añadimos esta línea al final del fichero /etc/ssh/sshd_config:

 
Para que wordpress cree el fichero de log hay que instalar este plugin:
 
http://wordpress.org/plugins/wp-fail2ban/
 
El zip del plugin viene con el fichero wordpress.conf que hay que copiar en la ruta /etc/fail2ban/filter.d
 
Y luego ya podemos reinciar el ssh, el fail2ban y el wordpress:
 
 
A partir de ese momento, fail2ban empezará a banear las IP's.
Este es un ejemplo de IP's baneadas (ficticias):
 
 
 En mi servidor cada día banea unas 10 IP's, sobre todo en el servicio ssh, sobre todo de paises como Tailandia, China, etc.
Espero que os sirva, y si hay dudas, ya sabéis... un comentario ;-)

 

No hay comentarios:

Publicar un comentario