Curso de servidores linux
¿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.
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
Paso 1: Actualizar el sistema
Siempre empezamos así:
1sudo apt update 2sudo apt upgrade -y
Paso 2: Instalar Fail2Ban
En Linux Mint (basado en Ubuntu):
1sudo apt install fail2ban -y
Comprueba que está instalado:
1fail2ban-client --version
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
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
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) |
Paso 6: Reiniciar Fail2Ban
1sudo systemctl restart fail2ban
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
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 😈
📁 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 |