README and all guides under docs/ are now in German, with German anchors for the cross references. Code and configuration blocks are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4.6 KiB
fail2ban-webui
Eine schlanke, selbst gehostete Weboberfläche, um fail2ban-Sperren auf mehreren Hosts anzuzeigen, zu setzen und aufzuheben – Bare Metal, VMs, LXC-Container oder Docker-Hosts.
- Eine Seite für alle Hosts: aktuelle Sperren pro Jail, Herkunft (GeoIP) mit Weltkarte, Suche und Filter
- IP dauerhaft auf beliebigen Hosts sperren, pro Jail oder überall entsperren
- Protokoll jeder Aktion (wer, wann, von wo)
- Optional: Log-Verlauf pro IP aus Loki, Links nach Grafana
- Anmeldung mit lokalem Benutzer, OpenID Connect (z. B. Authentik) oder über den Reverse Proxy
- Oberfläche auf Englisch und Deutsch, weitere Sprachen über eine JSON-Datei
- Läuft als gehärteter Container (schreibgeschützt, ohne Capabilities, nicht als root),
amd64undarm64
Browser ──HTTPS──▶ Reverse Proxy ──▶ fail2ban-webui (Docker)
│ SSH, ein eingeschränkter Schlüssel
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
Host A (Bare Metal) LXC-Container Docker-Host
f2b-webctl f2b-webctl f2b-webctl
fail2ban fail2ban fail2ban
Die Weboberfläche bekommt nie eine Shell auf deinen Hosts. Auf jedem Host läuft ein kleiner
Agent, f2b-webctl, als SSH-Forced-Command. Er kennt nur
list, ban <ip>, unban <jail> <ip>, unban-all <ip> und version, sperrt niemals
private Netze, die eigenen Adressen des Hosts oder Einträge seiner Schutzliste und
protokolliert jede Aktion im Syslog. Zugriff auf den fail2ban-Socket wäre gleichbedeutend
mit root – die Sicherheitsgrenze ist der Agent, nicht die Weboberfläche.
Schnellstart
mkdir -p /opt/fail2ban-webui/{config,data} && cd /opt/fail2ban-webui
curl -fsSLo docker-compose.yaml https://git.retronerd.at/schiwagoa/fail2ban-webui/raw/branch/main/examples/docker-compose.yaml
curl -fsSLo .env https://git.retronerd.at/schiwagoa/fail2ban-webui/raw/branch/main/examples/.env.example
curl -fsSLo config/hosts.yaml https://git.retronerd.at/schiwagoa/fail2ban-webui/raw/branch/main/examples/hosts.yaml.example
chown -R 10050:10050 data
docker compose run --rm -it fail2ban-webui hash-password # Zeile in die .env übernehmen
docker compose run --rm fail2ban-webui keygen # öffentlicher Schlüssel für die Agenten
# auf jedem fail2ban-Host den Agenten installieren (docs/agent.md), danach:
docker compose run --rm -it fail2ban-webui keyscan
docker compose run --rm fail2ban-webui check
docker compose up -d
Die Oberfläche lauscht auf 127.0.0.1:8080 – davor gehört ein Reverse Proxy mit TLS.
Dokumentation
| Installation | Weboberfläche Schritt für Schritt, von mkdir bis zur ersten Anmeldung |
| Agent | f2b-webctl auf Bare Metal, LXC und Docker-Hosts installieren |
| Konfiguration | alle Einstellungen in .env und hosts.yaml |
| Anmeldung | lokaler Login, OpenID Connect (Authentik), Anmeldung über den Reverse Proxy |
| Reverse Proxy | Nginx Proxy Manager, Caddy, Traefik, nginx |
| Betrieb | Logs, Updates, Backups, Fehlersuche |
| Entwicklung | lokales Testbed, Tests, neue Sprache hinzufügen |
| Sicherheit | Sicherheitsmodell und Melden von Schwachstellen |
Voraussetzungen
- Weboberfläche: Docker mit Compose v2,
amd64oderarm64 - Jeder fail2ban-Host: fail2ban ≥ 0.11 (Start-/Endzeiten brauchen
--with-time),python3,sshd,sudo(oder ein root-Schlüssel),bash
Lizenz
MIT. IP-Geolokalisierung durch DB-IP Lite (CC BY 4.0), wird
nur bei GEOIP_AUTO_DOWNLOAD=1 heruntergeladen. Weltkarte von Natural Earth
(Public Domain), in der App enthalten.
🏰 Website · 🐘 Mastodon · 🔒 Datenschutz · 💬 Support
© Thomas Werner Schwaighofer · retronerd.AT · MIT Lizenz
