
easywall v2.14.0
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.
easywall
Votre pare-feu. Vos règles. Aucune surprise.
Démo en direct · Documentation · Changelog
nftables via une interface web qui ne peut pas vous enfermer dehors : chaque application s'annule d'elle-même à moins que vous ne la confirmiez.
L'idé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 ne pas confirmer est ce qui ramène les anciennes règles.
Architecture
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 original — Python, Flask, iptables via
sous-processus — qui a été archivé en 2022 après une CVE. Les deux causes racines ont disparu :
les privilèges vivent dans un processus différent, et le chemin d'application construit des structures Go
au lieu d'une ligne de commande. Comment ça marche →
Installation
# Debian / Ubuntu — amd64 et 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
# Depuis les sources — 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
Ensuite, ouvrez https://localhost:12227. La première visite
configure le compte et met en attente les premières règles.
Ce que vous obtenez
| Ports | TCP et UDP, simples ou par plage, avec routage anti-force brute SSH par règle |
| Liste noire et liste blanche | IPv4, IPv6 et CIDR, évaluées avant toute règle de port |
| Modules de protection | Douze, cinq activés par défaut — inondations, scans, bogons, fragments, diffusion/multidiffusion/anycast |
| Transfert de port | Redirections NAT avec sélection du protocole |
| Règles personnalisées | nftables bruts, vérifiés syntaxiquement avant application |
| Export / import | L'ensemble du jeu de règles au format JSON |
| Journal d'audit | Ce qui a changé et quand, un objet JSON par ligne |
| Coexistence avec Docker | Possède table inet easywall, ne touche à rien d'autre |
| Anglais, Deutsch, Français | Commutable dans l'interface, y compris avant la connexion. Une langue peut être partielle : ce qui manque s'affiche en anglais, et l'écart est signalé plutôt que masqué |
| Clair et sombre | Suit le système d'exploitation, avec un basculement manuel ; les deux vérifiés en contraste |
Construit avec
| 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 conception | DESIGN.md + Tailwind v4 — aucune bibliothèque d'interface tierce |
| Polices | Inter + JetBrains Mono, auto-hébergées, ~145 Ko — fonctionne hors ligne |
| CI | govulncheck, gosec, CodeQL, -race, et une suite d'intégration contre un vrai noyau |
Obtenir de l'aide
| Une question, ou quelque chose qui ne se comporte pas comme prévu | Discord |
| Un bug, ou une fonctionnalité souhaitée | Problèmes GitHub |
| Une vulnérabilité de sécurité | Avis de sécurité — pas sur Discord, et pas un problème public |
Contribuer
Configuration, conventions de commit et liste de contrôle de revue : CONTRIBUTING.md.
Tout ce qui est visuel passe d'abord par DESIGN.md.
Problèmes de sécurité : pas comme problème public — utilisez GitHub Security Advisories.
Licence
GPL-3.0 — voir LICENSE.