
easywall v2.14.0
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 tramite 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 cliccare su Conferma, e non confermare è ciò che ripristina le vecchie regole.
Architettura
Due processi. Quello esposto alla rete non detiene alcun privilegio che valga la pena rubare.
Una riscrittura completa dell'originale easywall — Python, Flask, iptables tramite
subprocess — che è stato archiviato nel 2022 dopo una CVE. Entrambe le cause principali sono sparite:
i privilegi vivono in un processo diverso, e il percorso di applicazione costruisce struct Go
invece di una riga di comando. Come funziona →
Installazione
# 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
# Dal sorgente — 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
Poi apri https://localhost:12227. La prima visita
configura l'account e mette in sospeso le prime regole.
Cosa ottieni
| Porte | TCP e UDP, singole o a intervalli, con instradamento anti brute-force 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, scan, bogons, frammenti, broadcast/multicast/anycast |
| Port forwarding | Reindirizzamenti NAT con selezione del protocollo |
| Regole personalizzate | nftables grezzi, con controllo della sintassi prima dell'applicazione |
| Esportazione / importazione | L'intero set di regole come JSON |
| Registro di controllo | Cosa è cambiato e quando, un oggetto JSON per riga |
| Coesistenza con Docker | Possiede table inet easywall, non tocca nient'altro |
| English, Deutsch, Français | Commutabile nell'interfaccia, anche prima dell'accesso. Una lingua può essere parziale: ciò che manca viene mostrato in inglese, e il divario viene segnalato anziché nascosto |
| Chiaro e scuro | Segue il sistema operativo, con interruttore manuale; entrambi verificati per il contrasto |
Costruito con
| Go 1.27, binario singolo | go-chi/chi · html/template |
nftables tramite google/nftables | netlink diretto, nessun subprocesso nft |
| Argon2id | golang.org/x/crypto, salt da 16 byte per password |
| CSRF | net/http.CrossOriginProtection, nativo di Go 1.25 |
| Sistema di design | DESIGN.md + Tailwind v4 — nessuna libreria UI di terze parti |
| Caratteri | Inter + JetBrains Mono, self-hosted, ~145 KB — funziona in ambienti isolati |
| CI | govulncheck, gosec, CodeQL, -race, e una suite di integrazione contro un kernel reale |
Ottenere aiuto
| Una domanda, o qualcosa che non si comporta come previsto | Discord |
| Un bug, o una funzionalità che desideri | Issue GitHub |
| Una vulnerabilità di sicurezza | Advisory di sicurezza — non Discord, e non un'issue pubblica |
Contribuire
Configurazione, convenzioni sui commit e checklist di revisione: CONTRIBUTING.md.
Qualsiasi cosa visiva passa prima da DESIGN.md.
Problemi di sicurezza: non come issue pubblica — usa GitHub Security Advisories.
Licenza
GPL-3.0 — vedi LICENSE.