
easywall v2.4.1
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 à travers une interface web qui ne peut pas vous verrouiller dehors : chaque application s'annule d'elle-même sauf si vous la confirmez.
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 c'est le fait de ne pas confirmer 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 d'origine — Python, Flask, iptables via subprocess — qui a été archivé en 2022 après un CVE. Les deux causes racines ont disparu : les privilèges vivent dans un processus différent, et le chemin d'application construit des structs Go au lieu d'une ligne de commande. Comment ça marche →
Installation
# 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
Ouvrez ensuite https://localhost:12227. La première visite
configure le compte et prépare les premières règles.
Ce que vous obtenez
| Ports | TCP et UDP, unitaire ou par plage, avec routage anti-force brute SSH par règle |
| Liste noire & 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, broadcast/multicast/anycast |
| Redirection de ports | Redirections NAT avec sélection de protocole |
| Règles personnalisées | nftables bruts, vérifiés syntaxiquement avant application |
| Export / import | L'ensemble du jeu de règles en 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 et allemand | Sélectionnables dans l'interface, y compris avant connexion |
| Clair et sombre | Suit l'OS, avec bascule manuelle ; les deux contrastes vérifiés |
Construit avec
| Go 1.26, 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 de Go 1.25 |
| Système de design | DESIGN.md + Tailwind v4 — aucune bibliothèque d'interface tierce |
| Polices | Inter + JetBrains Mono, auto-hébergées, ~145 Ko — fonctionne sans connexion internet |
| CI | govulncheck, gosec, CodeQL, -race et une suite d'intégration contre un vrai noyau |
Feuille de route
L'exactitude d'abord : un pare-feu qui fait silencieusement moins que ce qu'il dit est pire qu'un pare-feu qui en fait moins et le dit.
| 2.6 | Des tests d'intégration qui vérifient le sens, pas le nombre de règles |
| 2.7 | Identité — un utilisateur dans le protocole socket, puis des événements de connexion, puis des comptes multiples, puis la 2FA |
| 2.8 | Une API REST avec authentification par jeton, ACME en option, proxy inverse de confiance en option |
| 2.9 | Un comptage des installations en option |
Pourquoi chacune arrive quand elle arrive, et ce que le comptage enverrait : Feuille de route →
Obtenir de l'aide
| Une question, ou un comportement anormal | Discord |
| Un bug, ou une fonctionnalité souhaitée | Problèmes GitHub |
| Une vulnérabilité de sécurité | Avis de sécurité — pas Discord, ni un problème public |
Contribuer
Configuration, conventions de commit et liste de vérification pour la 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.