sábado 22 de marzo de 2008

Bloquea ataques por fuerza bruta con 'Fail2ban'

Fail2ban es una aplicación que nos permite bloquear ciertas direcciones cuyos intentos fallidos de conexión sean superiores a un número determinado por el usuario. Es muy potente ya que aprovecha la robustez de iptables y los log's del sistema para conseguir su función.

Básicamente consiste en leer los log's y busca patrones comunes como el número de veces que se intenta conectar un usuario de forma fallida (esto se encuentra en /var/log/auth.log) y a partir de los datos obtenidos actúa en función de la configuración que le hayamos dado.

Primero instalamos el programa:

sudo apt-get install fail2ban

Fail2ban se ejecuta como demonio y para configurarlo modificaremos el archivo /etc/fail2ban/jail.conf. Éste archivo se divide en secciones, como por ejemplo [DEFAULT], debajo de ésta se encontrarán las reglas a seguir en el caso predeterminado. Si por ejemplo, queremos que nuestro servicio ssh tenga unas reglas distintas, crearemos una nueva sección llamada [ssh].

Las reglas más importantes son las siguientes:

-enabled = true/false Indica si la regla estará activa o no.
-port = ssh,sftp,http... El puerto del servicio.
-filter = sshd El parámetro de búsqueda en el fichero de log.
-logpath = /var/log/auth.log El fichero de log donde realizaremos la búsqueda.
-maxretry = 3 Numero de conexiones permitidas antes de bloquear la ip.
-bantime = 300 Tiempo en segundos que permanecerá baneada la ip.

Ahora conociendo un poco más las reglas, si quisiéramos banear durante 10 minutos las ip's, que realizan 5 conexiones fallidas a nuestro sistema por ssh crearíamos la siguiente sección en el archivo /etc/fail2ban/jail.conf:

[ssh]
enabled = true
port = ssh,sftp
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 6000

Y ahora, para que la configuración tenga efecto, debemos reiniciar el deminio con:

sudo /etc/init.d/fail2ban restart

Para comprobar que funciona, podemos probar a conectarnos desde otra máquina y hacer 5 intentos fallidos. Veremos que no nos deja conectar más veces y en el servidor si introducimos el siguiente comando, veremos las ip's que están actualmente bloqueadas:

sudo iptables -L fail2ban-ssh

0 comentarios:

Publicar un comentario en la entrada