Qué hace este módulo #
fail2ban es el guardián que vigila los registros de tu servidor y, cuando detecta intentos de acceso maliciosos (por ejemplo, muchos fallos de contraseña por SSH), banea automáticamente la IP culpable durante un tiempo. Cada servicio vigilado se organiza en una jail (por ejemplo sshd).
El módulo fail2ban te da el control de esos baneos en tiempo de ejecución, sin tener que recordar la sintaxis de fail2ban-client: consulta el estado de las jails, lista quién está baneado, comprueba si una IP concreta está bloqueada, banea o desbanea a mano, desbloquea todo de golpe en una emergencia y recarga la configuración tras un cambio.
Este módulo actúa sobre un fail2ban ya instalado y en marcha. Todos los subcomandos consultan o modifican el estado del servicio, así que necesitan privilegios de root (usa sudo). Si te has quedado fuera por tu propia IP, salta directo al desbloqueo de urgencia.
Tareas comunes #
Elige lo que quieres hacer. Cada receta trae el comando ya escrito — solo cambia la IP o la jail por las tuyas, y pulsa Copiar.
1
Ver el estado y las jails
Comprueba de un vistazo si fail2ban está activo y cuántos hay baneados.
Conéctate por SSH a tu servidor con el usuario ubuntu y pide el estado general:
$ sudo imaxe fail2ban status¿Lo quieres en formato legible por máquina, para un script o un panel? Añade --json:
$ sudo imaxe fail2ban status --jsonsshd) y el número de IPs baneadas en cada una.2
Ver qué IPs están baneadas
Lista los baneos activos, de todas las jails o de una concreta.
Todas las IPs baneadas, de todas las jails a la vez:
$ sudo imaxe fail2ban banned¿Solo te interesa una jail? Indícala como argumento:
$ sudo imaxe fail2ban banned sshd3
Comprobar si una IP está baneada
Averigua en qué jails está bloqueada una dirección concreta.
Pregunta directamente por la IP; te dirá en qué jails aparece baneada:
$ sudo imaxe fail2ban check 203.0.113.74
Banear o desbanear una IP
Bloquea a mano una dirección abusiva o libera a un usuario legítimo.
Banea una IP en una jail concreta (si solo hay una jail, se infiere sola):
$ sudo imaxe fail2ban ban 203.0.113.7 --jail sshd¿Baneaste a alguien legítimo? Desbanéalo de todas las jails de una vez:
$ sudo imaxe fail2ban unban 203.0.113.7imaxe fail2ban check sobre esa misma IP.5
Desbloquearlo todo (urgencia)
Te has quedado fuera: libera todas las IPs de todas las jails.
Si tu propia IP quedó atrapada y necesitas recuperar el acceso ya, desbanéalas todas. Añade --yes para saltarte la confirmación:
$ sudo imaxe fail2ban unban-all --yesTras un cambio en la configuración de jails, recárgala para que se aplique:
$ sudo imaxe fail2ban reloadunban-allEs una operación destructiva del baneo: deja a todas las IPs sin bloquear, incluidas las maliciosas. Úsala solo para recuperar el acceso en una emergencia y comprueba después el estado con imaxe fail2ban status.
Sinopsis #
imaxe fail2ban <subcomando> [<ip>|<jail>] [--jail JAIL] [flags]Todos los subcomandos requieren privilegios de root (usa sudo) porque consultan o modifican el estado de fail2ban a través de fail2ban-client. Añade --json a status, banned o check para obtener salida legible por máquina, apta para scripting.
Subcomandos #
| Subcomando | Qué hace | Flags relevantes |
|---|---|---|
| status | Estado de fail2ban: activo, jails y nº de IPs baneadas por jail. | --json |
| banned | Lista las IPs baneadas (todas las jails o una concreta). | --json |
| check | Indica en qué jails está baneada una IP. | --json |
| ban | Banea manualmente una IP en una jail. | --jail |
| unban | Desbanea una IP de todas las jails. | — |
| unban-all | URGENCIA: desbanea TODAS las IPs de todas las jails. | --yes |
| reload | Recarga la configuración de fail2ban (valida jail.local). | — |
Argumentos y flags #
| Argumento / Flag | Tipo | Por defecto | Descripción |
|---|---|---|---|
| <ip> req. | string | — | La IP sobre la que operar. Obligatoria en check, ban y unban. |
| <jail> | string | todas | En banned, jail concreta a listar. Sin argumento, se listan todas las jails. |
| --jail | string | auto | En ban, jail destino del baneo. Si solo hay una jail, se infiere sola. |
| --yes | bool | false | En unban-all, confirma sin preguntar (operación destructiva del baneo). |
| --json | bool | false | En status/banned/check, emite el resultado como JSON en stdout. |
Ficheros y rutas #
| Ruta | Contenido |
|---|---|
| /etc/fail2ban/jail.local | Configuración local de fail2ban: jails activas, tiempos de baneo y umbrales. Lo que valida reload. |
| /var/run/fail2ban/fail2ban.sock | Socket de control con el que fail2ban-client habla con el servicio. |
| /var/log/fail2ban.log | Registro del propio fail2ban: baneos, desbaneos y recargas. |
Códigos de salida y logs #
Cada ejecución devuelve un código que puedes comprobar con echo $? — útil para encadenar en scripts:
Sigue el log en vivo mientras depuras:
$ sudo journalctl -u fail2ban -f
$ sudo tail -f /var/log/fail2ban.logResolución de problemas #
| Síntoma | Causa probable | Solución |
|---|---|---|
| Sale SERVICE (código 3) | fail2ban está parado o el socket no responde. | Arranca el servicio con systemctl start fail2ban y reintenta. |
| Sale JAIL (código 4) | La jail de --jail no existe o hay varias y no se puede inferir. | Mira las jails con imaxe fail2ban status e indica la correcta en --jail. |
| Sale RELOAD (código 5) | Hay un error de sintaxis en jail.local. | Corrige /etc/fail2ban/jail.local y vuelve a lanzar reload. |
| Me he quedado fuera por SSH | Tu propia IP acumuló fallos y quedó baneada en sshd. | Desde otra vía, desbanéala con unban o libéralas todas con unban-all --yes. |
¿Te atascaste con el módulo Fail2ban?
Escríbenos con la salida de «imaxe <módulo> status --json» y te respondemos rápido.