Protegiendo SSH con fail2ban

_images/Fail2ban.png

Fail2Ban es una aplicación escrita en Python para sistemas Unix, bajo licencia GPL v2, que permite establecer filtros para evitar ataques del tipo “brute force”, Overflow o DDOS para determinadas aplicaciones como Apache, SSH, Vsftpd, etc. Para ello, fail2ban analiza ficheros de log en busca de patrones correspondientes a fallos de inicio de sesión u otra expresión de interés para nuestro propósito y establece bloqueos (reglas en nuestro IPtables) frente a un nº máximo de intentos que nosotros definamos.

Instalación

$ sudo apt-get install fail2ban

Configuración

$ sudo nano /etc/fail2ban/jail.conf
ignoreip = 127.0.0.1/8 # Ignoramos los intentos fallidos desde localhost.
bantime  = 18000 # Tiempo de baneo por defecto en segundos.
maxretry = 3 # Máximo de intentos fallidos por defecto.
action = %(action_mwl)s # acción por defecto con la opción "wl" que enviará un mail de #alerta.
destemail = usuario@gmail.com # Email al que se mandará las notificaciones de alerta.

Por defecto vienen 600 segundos, que son 10 minutos, a mi juicio es poco tiempo, ya que le baneamos, que sea por un tiempo razonable y se canse, así que yo he optado por poner 36000 que son 10 horas.

Reiniciamos el servidor tras los cambios en la configuración:

$ sudo service fail2ban restart

Pasado un tiempo podrás ver qué está haciendo examinando el log de fail2ban…

$ cat /var/log/fail2ban.log

Puedes comprobar cómo ha intoducido las reglas en el iptables con

$ sudo iptables -L