
Interface web pour le pare-feu nftables sous Linux, écrite en Go. La commande apply s'annule automatiquement après 120 secondes, sauf si vous la confirmez — vous ne pouvez pas vous verrouiller hors du système. Installation via Debian et Docker.
Votre pare-feu. Vos règles. Aucune surprise.
Démo en ligne · Documentation · Journal des modifications
nftables via une interface web qui ne peut pas vous verrouiller dehors : chaque application s'annule d'elle-même tant que vous ne l'avez pas confirmée.
Modifier une règle ne change rien. L'appliquer change tout — pendant 120 secondes. Si les nouvelles règles coupent votre connexion, vous ne pouvez pas cliquer sur Confirmer, et c'est le fait de ne pas confirmer qui rétablit les anciennes règles.
Deux processus. Celui exposé au réseau ne détient aucun privilège qui vaille la peine d'être volé.
Une réécriture complète de l'easywall d'origine — Python, Flask, iptables via
subprocess — qui a été archivé en 2022 après une CVE. Les deux causes profondes ont disparu :
les privilèges résident dans un processus différent, et le chemin d'application construit des
structs Go au lieu d'une ligne de commande. Comment ça marche →
# 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
Ouvrez ensuite https://localhost:12227. La première visite
configure le compte et prépare les premières règles.
| Ports | TCP et UDP, simple ou plage, avec routage anti-force brute SSH par règle |
| Liste de blocage et liste d'autorisation | IPv4, IPv6 et CIDR, évalués avant toute règle de port |
| Modules de protection | Douze, cinq activés par défaut — floods, scans, bogons, fragments, broadcast/multicast/anycast |
| Redirection de ports | Redirections NAT avec sélection du protocole |
| Règles personnalisées | nftables brut, vérifié syntaxiquement avant d'être appliqué |
| Export / import | L'ensemble des règles au format JSON |
| Journal d'audit | Ce qui a changé et quand, un objet JSON par ligne |
| Coexistence Docker | Possède table inet easywall, ne touche à rien d'autre |
| Anglais, Deutsch, Français | Modifiable dans l'interface, y compris avant la connexion. Une langue peut être partielle : ce qui manque s'affiche en anglais, et la lacune est signalée plutôt que masquée |
| Clair et sombre | Suit le système, avec un basculement manuel ; les deux sont vérifiés pour le contraste |
| Go 1.27, binaire unique | go-chi/chi · html/template |
nftables via google/nftables | netlink direct, pas de sous-processus nft |
| Argon2id | golang.org/x/crypto, sel de 16 octets par mot de passe |
| CSRF | net/http.CrossOriginProtection, natif Go 1.25 |
| Système de design | DESIGN.md + Tailwind v4 — aucune bibliothèque UI tierce |
| Polices | Inter + JetBrains Mono, auto-hébergées, ~145 KB — fonctionne hors ligne |
| CI | govulncheck, gosec, CodeQL, -race, et une suite d'intégration contre un vrai noyau |