Cómo instalar Fail2ban en un servidor Ubuntu 24.04

Fail2ban es un IPS (Software de Prevención de Intrusiones) gratuito y de código abierto que ayuda a los administradores a proteger los servidores Linux contra ataques maliciosos de inicio de sesión y de fuerza bruta. Fail2ban está escrito en Python y viene con filtros para varios servicios, como Apache2, SSH, FTP, etc. Fail2ban reduce los intentos de inicio de sesión maliciosos bloqueando las direcciones IP de origen de los ataques.

Fail2ban funciona escaneando los archivos de registro de los servicios (por ejemplo /var/log/auth.log) y bloqueando las direcciones IP que muestren intentos de inicio de sesión maliciosos, como demasiadas contraseñas incorrectas, búsqueda de exploits, etc. Fail2ban también es compatible con múltiples backends de cortafuegos, como iptables, ufw y firewalld. También te permite configurar una notificación por correo electrónico para cada intento de inicio de sesión bloqueado.

En esta guía, aprenderás a instalar Fail2ba en un servidor Ubuntu 24.04. Configurarás la jaula Fail2ban, aprenderás el comando básico ‘fail2ban-client’ y, a continuación, aprenderás a bloquear y desbloquear direcciones IP mediante Fail2ban.

Requisitos previos

Para empezar con esta guía, asegúrate de que tienes

  • Un servidor Ubuntu 24.04
  • Un usuario no root con privilegios de administrador

Instalación de Fail2ban y UFW (Cortafuegos sin complicaciones)

Fail2ban es un IPS (Software de Prevención de Intrusiones) que protege los servidores contra ataques de fuerza bruta. Está disponible por defecto en la mayoría de los repositorios de Linux y admite múltiples backends de cortafuegos. En esta sección, instalarás Fail2ban y luego configurarás UFW (Uncomplicated Firewall), que se utilizará como backend del cortafuegos para Fail2ban.

En primer lugar, ejecuta el siguiente comando para actualizar el índice de paquetes de Ubuntu.

sudo apt update

actualizar repo

Ahora instala los paquetes‘fail2ban‘ y‘ufw‘ con el siguiente comando‘apt‘. Introduce‘Y’ para confirmar la instalación.

sudo apt install fail2ban ufw

instala fail2ban y ufw

Una vez completada la instalación, ejecuta el siguiente comando para abrir el puerto para SSH y habilitar UFW. Introduce «Y» para confirmar, iniciar y activar UFW.

sudo ufw allow OpenSSH
sudo ufw enable

Una vez activada la UFW, verás el mensaje«El cortafuegos está activo y activado al iniciar el sistema«.

A continuación, ejecuta el siguiente comando para comprobar el estado de la UFW. Verás que la UFW está‘activa’ con el‘OpenSSH‘ activado.

sudo ufw status

configuración ufw

Por último, ejecuta el siguiente comando ‘systemctl’ para iniciar, habilitar y verificar el servicio‘fail2ban‘.

sudo systemctl enable --now fail2ban
sudo systemctl status fail2ban

Puedes ver a continuación que‘fail2ban‘ está activo (ejecutándose) y habilitado.

iniciar y activar fail2ban

Configurar Fail2ban

Después de instalar fail2ban, debes configurarlo antes de que Fail2ban realice alguna acción (comprobación y bloqueo). En esta sección, modificarás la configuración de fail2ban ‘/etc/fail2ban/jail.local’, establecerás la configuración global para‘bantime‘,‘maxretry‘ y‘findtime‘, configurarás la acción por defecto y el backend del cortafuegos UFW, y luego habilitarás la jaula‘sshd‘ para proteger el servicio SSH de ataques de fuerza bruta.

Para empezar, copia la configuración por defecto de fail2ban en‘/etc/fail2ban/jail.local‘ con lo siguiente:

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

Abre el archivo‘/etc/fail2ban/jail.local’ con el siguiente comando editor‘nano‘.

sudo nano /etc/fail2ban/jail.local

Añade tu red local a la opción‘ignoreip‘. Cualquier subred dentro de esta opción no será bloqueada por fail2ban.

ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 192.168.10.20

Ajusta la configuración por defecto para‘bantime‘ (el tiempo que la dirección IP será baneada),‘findtime‘ (la duración entre el número de fallos antes de la acción de ban), y‘maxretry‘ (el número de fallos para que las direcciones IP sean baneadas). En este ejemplo, establecerás el‘bantime‘ en‘1 hora‘, el‘findtime‘ en’10 minutos‘, con el‘maxretry‘ en‘5 veces‘.

bantime = 1h
findtime = 10m
maxretry = 5

Opcionalmente, cambia la«acción» por defecto a«%(action_mw)s» para bloquear direcciones IP y enviar una notificación al administrador por correo electrónico. Asegúrate también de cambiar las opciones ‘destmail’ y ‘sender’.

action = %(action_mw)s
destemail = [email protected]
sender = [email protected]

Cambia el valor por defectode «banaction» a«ufw«. Con esto, las direcciones IP serán baneadas por fail2ban a través de UFW.

banaction = ufw

Ahora cambia la jaula por defecto para‘sshd‘ con la configuración de abajo. En este ejemplo, la jaula‘sshd‘ tendrá ajustes personalizados para‘bantime‘,‘maxretry‘ y‘findtime‘.

[sshd]
enabled = true
maxretry = 3
findtime = 15m
bantime = 3h
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Guarda y sal del archivo cuando hayas terminado.

Por último, ejecuta el siguiente comando «systemctl» para reiniciar el servicio«fail2ban» y aplicar los cambios.

sudo systemctl restart fail2ban

comprobar fail2ban

Comprobación de las reglas fail2ban mediante fail2ban-client

Llegados a este punto, el servicio Fail2ban está en funcionamiento con la jaula ‘sshd’ habilitada. Ahora aprenderás el comando básico de ‘fail2ban-client’ para comprobar y gestionar la instalación de Fail2ban.

Para asegurarte de que fail2ban se está ejecutando, ejecuta el comando‘fail2ban-client‘ que se indica a continuación.

sudo fail2ban-client ping

Si fail2ban se está ejecutando, verás una salida‘PONG‘.

pong

Ahora comprueba el estado de la jaula‘sshd‘ con el siguiente comando. Esto te mostrará la lista de direcciones IP detectadas y prohibidas para la jaula«sshd«.

sudo fail2ban-client status sshd

jail status sshd

A continuación, ejecuta el comando«fail2ban-client get» para comprobar las reglas específicas de tu jaula fail2ban. En esta sección, comprobarás el‘bantime‘,‘maxretry‘,‘actions‘,‘findtime‘, e‘ignoreip‘ de la jaula‘sshd‘.

sudo fail2ban-client get sshd bantime
sudo fail2ban-client get sshd maxretry
sudo fail2ban-client get sshd actions
sudo fail2ban-client get sshd findtime
sudo fail2ban-client get sshd ignoreip

configuración de la cárcel

Cómo banear y desbanear direcciones IP con fail2ban-client

Es importante saber cómo banear o desbanear direcciones IP manualmente utilizando ‘fail2ban-client’. Con esto, puedes eliminar fácilmente tu dirección IP de la lista de prohibidas. Utilizarás el comando «fail2ban-client» para bloquear y desbloquear direcciones IP en Fail2ban.

Para banear direcciones IP manualmente a través de fail2ban, ejecuta el comando«fail2ban-client» que aparece a continuación. En este caso, la dirección IP baneada va a la jaula«sshd«.

sudo fail2ban-client set sshd banip IP-ADDRESS

Ahora ejecuta el siguiente comando para desbanear la dirección IP de la jaula fail2ban‘sshd‘.

Sudo fail2ban-client set sshd unbanip IP-ADDRESS

Por último, puedes comprobar el estado de la jaula«sshd» utilizando el siguiente comando. Verás que la dirección IP ha sido eliminada.

sudo fail2ban-client status sshd

Conclusión

¡Enhorabuena! Has completado la instalación de fail2ban en el servidor Ubuntu 24.04. También has aprendido la configuración básica para configurar Fail2ban, incluyendo la configuración global y de la jaula. Por último, también has aprendido el uso básico del comando ‘fail2ban-client’ para comprobar el estado de fail2ban, el estado de la jaula, las configuraciones de la jaula, y banear y desbanear direcciones IP manualmente.

También te podría gustar...