Configuración Fail2Ban

Instalamos el paquete, desde los repositorios oficiales:

sudo apt update -y
sudo apt install fail2ban -y

Creamos una copia del fichero /etc/fail2ban/jail.conf y lo guardamos como jail.local.

Aquí modificamos el archivo por si fuera necesario adaptarlo a nuestro entorno.

En este archivo podremos ver la siguiente configuración por defecto:

[sshd]

port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

bantime  = 604800 #  ; 1 week
findtime = 86400 #   ; 1 day
maxretry = 5

En este archivo deberíamos, por ejemplo, modificar el puerto para adaptarse al puerto utilizado en el servidor SSH (22822).

También sería recomendable ajustar los tiempos de bloqueo y los intentos máximos a nuestro entorno.

Como referencia, Fail2Ban se organiza de la siguiente manera:

pablo@server:/etc/fail2ban# tree -L 1
.
├── action.d
├── fail2ban.conf
├── fail2ban.d
├── filter.d
├── jail.conf
├── jail.d
├── jail.local #Este es el fichero que hemos creado.
├── paths-arch.conf
├── paths-common.conf
├── paths-debian.conf
└── paths-opensuse.conf

Para verificar el estado del servicio, así como saber si hemos cometido algún error en la edición de los ficheros de configuración.

Pruebas fail2ban

Hemos intentado conectarnos varias veces mediante SSH, como vemos en la siguiente imagen, hemos sido bloqueados después de varios intentos fallidos:

Inicios de sesión fallidos


Si vemos los logs en el servidor observamos que la IP ha sido bloqueada:

Registro de servidor


Aquí vemos como nuestro equipo ha sido bloqueado:

Registro de servidor


Comandos File2Ban

Para listar las “jaulas” y ver su estado:

fail2ban-client status

Para ver las IPs en una jaula dada:

fail2ban-client status <JAIL-NAME>

Para desbloquear una IP en una jaula dadda:

fail2ban-client set <JAIL-NAME> unbanip <IP-ADDRESS>

Para bloquer una IP en una jaula dada:

fail2ban-client set <JAIL-NAME> banip <IP-ADDRESS>

Como comentario

Es realmente útil para servidores expuestos en internet; además de cambiar el puerto por defecto y otras mediadas.

Veamos un ejemplo de la acción de fail2ban durante un par de días en un servidor accesibe desde internet:

Registro de servidor