
easywall v2.14.0
Weboberfläche für die nftables-Firewall unter Linux, geschrieben in Go. Das Anwenden macht sich nach 120 Sekunden selbst rückgängig, sofern du es nicht bestätigst — du kannst dich also nicht aussperren. Debian- & Docker-Installation.
easywall
Deine Firewall. Deine Regeln. Keine Überraschungen.
Live-Demo · Dokumentation · Changelog
nftables über eine Weboberfläche, die dich nicht aussperren kann: jedes Anwenden macht sich selbst rückgängig, wenn du es nicht bestätigst.
Die Idee
Das Bearbeiten einer Regel ändert nichts. Das Anwenden ändert alles — für 120 Sekunden. Wenn die neuen Regeln deine Verbindung kappen, kannst du nicht auf Bestätigen klicken, und nicht zu bestätigen ist genau das, was die alten Regeln zurückbringt.
Architektur
Zwei Prozesse. Der eine, der dem Netzwerk ausgesetzt ist, hält keine Berechtigung, die sich zu stehlen lohnt.
Eine vollständige Neuimplementierung des ursprünglichen easywall — Python, Flask, iptables über
Subprozess — das 2022 nach einer CVE archiviert wurde. Beide Grundursachen sind beseitigt:
Die Privilegien liegen in einem anderen Prozess, und der Anwendepfad baut Go-Strukturen
statt einer Kommandozeile. So funktioniert es →
Installation
# Debian / Ubuntu — amd64 und 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
# Aus dem Quellcode — 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
Öffne dann https://localhost:12227. Der erste Besuch
richtet das Konto ein und stellt die ersten Regeln bereit.
Was du bekommst
| Ports | TCP und UDP, einzeln oder als Bereich, mit SSH-Brute-Force-Routing pro Regel |
| Blacklist & Whitelist | IPv4, IPv6 und CIDR, werden vor jeder Portregel ausgewertet |
| Schutzmodule | Zwölf, fünf standardmäßig aktiv — Floods, Scans, Bogons, Fragmente, Broadcast/Multicast/Anycast |
| Portweiterleitung | NAT-Umleitungen mit Protokollauswahl |
| Benutzerdefinierte Regeln | Rohes nftables, vor dem Anwenden syntaxgeprüft |
| Export / Import | Der gesamte Regelsatz als JSON |
| Audit-Log | Was sich wann geändert hat, ein JSON-Objekt pro Zeile |
| Docker-Koexistenz | Besitzt table inet easywall, fasst nichts anderes an |
| Englisch, Deutsch, Français | In der Oberfläche umschaltbar, auch vor der Anmeldung. Eine Sprache kann unvollständig sein: Was fehlt, wird auf Englisch angezeigt, und die Lücke wird gemeldet statt versteckt |
| Hell & dunkel | Folgt dem Betriebssystem, mit manuellem Umschalter; beide kontrastgeprüft |
Gebaut mit
| Go 1.27, einzelne Binärdatei | go-chi/chi · html/template |
nftables über google/nftables | direktes Netlink, kein nft-Subprozess |
| Argon2id | golang.org/x/crypto, 16-Byte-Salt pro Passwort |
| CSRF | net/http.CrossOriginProtection, nativ in Go 1.25 |
| Designsystem | DESIGN.md + Tailwind v4 — keine UI-Bibliothek von Drittanbietern |
| Schriftarten | Inter + JetBrains Mono, selbst gehostet, ~145 KB — funktioniert ohne Internetanbindung |
| CI | govulncheck, gosec, CodeQL, -race und eine Integrationssuite gegen einen echten Kernel |
Hilfe bekommen
| Eine Frage oder etwas, das sich nicht richtig verhält | Discord |
| Ein Fehler oder eine gewünschte Funktion | GitHub Issues |
| Eine Sicherheitslücke | Security Advisory — nicht Discord und kein öffentliches Issue |
Mitwirken
Einrichtung, Commit-Konventionen und die Review-Checkliste: CONTRIBUTING.md.
Alles Visuelle geht zuerst durch DESIGN.md.
Sicherheitsprobleme: nicht als öffentliches Issue — nutze GitHub Security Advisories.
Lizenz
GPL-3.0 — siehe LICENSE.