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
Ahora instala los paquetes‘fail2ban‘ y‘ufw‘ con el siguiente comando‘apt‘. Introduce‘Y’ para confirmar la instalación.
sudo apt install fail2ban 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
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.
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
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‘.
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
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
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.