Fail2ban es una pequeña utilidad que se ejecuta en el servidor y que monitoria varios archivos de log del sistema. Cuando detecta un comportamiento sospechoso proveniente de un visitante en alguno de los servicios que monitoriza lo banea para que deje de molestar.
La configuración por defecto de Fail2ban monitoriza el servicio ssh, pero puede además monitorizar, el ftp, el mail, o el servicio web entro otros si se activa y configura adecuadamente.
Para instalar Fail2ban ejecutamos en un terminal el siguiente comando.
sudo aptitude install fail2ban
Una vez instalado vamos a editar su fichero de configuración. Lo abrimos con:
sudo nano /etc/fail2ban/jail.conf
El archivo se organiza en pequeñas secciones llamadas jaulas, donde se configura como se monitoriza un servicio en concreto. Todas estas jaulas tienen una línea con donde se puede activar o desactivar cambiando enable a false o true. Veamos la jaula para SSH:
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
Tal como esta, funciona perfectamente sin cambiar nada. Nos aseguramos que en nuestro fichero de configuración este también en true. Si el puerto por el que accedemos al servicio SSH esta cambiado por otro debemos también cambiarlo en la configuración de la jaula por el que corresponda. La línea con maxretry indica que en esta jaula cuando el visitante malicioso intente ingresar más de 6 veces será baneado el tiempo en segundos que indique la línea:
bantime = 600
Si queremos que cuando Fail2ban banea a un visitante malicioso nos envíe un correo para informarnos, podemos poner el correo de destino en la línea:
destemail = usuario@example.com
Y podemos pedir que el informe enviado a nuestro correo sea bastante completo cambiando la línea:
action = %(action_)s
por:
action = %(action_mwl)s
Cuando estemos satisfechos con los cambios guardamos y reiniciamos fail2ban con:
sudo service fail2ban restart
Y para conocer el estado del servicio Fail2ban podemos usar:
sudo fail2ban-client status