Bloquea ataques por fuerza bruta con ‘Fail2ban’
Publicado el 22 de Marzo ,2008 por ekhtorFail2ban 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:
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:
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:

