Fail2ban

Fail2ban

·

4 min read

Fail2Ban son un conjunto de programas servidor - cliente cuya configuracion esta pennsada para limitar los intentos de acceso por fuerza bruta, sin embargo el riesgo de usar credenciales debilies, sigue presente. Una forma de asegurar real seria implementando mecanismos de 2 factores de autenticacion, si se queren proteger los servicios que estemos corriendo.

Un usuario local es capaz de injectar mesajes en el syslog y usando una Fail2ban jail, podria sesencadenar un Dos Attack contra cualquier ip. Los archivos estan en:

/etc/fail2ban/*

Para tener esdta herramienta hay que insralarsela:



sudo apt update && sudo apt upgrade -y sudo apt install fail2ban

```plaintext

Existen dos archivos de configuracion importantes, conde se define el pid:

/etc/fail2ban/fail2ban.conf


Y donde ocurre la mágia, editando este archivo, puedes configurar un tiempo por defecto de banneo antes de meter una ip en la whitelist, aqui se controla el comportamiento del Fail2Ban:

/etc/fail2ban/jail.conf


Es aconsejable hacer una copia de estos archivos de configuración antes de tocarlos, por si acaso:

sudo cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local


El archivo Jail.conf se divide en dos partes, la parte que se aplica a todos los servidcos y la parte que mete los servicios entre conchetes como: [sshd], [apache-auth], [squid].

El significado de algunos parametros que nos podemos encontrar es:

bantime: tiempo de banneo por defecto 10 minutos
findtime: Ventana en la qeue una acción para una ip puede ser ejecutada.por defecto 10 minutos. Por ejemplo un intento de logearse fallido para una ip, solo deja probar intentos duarante un tiempo determinado antes de ser Banneado.
maxretry: o el número de intentos fallidos antes de que una accion sea tomada, un aviso.


Para usar Fail2ban correctamente, te muestro algunas maneras para hacer un hardening de la seguridad.
Se necesitan privilegios de root para ejecutar las siguientes acciones.

Habilitar El Fail2ban en tu server y comprobar todas las jails, hacemos uso de comandos de systemd:

systemctl start fail2ban systemctl enable fail2ban


Miramos el status y activamos las jails con fail2ban-client:

fail2ban-client status Status |- Number of jail: 1 `- Jail list: sshd


sshd jail esta habilitada por defecto.

Mirar el Fil2ban log

Esta localizado en la ruta /var/log/fail2ban.log:

2022-11-12 18:30:22,206 fail2ban.server [947]: INFO Starting Fail2ban v0.11.2 2022-11-12 18:30:22,216 fail2ban.observer [947]: INFO Observer start... 2022-11-12 18:30:22,229 fail2ban.database [947]: INFO Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3' 2022-11-12 18:30:22,230 fail2ban.jail [947]: INFO Creating new jail 'sshd' 2022-11-12 18:30:22,300 fail2ban.jail [947]: INFO Jail 'sshd' uses pyinotify {} 2022-11-12 18:30:22,323 fail2ban.jail [947]: INFO Initiated 'pyinotify'backend



Otra forma seria comprobar el status de ciertas jails.

fail2ban-client status <jail_name>


si quieres tener todos los fallos de conexion por ssh banneados del Fail2ban:

root@test-server:~# fail2ban-client status sshd Status for the jail: sshd |- Filter | |- Currently failed: 14 | |- Total failed: 715 | - File list: /var/log/auth.log - Actions |- Currently banned: 7 |- Total banned: 17 `- Banned IP list: 177.47.115.67 118.130.133.110 68.183.62.73 202.65.154.110 106.12.102.114 61.184.247.3 218.92.1.150


Tambien se podira bannear permanentemente un ip, se podria igualar el tiempo de baneo a -1 lo que seria equivalente a un ban permanente, puede que de un error esto Starting fail2ban: ERROR NOK: (‘database disk image is malformed’,)’ pero funcionaria, tambien se podria igualar a mas tiempo 1 year por ejemplo.

(bantime = -1)


Como de podria desbannear una ip blokeada:
Habria que entrar en iptables para ver la ip que esta siendo banneada en tu server:

iptables -n -L

Se podria usar el comando grep, luego buscar la jail que esta banneando la IP

root@test-server:~# grep -E ‘Ban.*61.184.247.3’ /var/log/fail2ban.log 2019-03-14 13:09:25,029 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3 2019-03-14 13:52:56,745 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3

Y procedemos a desbannear:

fail2ban-client set <jail_name> unbanip <ip_address>


Como meter en lista blanca un ip en Fail2ban

fail2ban-client set <JAIL_NAME> addignoreip <IP_Address>

ejemplo:

sudo fail2ban-client set sshd addignoreip 203.93.83.113 These IP addresses/networks are ignored: `- 203.93.83.113

Puedes ver todas las IPs que están en la whitelist usando:

fail2ban-client get <JAIL_NAME> ignoreip