Fail2ban: Bloquear y prevenir ataques de Fuerza Bruta
Protege tu servidor Linux con Fail2ban y aprende a bloquear ataques de fuerza bruta de forma eficiente.

La seguridad de un servidor Linux es un tema crítico para cualquier administrador de sistemas. Los ataques de fuerza bruta y otros intentos de acceso malintencionados son comunes, pero existen herramientas como Fail2ban que te pueden ayudar a mitigarlos.
En esta oportunidad te explicaré paso a paso cómo instalar, configurar y personalizar Fail2ban en tu sistema Linux. Además, veremos ejemplos prácticos para que puedas proteger tu servidor de manera efectiva.
Tabla de contenidos
¿Qué es Fail2ban?
Fail2ban es una herramienta que monitorea los registros de tu sistema en busca de intentos de acceso fallidos o actividades sospechosas. Fail2ban no es un firewall, pero cuando detecta algo bloquea automáticamente la IP maliciosa mediante el uso de iptables u otros métodos.
Instalación de Fail2ban
Debian/Ubuntu
En distribuciones basadas en Debian/Ubuntu:
sudo apt install fail2ban
CentOS/RHEL
En distribuciones basadas en CentOS/RHEL:
Nota: si lo instalas en Fedora no necesitas instalar epel.
sudo dnf install epel-release
sudo dnf install fail2ban
Configuración básica de Fail2ban
Los archivos de configuración de Fail2ban se encuentran en /etc/fail2ban.
Para personalizar la configuración, es mejor no modificar directamente el archivo principal jail.conf, en su lugar, crea un archivo local llamado jail.local para evitar que futuras actualizaciones sobrescriban tus cambios.
Crear archivo jail.local
Para crear el archivo jail.local realizaremos una copia del archivo jail.conf
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Editar archivo jail.local
Abre el archivo con tu editor favorito, en mi caso siempre uso vim:
sudo vim /etc/fail2ban/jail.local
Las opciones más importantes a configurar dentro del archivo jail.local son:
- ignoreip: IPs que no serán bloqueadas, como tu IP administrativa.
- bantime: Tiempo en segundos que una IP permanecerá bloqueada.
- findtime: Periodo de tiempo en segundos durante el cual se cuentan los intentos fallidos.
- maxretry: Número máximo de intentos fallidos permitidos.
Un ejemplo de estas configuraciones son las siguientes:
signoreip = 127.0.0.1/8 192.168.1.100
bantime = 3600
findtime = 600
maxretry = 5
Activar y configurar Jail para servicios específicos
Fail2ban funciona mediante jails, que son configuraciones específicas para proteger diferentes servicios, como SSH, Apache, Nginx, Postfix, etc.
Puedes cambiar o agregar nuevos valores como maxretry, findtime, etc segun tu proposito en cada uno de los jails.
Configurar protección para SSH
Asegúrate de que la sección [sshd] en jail.local esté habilitada:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
Configurar jails para Apache
Si tienes un servidor web Apache, puedes habilitar el siguiente jail:
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
Configurar jails para Nginx
Si tienes un servidor web Nginx, puedes habilitar el siguiente jail:
[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3
Configurar jails para Postfix
Si usas Postfix, puedes habilitar el siguiente jail para proteger tu servidor de correo:
[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
maxretry = 3
Comandos útiles de Fail2ban
Verificar el estado de un jail
Puedes revisar el estado de tus jails para ver detalles como las IPs baneadas o los accesos fallidos:
Nota: debes reemplazar sshd por el nombre del jail que quieras consultar.
sudo fail2ban-client status sshd
Añadir manualmente una IP a la lista negra
Si quieres bloquear una IP especifica:
sudo fail2ban-client set sshd banip 192.168.1.10
Eliminar una IP bloqueada
Si quieres desbloquear una IP especifica:
sudo fail2ban-client set sshd unbanip 192.168.1.200
Solución de Problemas
Ver registros de Fail2ban
Si algo no funciona como esperabas, revisa el log correspondiente:
sudo tail -f /var/log/fail2ban.log
Reiniciar Fail2ban
Si realizas cambios en la configuración, reinicia el servicio para aplicar los cambios:
sudo systemctl restart fail2ban
Conclusión
Fail2ban es una herramienta increíble para proteger tu servidor Linux de ataques maliciosos. Con una configuración adecuada, puedes bloquear intentos de fuerza bruta y reducir considerablemente los riesgos de seguridad. Ahora solo debes personalizar los jails según los servicios que utilices en tu servidor para garantizar una protección óptima.
Autor: Maxi Zamorano
Para más contenido visita www.maxizamorano.com
Fecha de publicación: 04-12-2024