Al comenzar a operar un servidor, te enfrentas a una multitud de ataques externos. Los ataques de fuerza bruta SSH, los intentos de inicio de sesión indiscriminados dirigidos a aplicaciones web, y el escaneo de puertos son amenazas cotidianas. Si estas amenazas se desatienden, pueden llevar a la penetración del sistema. Fail2Ban es una solución de prevención de intrusiones basada en Linux, ligera y potente, que aborda estos problemas.
Fail2Ban detecta automáticamente las IP sospechosas y las bloquea. Esto permite que el administrador proteja el servidor sin mucho esfuerzo.
Cómo instalar Fail2Ban
Fail2Ban está disponible como paquete en la mayoría de las distribuciones de Linux, por lo que su instalación es muy sencilla.
Distribuciones Ubuntu/Debian
sudo apt update
sudo apt install fail2ban
Una vez finalizada la instalación, configura el inicio del servicio y el arranque automático.
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
Cómo configurar Fail2Ban
Fail2Ban utiliza el archivo /etc/fail2ban/jail.conf
como su archivo de configuración predeterminado, sin embargo, se recomienda crear el archivo /etc/fail2ban/jail.local
para personalizarlo sin modificar el archivo original.
Creación del archivo jail.local:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Elementos clave de configuración: - bantime: Tiempo de bloqueo (en segundos) - findtime: Rango de tiempo considerado para ataques (en segundos) - maxretry: Número máximo de intentos fallidos permitidos
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
Ejemplos de aplicación práctica
1. Bloqueo de fuerza bruta SSH
Al configurar el jail [sshd]
como se indica, si hay más de 5 intentos fallidos de inicio de sesión, esa IP será bloqueada durante 1 hora.
2. Bloqueo de ataques de inicio de sesión Apache
[apache-auth]
enabled = true
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3
Bloqueará después de 3 intentos de autenticación fallidos en el servidor web.
Métodos para monitorear Fail2Ban
Existen varias maneras de monitorear si Fail2Ban está funcionando correctamente.
1. Verificación del estado mediante fail2ban-client
Puedes verificar el estado de un jail específico (por ejemplo, sshd).
sudo fail2ban-client status sshd
Ejemplo de salida:
Status for the jail: sshd
|- Filter
| |- Currently failed: 2
| |- Total failed: 15
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 1
|- Total banned: 3
`- Banned IP list: 192.168.1.100
2. Monitoreo de archivos de registro
La actividad de Fail2Ban se registra en el archivo /var/log/fail2ban.log
.
tail -f /var/log/fail2ban.log
Esto permite monitorear en tiempo real los eventos de bloqueo y liberación.
Cómo funciona Fail2Ban
-
Monitoreo de registros: Fail2Ban supervisa continuamente los archivos de registro configurados. (ej:
/var/log/auth.log
,/var/log/apache2/error.log
) -
Aplicación de filtros: Detecta patrones específicos (intentos fallidos de inicio de sesión, errores de autenticación, etc.) como filtros.
-
Ejecución de acciones: Si se supera el valor de
maxretry
, se bloquea la IP correspondiente mediante iptables o se ejecutan comandos de firewall como firewall-cmd o nftables. -
Desbloqueo automático: Después de transcurrido el
bantime
, se desbloquea automáticamente.
Fail2Ban tiene una estructura modular que permite configurar la monitorización y el bloqueo de manera independiente para diversos servicios (jail), lo que refuerza la seguridad más allá de la simple protección SSH.
Cómo configurar un bloqueo permanente para ataques SSH
Es crucial tratar a los atacantes de SSH con firmeza. En Fail2Ban, puedes configurar bantime
a -1
para bloquear permanentemente.
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
bantime = -1
findtime = 600
maxretry = 5
Con esta configuración, si hay más de 5 intentos fallidos de autenticación SSH, la IP será bloqueada permanentemente, impidiendo el acceso al servidor.
[Consejo avanzado] Entendiendo el funcionamiento básico de bloqueo de Fail2Ban
Fail2Ban funciona de manera predeterminada incluso sin definir action
por separado. Esto se debe a que la configuración predeterminada incluye comandos de bloqueo utilizando iptables.
- Si no se especifica una
action
por separado, se aplica la configuraciónaction = %(action_)s
de la sección[DEFAULT]
. %(action_)s
realiza la acción de bloquear direcciones IP maliciosas utilizando el comandoiptables
internamente.- Por lo tanto, incluso sin redactar
action
por separado, se llevará a cabo el bloqueo de IP mediante iptables.
Ejemplo de comando de bloqueo predeterminado (ver action_.conf)
iptables -I INPUT -s <ip> -j REJECT
Es decir, Fail2Ban controlará automáticamente iptables para bloquear las IP atacantes.
Advertencia:
- Si deseas utilizar otras herramientas de firewall como UFW o firewalld, debes configurar action
explícitamente.
- Además, las reglas de bloqueo pueden desaparecer tras el reinicio del servidor, por lo que es recomendable configurar el servicio Fail2Ban para que se inicie automáticamente al arrancar.
Adicionalmente, es posible crear y aplicar diversos filtros personalizados o configurar alertas por correo electrónico, así como otras configuraciones avanzadas.
Desde el momento en que expusiste tu servidor al mundo de internet, la seguridad no es una opción, sino una necesidad.
Un momento de descuido puede resultar en consecuencias fatales.
Fail2Ban será un sólido escudo que bloqueará dichas amenazas a tiempo.
No olvides que en este mismo instante, alguien está atacando tu servidor.
Add a New Comment