Una de las principales formas de atacar un servidor SSH es através de ataques de diccionario o de fuerza bruta .Fail2Ban tiene una forma muy simple de solucionar el problema. Si después de X intentos escribo la clave de forma incorrecta, bloquea ese ip por un tiempo definido. Por defecto es 10 minutos. Con esta solución tan simple, nos tendrá protegidos de los ataques de diccionario.
Instalar Fail2Ban
En las distros basadas en Debian, basta con instalar el paquete fail2ban. Supongo que en otras distros la instalación es igual de simple
aptitude install fail2ban
Configurar Fail2Ban
Como cualquier aplicación de Linux, su configuración se encuentra dentro del directorio /etc. En este caso el directorio donde debemos buscar es /etc/fail2ban. El archivo que modicaremos en este mini tutorial es el /etc/fail2ban/jail.conf. Por defecto viene con varios templates para proteger servicios de nuestros servidores, no solo SSH. Algunas variables interesantes para modificar:
Al inicio del archivo encontraremos las variables ignoreip y bantime La primera sirve para que no bloquee mi IP si algo sale mal y la segunda especifica el tiempo a bloquear un IP en segundos. Por defecto son 10 minutos (600 segundos).
ignoreip = 192.168.182.3
bantime = 600
Luego bajamos a la sección de SSH y verificamos que la configuración este correcta:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Reiniciamos fail2ban
/etc/init.d/fail2ban restart
Listo ahora estamos protegidos contra los ataques de diccionario a nuestro servidor SSH