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.
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.
En distribuciones basadas en Debian/Ubuntu:
sudo apt install fail2ban
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
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.
Para crear el archivo jail.local
realizaremos una copia del archivo jail.conf
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/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:
Un ejemplo de estas configuraciones son las siguientes:
signoreip = 127.0.0.1/8 192.168.1.100
bantime = 3600
findtime = 600
maxretry = 5
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.
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
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
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
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
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
Si quieres bloquear una IP especifica:
sudo fail2ban-client set sshd banip 192.168.1.10
Si quieres desbloquear una IP especifica:
sudo fail2ban-client set sshd unbanip 192.168.1.200
Si algo no funciona como esperabas, revisa el log correspondiente:
sudo tail -f /var/log/fail2ban.log
Si realizas cambios en la configuración, reinicia el servicio para aplicar los cambios:
sudo systemctl restart fail2ban
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.