
Interface web para o firewall nftables no Linux, escrita em Go. A aplicação é desfeita após 120 segundos, a menos que você a confirme — você não consegue se bloquear. Instalação via Debian e Docker.
Seu firewall. Suas regras. Sem surpresas.
Demonstração ao vivo · Documentação · Changelog
nftables através de uma interface web que não pode te trancar do lado de fora: toda aplicação se reverte, a menos que você a confirme.
Editar uma regra não muda nada. Aplicá-la muda tudo — por 120 segundos. Se as novas regras cortarem sua conexão, você não poderá clicar em Confirmar, e não confirmar é o que traz as regras antigas de volta.
Dois processos. O que está exposto à rede não detém nenhum privilégio que valha a pena roubar.
Uma reescrita completa do easywall original — Python, Flask, iptables via
subprocess — que foi arquivado em 2022 após uma CVE. Ambas as causas raiz foram eliminadas:
os privilégios vivem em um processo diferente, e o caminho de aplicação constrói structs Go
em vez de uma linha de comando. Como 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
Depois abra https://localhost:12227. A primeira visita
configura a conta e prepara as primeiras regras.
| Portas | TCP e UDP, única ou intervalo, com roteamento de força bruta SSH por regra |
| Blocklist e allowlist | IPv4, IPv6 e CIDR, avaliados antes de qualquer regra de porta |
| Módulos de proteção | Doze, cinco ativados por padrão — floods, scans, bogons, fragmentos, broadcast/multicast/anycast |
| Encaminhamento de portas | Redirecionamentos NAT com seleção de protocolo |
| Regras personalizadas | nftables bruto, com verificação de sintaxe antes de ser aplicado |
| Exportar / importar | Todo o conjunto de regras como JSON |
| Log de auditoria | O que mudou e quando, um objeto JSON por linha |
| Coexistência com Docker | Possui a table inet easywall, não toca em mais nada |
| Inglês, Deutsch, Français | Alternável na interface, inclusive antes do login. Um idioma pode estar parcial: o que falta é exibido em inglês, e a lacuna é reportada em vez de ocultada |
| Claro e escuro | Segue o SO, com alternância manual; ambos com contraste verificado |
| Go 1.27, binário único | go-chi/chi · html/template |
nftables via google/nftables | netlink direto, sem subprocess nft |
| Argon2id | golang.org/x/crypto, salt de 16 bytes por senha |
| CSRF | net/http.CrossOriginProtection, nativo do Go 1.25 |
| Sistema de design | DESIGN.md + Tailwind v4 — sem biblioteca de UI de terceiros |
| Fontes | Inter + JetBrains Mono, auto-hospedadas, ~145 KB — funciona em rede isolada |
| CI | govulncheck, gosec, CodeQL, -race, e uma suíte de integração contra um kernel real |