
easywall v2.4.1
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 cortafuegos. 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 automáticamente salvo 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 que está expuesto a la red no tiene ningún privilegio que valga la pena robar.
Una reescritura completa del easywall original — Python, Flask, iptables mediante subprocesos — que se archivó en 2022 después de una CVE. Ambas causas raíz han desaparecido: los privilegios viven en un proceso distinto, y la ruta de aplicación construye estructuras de Go en lugar de una línea de comandos. Cómo funciona →
Instalación
# 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.26+, 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.
Qué obtienes
| Puertos | TCP y UDP, individuales o por rango, con enrutamiento de fuerza bruta SSH por regla |
| Lista negra y lista blanca | IPv4, IPv6 y CIDR, evaluadas antes que cualquier regla de puertos |
| 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 |
| Inglés y alemán | Se puede cambiar en la interfaz, incluso antes de iniciar sesión |
| Claro y oscuro | Sigue al sistema operativo, con un interruptor manual; ambos con contraste verificado |
Construido con
| Go 1.26, 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 |
| Tipografías | Inter + JetBrains Mono, autoalojadas, ~145 KB — funciona en redes aisladas |
| CI | govulncheck, gosec, CodeQL, -race, y una suite de integración contra un kernel real |
Hoja de ruta
Lo primero es la corrección: un cortafuegos que silenciosamente hace menos de lo que dice es peor que uno que hace menos y lo dice.
| 2.6 | Pruebas de integración que verifican el significado, no la cantidad de reglas |
| 2.7 | Identidad: un usuario en el protocolo de socket, luego eventos de inicio de sesión, luego múltiples cuentas, luego 2FA |
| 2.8 | Una API REST con autenticación por token, ACME como opción, proxy inverso de confianza opt-in |
| 2.9 | Un contador opt-in de instalaciones |
Por qué cada una llega cuando llega, y qué enviaría el contador: Hoja de ruta →
Obtener ayuda
| Una pregunta, o algo que no se comporta correctamente | Discord |
| Un error, o una función que deseas | GitHub issues |
| Una vulnerabilidad de seguridad | Aviso de seguridad — no Discord, ni un issue público |
Contribuciones
Configuración, convenciones de commits y la lista de verificación de revisión: CONTRIBUTING.md.
Cualquier cosa visual pasa primero por DESIGN.md.
Problemas de seguridad: no como issue público — usa GitHub Security Advisories.
Licencia
GPL-3.0 — consulta LICENSE.