
easywall v2.4.1
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.
easywall
Sua firewall. Suas regras. Sem surpresas.
Demonstração ao vivo · Documentação · Changelog
nftables por meio de uma interface web que não pode trancar você para fora: toda aplicação é revertida sozinha, a menos que você a confirme.
A ideia
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.
Arquitetura
Dois processos. O que fica exposto à rede não possui 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 um CVE. As duas causas raiz desapareceram:
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 →
Instalação
# 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
Depois abra https://localhost:12227. A primeira visita
configura a conta e prepara as primeiras regras.
O que você obtém
| Portas | TCP e UDP, único ou em intervalo, com roteamento de força bruta SSH por regra |
| Blacklist e whitelist | 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, fragments, broadcast/multicast/anycast |
| Encaminhamento de portas | Redirecionamentos NAT com seleção de protocolo |
| Regras personalizadas | nftables puro, com verificação de sintaxe antes da aplicação |
| 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 e não toca em mais nada |
| Inglês e alemão | Alternável na interface, inclusive antes do login |
| Claro e escuro | Segue o sistema operacional, com alternância manual; ambos com contraste verificado |
Construído com
| Go 1.26, binário único | go-chi/chi · html/template |
nftables via google/nftables | netlink direto, sem subprocesso nft |
| Argon2id | golang.org/x/crypto, salt de 16 bytes por senha |
| CSRF | net/http.CrossOriginProtection, nativo no 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 sem conexão com a internet |
| CI | govulncheck, gosec, CodeQL, -race e uma suíte de integração contra um kernel real |
Roadmap
Correção em primeiro lugar: uma firewall que silenciosamente faz menos do que promete é pior do que uma que faz menos e admite isso.
| 2.6 | Testes de integração que verificam o significado, não contagens de regras |
| 2.7 | Identidade — um usuário no protocolo de socket, depois eventos de login, depois múltiplas contas, depois 2FA |
| 2.8 | Uma API REST com autenticação por token, ACME como opção, proxy reverso confiável opt-in |
| 2.9 | Uma contagem opt-in de instalações |
Por que cada um vem quando vem, e o que a contagem enviaria: Roadmap →
Como obter ajuda
| Uma pergunta ou algo que não está se comportando como esperado | Discord |
| Um bug ou uma funcionalidade que você deseja | GitHub issues |
| Uma vulnerabilidade de segurança | Aviso de segurança — não Discord, nem um issue público |
Contribuindo
Configuração, convenções de commit e o checklist de revisão: CONTRIBUTING.md.
Qualquer coisa visual passa primeiro por DESIGN.md.
Problemas de segurança: não como um issue público — use GitHub Security Advisories.
Licença
GPL-3.0 — veja LICENSE.