Instala y configura Fail2Ban en Debian GNU/Linux
Basado en Linux Debian 10
Un cliente con un servidor recién montado me pregunta que cómo puede ser que tenga ataques al SSH si lo acaba de contratar. Aunque no todos lo vean, los ataques a servidores es algo constante que nunca para y si no nos protegemos es cuestión de tiempo que tu servidor se vea comprometido ya sea por un intento de hackeo por fuerza bruta o por una falla del software que lleva instalado porque este no se tiene actualizado o por mil cosas.
Una de las utilidades que más me gusta para proteger los sitios donde se puede hacer login en un servidor es Fail2Ban, con ella podemos controlar las veces que se intenta hacer login y si sobrepasa el límite que le pongamos quedará baneado automáticamente.
Me conecto al servidor del cliente y nada más ver el syslog tiene un ataque pegado que no para de intentar identificarse al SSH por fuerza bruta…
En este caso podemos banearle directamente con iptables y se acabaría el problema pero no es del todo efectivo porque el atacante puede usar un proxy, cambiar de IP y volver a lanzarnos su ataque por fuerza bruta.
Lo suyo es que el servidor sea capaz de identificar esos ataques y los bloquee por él mismo sin que tengamos que decírselo nosotros.
Para este fin vamos a ver cómo instalar Fail2Ban en Debian GNU/Linux el cual se encargará de hacer esa faena y así podamos dormir un poco más tranquilos.
Para comenzar vamos a identificarnos con el super usuario ROOT con el comando …
su
Continuamos instalando el paquete …
apt install fail2ban
Automáticamente el programa se instala y empieza a trabajar …
Cómo podemos ver en el primer log de más arriba la IP 45.141.86.128 estaba realizando un ataque de fuerza bruta contra el servidor con un diccionario de nombres… hello, master, 111111, 1234, backup, etc …
En el segundo log vemos que Fail2Ban lo banea aunque aun aparece varios positivos más pronto se parará ya que estos aun los muestra porque aun los tiene en memoria de lo que estaba procesando el ordenador antes de que instalaremos Fail2Ban, aquí el ataque desapareció al instante.
Bien, ahora vamos a configurarlo para que haga su trabajo a nuestro gusto editando su archivo de configuración …
vi /etc/fail2ban/jail.conf
Localizamos las siguientes lineas …
Cuando administro un servidor suelo ser yo solo el que trabaja en él por lo que me gusta apretar los ajustes para que todo sea lo más difícil posible al que ataca la máquina.
Cada uno adaptará esta configuración a su gusto, este es el mío…
bantime = 60m #Si el servidor banea al atacante que lo haga 1 hora. findtime = 10m #Si el atacante repite el ataque en menos de 10 minutos es baneado, si no el contador volverá a iniciarse. #maxretry = 5 #Esta linea la dejamos comentada.
Si ponemos un numero en Maxretry da fallo y es que más abajo están todas las jaulas para todos los servicios que puede proteger Fail2Ban y cada una tiene su propio maxretry.
Si bajamos mas abajo podemos ver las JAILS …
Cómo podemos ver he agregado la linea maxretry = 2 debajo de las lineas que hacen referencia al sshd. Más abajo se puede encontrar todos los servicios que Fail2ban es capaz de monitorear en caso de falsos intentos de login.
Puedes agregar el maxretry = a todos los servicios que quieras proteger y toma nota del nombre del servicio porque lo necesitaremos para activarlo.
Una vez configurado a nuestro gusto guardamos el fichero con la tecla ESC y :wq!
Ahora vamos a activar esos módulos que configuramos anteriormente para que fail2ban sepa qué tiene que trabajar con ellos. Lo haremos con lo siguiente …
vi /etc/fail2ban/jail.d/defaults-debian.conf
Como veremos ya está activado el modulo de sshd y podemos agregar tantos como configurasteis en el fichero jail.conf quedándonos así …
Una vez agregados todos los servicios guardamos el fichero con la tecla ESC y :wq!
Guardamos los cambios y reiniciamos Fail2ban con …
systemctl restart fail2ban
Con el comando Tail podemos ver cualquier fichero Log a tiempo real, si queréis ver que tal funciona, mirando el syslog veremos como nos atacan …
tail -f /var/log/syslog
Por otro lado con el log de Fail2Ban podremos ver como banea y desbanea al atacante …
tail -f /var/log/fail2ban.log
Ahora tan solo tenemos que dejarlo trabajando para que vaya baneando a todos los que intenten hacer login y no se sepan la contraseña. Con esto ponemos una traba más al que quiera jugar con nuestro servidor.
Recordad que nunca estaremos seguros pero cuantas más trabas les pongamos antes optarán por dejar de intentarlo y lo harán con otro que no tenga tantas medidas de seguridad.