Retour aux mises à jour
New releaseAug 6, 2026

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.

Partager

easywall

Votre pare-feu. Vos règles. Aucune surprise.

Tests Build Security Coverage

Latest release Go version GPL-3.0 Discord Support on Ko-fi

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.

Le tableau de bord easywall : état du pare-feu avec état d'acceptation, modifications en attente et dernière application ; tuiles comptant les ports TCP, les ports UDP, la liste noire, la liste blanche, les règles personnalisées et la redirection ; et une liste d'activité récente.

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.

Machine à états : l'édition mène à Staged, l'application mène à Live, la confirmation dans la fenêtre mène à Confirmed, et laisser expirer la fenêtre mène à Rolled back, d'où les modifications en attente sont toujours disponibles.

Architecture

Deux processus. Celui exposé au réseau ne détient aucun privilège qui vaille la peine d'être volé.

Le navigateur dialogue en HTTPS avec easywall-web, qui s'exécute sans privilèges ; easywall-web échange du JSON typé via une socket Unix avec easywall-core, qui s'exécute en root et parle netlink à la table nftables inet easywall.

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

Arbre de décision : simple curiosité mène au mode démo ; Debian ou Ubuntu mène au paquet .deb ; des conteneurs déjà en cours d'exécution mènent à Docker ; sinon, compilation depuis les sources.
# 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

PortsTCP et UDP, unitaire ou par plage, avec routage anti-force brute SSH par règle
Liste noire & liste blancheIPv4, IPv6 et CIDR, évaluées avant toute règle de port
Modules de protectionDouze, cinq activés par défaut — inondations, scans, bogons, fragments, broadcast/multicast/anycast
Redirection de portsRedirections NAT avec sélection de protocole
Règles personnaliséesnftables bruts, vérifiés syntaxiquement avant application
Export / importL'ensemble du jeu de règles en JSON
Journal d'auditCe qui a changé et quand, un objet JSON par ligne
Coexistence avec DockerPossède table inet easywall, ne touche à rien d'autre
Anglais et allemandSélectionnables dans l'interface, y compris avant connexion
Clair et sombreSuit l'OS, avec bascule manuelle ; les deux contrastes vérifiés

Construit avec

Go 1.26, binaire uniquego-chi/chi · html/template
nftables via google/nftablesnetlink direct, pas de sous-processus nft
Argon2idgolang.org/x/crypto, sel de 16 octets par mot de passe
CSRFnet/http.CrossOriginProtection, natif de Go 1.25
Système de designDESIGN.md + Tailwind v4 — aucune bibliothèque d'interface tierce
PolicesInter + JetBrains Mono, auto-hébergées, ~145 Ko — fonctionne sans connexion internet
CIgovulncheck, 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.6Des tests d'intégration qui vérifient le sens, pas le nombre de règles
2.7Identité — un utilisateur dans le protocole socket, puis des événements de connexion, puis des comptes multiples, puis la 2FA
2.8Une API REST avec authentification par jeton, ACME en option, proxy inverse de confiance en option
2.9Un 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 anormalDiscord
Un bug, ou une fonctionnalité souhaitéeProblè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.

Catégories