Qué hace este módulo #
El cortafuegos es la puerta del servidor: decide qué conexiones entran y cuáles se rechazan. En estas máquinas ese trabajo lo hace ufw (el cortafuegos de Ubuntu), y el módulo firewall te da un mando cómodo para operarlo sin memorizar la sintaxis de ufw.
Con él puedes ver de un vistazo el estado del cortafuegos (activo, política por defecto y reglas), bloquear a mano una IP o un rango que te está dando la lata, liberar ese bloqueo cuando ya no hace falta, y abrir o cerrar puertos manteniendo la configuración en sincronía con lo que ufw aplica.
Los baneos automáticos por intentos de intrusión (fuerza bruta de SSH, etc.) los gestiona fail2ban por su cuenta. Este módulo trabaja con tus bloqueos manuales: block, unblock y flush solo tocan lo que tú añades a mano y nunca interfieren con los baneos de fail2ban.
Tareas comunes #
Elige lo que quieres hacer. Cada receta trae el comando ya escrito — solo cambia la IP o el puerto por los tuyos, y pulsa Copiar.
1
Ver el estado del cortafuegos
Comprueba si está activo, su política por defecto y cuántas reglas tiene.
Conéctate por SSH a tu servidor y pide el resumen:
$ sudo imaxe firewall status¿Lo quieres para un script? Añade --json y tendrás la misma información legible por máquina:
$ sudo imaxe firewall status --json2
Bloquear una IP abusiva
Corta el acceso a una IP o rango que te está molestando.
Bloquea una IP concreta, dejando anotado el motivo para acordarte luego:
$ sudo imaxe firewall block 203.0.113.10 --reason "abuso"¿Solo quieres un bloqueo temporal? Ponle una duración con --ttl y se levantará solo. También puedes bloquear un rango entero en notación CIDR:
$ sudo imaxe firewall block 203.0.113.10 --reason "abuso" --ttl 24h
$ sudo imaxe firewall block 203.0.113.0/24 --reason "escaneo"--ttl, el bloqueo caduca solo al cumplirse el plazo.3
Ver qué IPs he bloqueado
Repasa la lista de bloqueos manuales que tienes activos.
Lista las IPs y rangos que has bloqueado a mano (recuerda: los baneos de fail2ban no salen aquí):
$ sudo imaxe firewall blocked4
Desbloquear una IP
Libera un bloqueo manual que ya no hace falta.
Libera la IP o el rango exactos que bloqueaste (tal y como aparecen en blocked):
$ sudo imaxe firewall unblock 203.0.113.105
Abrir o cerrar un puerto
Deja pasar un servicio nuevo o cierra uno que ya no ofreces.
Abre un puerto (con un comentario para saber para qué es). Puedes limitar quién entra con --from:
$ sudo imaxe firewall allow 443/tcp --comment "https"
$ sudo imaxe firewall allow 5432/tcp --from 203.0.113.0/24 --comment "postgres interno"Cierra un puerto que ya no usas:
$ sudo imaxe firewall deny 8080/tcpfirewall.yml. Compruébalo con imaxe firewall rules list.No cierres el puerto 22 (SSH) si estás conectado por SSH: perderías el acceso al servidor. El módulo mantiene 22/tcp permitido por defecto justo para evitar ese susto. Y recuerda que flush borra todos tus bloqueos manuales de golpe.
Sinopsis #
imaxe firewall <subcomando> [<ip>|<puerto>] [flags]Todos los subcomandos requieren privilegios de root (usa sudo) porque operan sobre ufw y escriben en /etc/imaxe/. Añade --json a status, blocked o rules list para obtener salida legible por máquina, apta para scripting.
Subcomandos #
| Subcomando | Qué hace | Flags relevantes |
|---|---|---|
| status | Estado del cortafuegos: activo, política por defecto, nº de reglas y bloqueos manuales. | --json |
| blocked | Lista las IPs/rangos bloqueados manualmente (no incluye los baneos de fail2ban). | --json |
| block | Bloquea una IP o rango manualmente, con motivo y duración opcionales. | --reason, --ttl |
| unblock | Libera un bloqueo manual. No toca los baneos de fail2ban. | — |
| flush | Borra todos los bloqueos manuales (destructivo). No toca los baneos de fail2ban. | --yes |
| rules list | Lista las reglas de puertos (puertos permitidos, orígenes). | --json |
| allow | Abre un puerto y lo refleja en la config. | --from, --comment |
| deny | Cierra un puerto y lo refleja en la config. | --from |
| reload | Recarga ufw (reaplica sus reglas activas). | — |
rules agrupa la gestión de reglas de puertos; por ahora su único subcomando es rules list.
Argumentos y flags #
| Argumento / Flag | Tipo | Por defecto | Descripción |
|---|---|---|---|
| <ip>[/cidr] req. | string | — | IP o rango CIDR sobre el que operar en block y unblock (p. ej. 203.0.113.10 o 203.0.113.0/24). |
| <port>[/proto] req. | string | — | Puerto sobre el que operar en allow y deny (p. ej. 443 o 443/tcp). |
| --reason | string | — | En block: motivo del bloqueo (informativo). |
| --ttl | duración | permanente | En block: duración del bloqueo (p. ej. 24h). Por defecto, permanente. |
| --from | cidr | cualquiera | En allow/deny: restringe el origen a un CIDR concreto. |
| --comment | string | — | En allow: comentario descriptivo de la regla. |
| --yes | bool | false | En flush: confirma sin preguntar (operación destructiva). |
| --json | bool | false | En status/blocked/rules list: emite el resultado como JSON en stdout. |
Ficheros y rutas #
| Ruta | Contenido |
|---|---|
| /etc/imaxe/firewall.yml | Configuración del módulo: puertos permitidos que allow/deny mantienen en sincronía con ufw. |
Ejemplo de firewall.yml:
allow:
- { port: 22, proto: tcp, comment: "ssh" }
- { port: 443, proto: tcp, comment: "https" }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 estado y las reglas en vivo mientras depuras:
$ sudo imaxe firewall status
$ sudo imaxe firewall rules listResolución de problemas #
| Síntoma | Causa probable | Solución |
|---|---|---|
| Sale NOTFOUND (código 3) al desbloquear | La IP no coincide exactamente con el bloqueo puesto (falta el /cidr, por ejemplo). | Ejecuta imaxe firewall blocked y copia la entrada tal cual para el unblock. |
Bloqueé una IP pero sigue apareciendo baneada tras unblock | El bloqueo lo puso fail2ban, no tú. | Este módulo solo libera bloqueos manuales; los baneos automáticos los gestiona fail2ban por separado. |
| Abrí un puerto pero no entra tráfico | La regla está en ufw pero un cortafuegos externo (security group) sigue cerrado. | Comprueba con imaxe firewall rules list y abre también el puerto en tu proveedor cloud. |
| Perdí el acceso SSH tras tocar reglas | Se cerró o quedó restringido el puerto 22. | Accede por la consola del proveedor y vuelve a permitir 22/tcp con imaxe firewall allow 22/tcp. |
¿Te atascaste con el módulo Firewall?
Escríbenos con la salida de «imaxe <módulo> status --json» y te respondemos rápido.