
Interfaz web para el cortafuegos nftables en Linux, escrita en Go. Los cambios aplicados se revierten automáticamente después de 120 segundos a menos que los confirmes — es imposible quedarse sin acceso. Instalación para Debian y Docker.
Tu firewall. Tus reglas. Sin sorpresas.
Demo en vivo · Documentación · Registro de cambios
nftables a través de una interfaz web que no puede dejarte fuera: cada aplicación se revierte a sí misma a menos que la confirmes.
Editar una regla no cambia nada. Aplicarla lo cambia todo — durante 120 segundos. Si las nuevas reglas cortan tu conexión no puedes hacer clic en Confirmar, y no confirmar es lo que devuelve las reglas antiguas.
Dos procesos. El que está expuesto a la red no tiene ningún privilegio que merezca la pena robar.
Una reescritura completa del easywall original — Python, Flask, iptables vía
subprocess — que fue archivado en 2022 tras un CVE. Ambas causas raíz han desaparecido:
los privilegios viven en un proceso diferente, y la ruta de aplicación construye structs de Go
en lugar de una línea de comandos. Cómo funciona →
# Debian / Ubuntu — amd64 and arm64
ARCH=$(dpkg --print-architecture)
wget https://github.com/jp1337/easywall/releases/latest/download/easywall_$ARCH.deb
sudo dpkg -i easywall_$ARCH.deb && sudo apt-get install -f
# Docker
git clone https://github.com/jp1337/easywall.git && cd easywall && docker compose up -d
# From source — Go 1.27+, nftables
git clone https://github.com/jp1337/easywall.git && cd easywall
make build && sudo make install
sudo systemctl enable --now easywall-core easywall-web
Luego abre https://localhost:12227. La primera visita
configura la cuenta y prepara las primeras reglas.
| Puertos | TCP y UDP, individual o rango, con enrutamiento de fuerza bruta SSH por regla |
| Lista de bloqueo y lista de permitidos | IPv4, IPv6 y CIDR, evaluadas antes de cualquier regla de puerto |
| Módulos de protección | Doce, cinco activados por defecto — inundaciones, escaneos, bogons, fragmentos, broadcast/multicast/anycast |
| Reenvío de puertos | Redirecciones NAT con selección de protocolo |
| Reglas personalizadas | nftables en bruto, con comprobación de sintaxis antes de aplicarse |
| Exportar / importar | Todo el conjunto de reglas como JSON |
| Registro de auditoría | Qué cambió y cuándo, un objeto JSON por línea |
| Coexistencia con Docker | Posee table inet easywall, no toca nada más |
| Inglés, Deutsch, Français | Conmutable en la interfaz, incluso antes de iniciar sesión. Un idioma puede estar parcialmente traducido: lo que falte se muestra en inglés, y la carencia se informa en lugar de ocultarse |
| Claro y oscuro | Sigue al sistema operativo, con un conmutador manual; ambos con contraste verificado |
| Go 1.27, binario único | go-chi/chi · html/template |
nftables vía google/nftables | netlink directo, sin subprocess nft |
| Argon2id | golang.org/x/crypto, salt de 16 bytes por contraseña |
| CSRF | net/http.CrossOriginProtection, nativo de Go 1.25 |
| Sistema de diseño | DESIGN.md + Tailwind v4 — sin biblioteca de UI de terceros |
| Fuentes | Inter + JetBrains Mono, autoalojadas, ~145 KB — funciona sin conexión |
| CI | govulncheck, gosec, CodeQL, -race, y una suite de integración contra un kernel real |