Seguridad y Prevención de Ataques de Fuerza Bruta con Fail2Ban
1. Qué es Fail2Ban y por qué instalarlo? #
Fail2Ban es una herramienta de seguridad preventiva.
👉 Su función principal es:
- Vigilar los logs del sistema (SSH, Apache, Nginx, etc.)
- Detectar intentos repetidos de acceso fallido
- Bloquear automáticamente la IP atacante mediante el firewall (iptables / nftables)
En tu caso (Linux Mint + SSH): #
- Protege el puerto 22
- Evita ataques de fuerza bruta
- Es ideal incluso en máquinas virtuales (hábitos profesionales)
Fail2Ban no sustituye a un firewall, lo complementa.
2. Cómo funciona (idea rápida) #
- Un atacante intenta entrar por SSH varias veces
- Fail2Ban detecta los errores en
/var/log/auth.log - Si supera un límite → banea la IP
- Tras un tiempo → desbanea automáticamente
3. Paso 1: Actualizar el sistema #
Siempre empezamos así:
1sudo apt update 2sudo apt upgrade -y
4. Paso 2: Instalar Fail2Ban #
En Linux Mint (basado en Ubuntu):
1sudo apt install fail2ban -y
Comprueba que está instalado:
1fail2ban-client --version
5. Paso 3: Comprobar estado del servicio #
1sudo systemctl status fail2ban
Deberías ver algo como:
Active: active (running)
Si no estuviera activo:
1sudo systemctl enable --now fail2ban
6. Paso 4: Configuración correcta (MUY IMPORTANTE) #
❌ Nunca edites jail.conf directamente
✔️ Siempre se usa jail.local
Crear el archivo de configuración local #
1sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ahora edítalo:
1sudo nano /etc/fail2ban/jail.local
7. Paso 5: Configurar protección SSH #
Busca la sección [sshd] y déjala así (o similar):
1[sshd] 2enabled = true 3port = ssh 4logpath = %(sshd_log)s 5maxretry = 5 6bantime = 10m 7findtime = 10m
¿Qué significa esto? #
| Parámetro | Explicación |
|---|---|
enabled | Activa la protección |
maxretry | Intentos permitidos |
findtime | Tiempo para contar intentos |
bantime | Tiempo de bloqueo |
port | Puerto SSH (22 o personalizado) |
8. Paso 6: Reiniciar Fail2Ban #
1sudo systemctl restart fail2ban
9. Paso 7: Comprobar que SSH está protegido #
1sudo fail2ban-client status
Salida esperada:
Jail list: sshd
Ver detalles del jail SSH:
1sudo fail2ban-client status sshd
Ejemplo de salida:
Currently banned: 0
Total banned: 3
10. Paso 8: (Opcional) Probar Fail2Ban #
Desde Windows, intenta:
- Conectarte por SSH con usuario correcto y contraseña incorrecta
- Repite varias veces
Después revisa:
1sudo fail2ban-client status sshd
Verás cómo sube el contador o se bloquea la IP 😈
11. Archivos importantes que debes conocer #
| Archivo | Uso |
|---|---|
/etc/fail2ban/jail.conf | Configuración base |
/etc/fail2ban/jail.local | Configuración personalizada |
/var/log/fail2ban.log | Logs de Fail2Ban |
/var/log/auth.log | Logs de SSH |
Resumen del tema
Conceptos clave #
- Protección Reactiva de Accesos (Fail2Ban): demonio de seguridad que analiza logs del sistema (
/var/log/auth.log) para mitigar ataques de fuerza bruta bloqueando temporalmente IPs en el firewall (iptables/nftables). - Jerarquía de Configuración (
jail.local): nunca modificarjail.conf; se sobrescribe creando/etc/fail2ban/jail.local. - Parámetros Esenciales de un Jail (
[sshd]):maxretry: número máximo de fallos tolerados antes del bloqueo (ej. 5).findtime: ventana temporal en la que se contabilizan los intentos (ej. 10m).bantime: duración del baneo temporal de la IP (ej. 10m).
- Inspección Operativa: monitorizar prisiones y consultar IPs bloqueadas con
sudo fail2ban-client status sshd.
Qué debes recordar #
Fail2Ban inspecciona logs de autenticación y bloquea automáticamente en el cortafuegos a las IPs que superan los intentos fallidos permitidos en jail.local.