
easywall v2.14.0
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
O seu firewall. As suas regras. Sem surpresas.
Demonstração ao vivo · Documentação · Registo de alterações
nftables através de uma interface web que não o pode bloquear: cada aplicação reverte-se a si própria a menos que a confirme.
A ideia
Editar uma regra não muda nada. Aplicá-la muda tudo — durante 120 segundos. Se as novas regras cortarem a sua ligação, não pode clicar em Confirmar, e não confirmar é o que repõe as regras antigas.
Arquitetura
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
subprocesso — que foi arquivado em 2022 após uma CVE. Ambas as causas raiz desapareceram:
os privilégios vivem num processo diferente, e o caminho de aplicação constrói estruturas Go
em vez de uma linha de comandos. Como funciona →
Instalação
# Debian / Ubuntu — amd64 e 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
# A partir do código-fonte — 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.
O que obtém
| Portas | TCP e UDP, individuais ou em intervalo, com encaminhamento de força bruta SSH por regra |
| Lista negra e lista branca | IPv4, IPv6 e CIDR, avaliadas antes de qualquer regra de porta |
| Módulos de proteção | Doze, cinco ativos por predefinição — inundações, análises, bogons, fragmentos, broadcast/multicast/anycast |
| Reencaminhamento de portas | Redirecionamentos NAT com seleção de protocolo |
| Regras personalizadas | nftables puro, com verificação de sintaxe antes de ser aplicado |
| Exportar / importar | Todo o conjunto de regras como JSON |
| Registo de auditoria | O que mudou e quando, um objeto JSON por linha |
| Coexistência com Docker | É dono de table inet easywall, não toca em mais nada |
| Inglês, Alemão, Francês | Comutável na interface, inclusive antes do início de sessão. Um idioma pode estar parcial: o que falta é apresentado em inglês, e a lacuna é comunicada em vez de escondida |
| Claro e escuro | Segue o SO, com alternância manual; ambos verificados quanto a contraste |
Construído com
| Go 1.27, binário único | go-chi/chi · html/template |
nftables via google/nftables | netlink direto, sem subprocesso nft |
| Argon2id | golang.org/x/crypto, sal de 16 bytes por palavra-passe |
| CSRF | net/http.CrossOriginProtection, nativo do Go 1.25 |
| Sistema de design | DESIGN.md + Tailwind v4 — sem biblioteca de UI de terceiros |
| Tipos de letra | Inter + JetBrains Mono, auto-alojados, ~145 KB — funciona sem ligação à rede |
| CI | govulncheck, gosec, CodeQL, -race, e uma suíte de integração contra um kernel real |
Obter ajuda
| Uma pergunta, ou algo que não se comporta como esperado | Discord |
| Um erro, ou uma funcionalidade que deseja | Issues do GitHub |
| Uma vulnerabilidade de segurança | Aviso de segurança — não no Discord, e não como issue público |
Contribuir
Configuração, convenções de commit e a lista de verificação de revisão: CONTRIBUTING.md.
Qualquer coisa visual passa primeiro por DESIGN.md.
Questões de segurança: não como issue público — use GitHub Security Advisories.
Licença
GPL-3.0 — veja LICENSE.