
easywall v2.14.0
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.
easywall
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.
La idea
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 restaura las reglas anteriores.
Arquitectura
Dos procesos. El expuesto a la red no posee ningún privilegio que valga la pena robar.
Una reescritura completa del easywall original — Python, Flask, iptables mediante
subprocesos — que fue archivado en 2022 tras una CVE. Ambas causas raíz han desaparecido:
los privilegios viven en un proceso diferente, y la ruta de aplicación construye estructuras Go
en lugar de una línea de comandos. Cómo funciona →
Instalación
# Debian / Ubuntu — amd64 y 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
# Desde el código fuente — 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.
Lo que obtienes
| Puertos | TCP y UDP, individuales o en rango, con enrutamiento anti fuerza bruta SSH por regla |
| Lista negra y lista blanca | 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 puro, con verificació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 |
| English, Deutsch, Français | Conmutable en la interfaz, incluso antes de iniciar sesión. Un idioma puede estar incompleto: lo que falta 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 verificados en contraste |
Construido con
| Go 1.27, binario único | go-chi/chi · html/template |
nftables mediante google/nftables | netlink directo, sin subproceso nft |
| Argon2id | golang.org/x/crypto, sal 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 interfaz 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 |
Obtener ayuda
| Una pregunta, o algo que no se comporta bien | Discord |
| Un error, o una función que deseas | Incidencias de GitHub |
| Una vulnerabilidad de seguridad | Aviso de seguridad — no en Discord, ni como incidencia pública |
Contribuir
Configuración, convenciones de commits y la lista de revisión: CONTRIBUTING.md.
Cualquier cosa visual pasa primero por DESIGN.md.
Problemas de seguridad: no como incidencia pública — usa Avisos de seguridad de GitHub.
Licencia
GPL-3.0 — consulta LICENSE.