
easywall v2.4.1
Interfaccia web per il firewall nftables su Linux, scritta in Go. L'applicazione si annulla da sola dopo 120 secondi a meno che non la confermi: non puoi rimanere bloccato fuori. Installazione Debian e Docker.
easywall
Il tuo firewall. Le tue regole. Nessuna sorpresa.
Demo live · Documentazione · Changelog
nftables attraverso un'interfaccia web che non può chiuderti fuori: ogni applicazione si annulla da sola a meno che tu non la confermi.
L'idea
Modificare una regola non cambia nulla. Applicarla cambia tutto — per 120 secondi. Se le nuove regole interrompono la tua connessione, non puoi fare clic su Conferma, e non confermare è ciò che riporta in vigore le vecchie regole.
Architettura
Due processi. Quello esposto alla rete non detiene alcun privilegio che valga la pena rubare.
Una riscrittura completa dell'easywall originale — Python, Flask, iptables tramite subprocess — che è stato archiviato nel 2022 dopo una CVE. Entrambe le cause profonde sono sparite: i privilegi risiedono in un processo diverso, e il percorso di apply costruisce struct Go invece di una riga di comando. Come funziona →
Installazione
# 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
Poi apri https://localhost:12227. La prima visita configura l'account e prepara le prime regole.
Cosa ottieni
| Porte | TCP e UDP, singole o in un intervallo, con instradamento anti-forza bruta SSH per regola |
| Blacklist e whitelist | IPv4, IPv6 e CIDR, valutate prima di qualsiasi regola sulle porte |
| Moduli di protezione | Dodici, cinque attivi per impostazione predefinita — flood, scansioni, bogon, frammenti, broadcast/multicast/anycast |
| Port forwarding | Reindirizzamenti NAT con selezione del protocollo |
| Regole personalizzate | nftables grezzo, controllato sintatticamente prima di essere applicato |
| Esportazione / importazione | L'intero set di regole come JSON |
| Log di audit | Cosa è cambiato e quando, un oggetto JSON per riga |
| Coesistenza con Docker | Possiede table inet easywall, non tocca nient'altro |
| Inglese e tedesco | Selezionabili nell'interfaccia, anche prima dell'accesso |
| Chiaro e scuro | Segue il sistema operativo, con un interruttore manuale; entrambi verificati per il contrasto |
Costruito con
| Go 1.26, binario singolo | go-chi/chi · html/template |
nftables tramite google/nftables | netlink diretto, nessun sottoprocesso nft |
| Argon2id | golang.org/x/crypto, salt da 16 byte per password |
| CSRF | net/http.CrossOriginProtection, nativo in Go 1.25 |
| Sistema di design | DESIGN.md + Tailwind v4 — nessuna libreria UI di terze parti |
| Font | Inter + JetBrains Mono, self-hosted, ~145 KB — funziona anche in ambienti air-gapped |
| CI | govulncheck, gosec, CodeQL, -race e una suite di integrazione contro un kernel reale |
Roadmap
Prima la correttezza: un firewall che fa silenziosamente meno di quanto dichiara è peggiore di uno che fa meno e lo dice.
| 2.6 | Test di integrazione che verificano il significato, non il numero di regole |
| 2.7 | Identità — un utente nel protocollo socket, poi eventi di login, poi più account, poi 2FA |
| 2.8 | Una REST API con autenticazione tramite token, ACME come opzione, reverse proxy affidabile opt-in |
| 2.9 | Un conteggio opt-in delle installazioni |
Perché ognuna arriva quando arriva, e cosa invierebbe il conteggio: Roadmap →
Supporto
| Una domanda, o qualcosa che non si comporta come dovrebbe | Discord |
| Un bug, o una funzionalità che desideri | GitHub issues |
| Una vulnerabilità di sicurezza | Security advisory — non Discord, e non una issue pubblica |
Contribuire
Configurazione, convenzioni sui commit e checklist di revisione: CONTRIBUTING.md. Qualsiasi elemento visivo passa prima da DESIGN.md.
Problemi di sicurezza: non come issue pubblica — usa GitHub Security Advisories.
Licenza
GPL-3.0 — vedi LICENSE.