Proxmox-Hardening: SSH und WebGUI mit Fail2Ban sichern

🔐 Proxmox absichern leicht gemacht
Proxmox ist eine leistungsstarke Open-Source-Virtualisierungslösung, die in vielen HomeLabs, KMUs und IT-Infrastrukturen zum Einsatz kommt. Doch wie bei jedem öffentlich erreichbaren System besteht ein Risiko: ungesicherte SSH- oder WebGUI-Zugriffe bieten ein leichtes Ziel für automatisierte Brute-Force-Angriffe.
Genau hier setzt Fail2Ban an – ein effektives Tool zur Abwehr solcher Angriffe. In diesem Beitrag zeigen wir dir, warum die Absicherung deines Proxmox-Servers so wichtig ist und wie du SSH und optional die WebGUI mit Fail2Ban schützt – Schritt für Schritt.
💡 Warum SSH- und WebGUI-Zugriffe schützen?
Jeder öffentlich zugängliche Server ist täglich Ziel tausender automatisierter Login-Versuche. Besonders SSH-Zugänge auf Port 22 und die WebGUI von Proxmox (Port 8006) sind beliebte Angriffsziele. Ohne Schutz können Angreifer durch sogenannte Brute-Force-Attacken Passwörter erraten und sich unautorisierten Zugang verschaffen.
Fail2Ban analysiert Logdateien, erkennt solche Attacken und blockiert verdächtige IP-Adressen automatisch – bevor Schaden entsteht.
🛠️ Schritt-für-Schritt: Fail2Ban für Proxmox einrichten
1. Fail2Ban installieren
Als erstes machen wir ein apt update und danach ein apt install
apt update && apt install fail2ban -y
Nach der Installation kannst du die Version prüfen:
fail2ban-client -V
2. Web-Zugriff absichern
Erstelle eine lokale Konfiguration:
Hierzu kopieren wir erst zu Sicherheit die aktuelle jail.conf nach jail.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Bearbeite die Datei:
nano /etc/fail2ban/jail.local
Am Ende der Datei jail.local einfach folgendes hinzufügen:
[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
backend = systemd
maxretry = 3
findtime = 2d
bantime = 1h
Filter anlegen:
nano /etc/fail2ban/filter.d/proxmox.conf
Füge hinzu:
[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
ignoreregex =
journalmatch = _SYSTEMD_UNIT=pvedaemon.service
3. SSH-Zugriff absichern
Suchen Sie wieder in der Datei jail.local nach dem Eintrag [sshd] und falls vorhanden ersetzen oder erstellen Sie den Block:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
4. Fail2Ban aktivieren und starten
systemctl enable fail2ban
systemctl start fail2ban
Status prüfen:
systemctl status fail2ban
#Sollte folgendes ausgeben:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-04-01 21:24:24 CEST; 3s ago
Docs: man:fail2ban(1)
Main PID: 136991 (fail2ban-server)
Tasks: 7 (limit: 38169)
Memory: 29.7M
CPU: 251ms
CGroup: /system.slice/fail2ban.service
└─136991 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Sollte aber ein Fehler ausgegeben werden:
× fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Tue 2025-04-01 21:22:18 CEST; 6s ago
Duration: 74ms
Docs: man:fail2ban(1)
Process: 135997 ExecStart=/usr/bin/fail2ban-server -xf start (code=exited, status=255/EXCEPTION)
Main PID: 135997 (code=exited, status=255/EXCEPTION)
CPU: 73ms
Apr 01 21:22:18 pve-SandBox systemd[1]: Started fail2ban.service - Fail2Ban Service.
Apr 01 21:22:18 pve-SandBox fail2ban-server[135997]: 2025-04-01 21:22:18,631 fail2ban.configreader [135997]: WARNING 'allowipv6' not defined in 'Definitio>
Apr 01 21:22:18 pve-SandBox fail2ban-server[135997]: 2025-04-01 21:22:18,638 fail2ban [135997]: ERROR Failed during configuration: Have not>
Apr 01 21:22:18 pve-SandBox fail2ban-server[135997]: 2025-04-01 21:22:18,638 fail2ban [135997]: ERROR Async configuration of server failed
Apr 01 21:22:18 pve-SandBox systemd[1]: fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION
Apr 01 21:22:18 pve-SandBox systemd[1]: fail2ban.service: Failed with result 'exit-code'.
Muss rsyslog nachinstalliert werden:
apt install rsyslog
🧪 Kontrolle & Monitoring
Zeige gebannte IPs an:
fail2ban-client status
iptables -L -n
Manuelle Entsperrung:
fail2ban-client set sshd unbanip 192.168.0.1
✅ Fazit
Mit wenigen Befehlen hast du deinen Proxmox-Server deutlich sicherer gemacht. Fail2Ban schützt dich zuverlässig vor Brute-Force-Angriffen auf SSH und optional auch die WebGUI. Du solltest es aber dennoch vermeiden deinen Proxmox Server nach außen zu veröffentlichen.
❓ FAQ: Häufige Fragen zu Fail2Ban in Proxmox
Was passiert, wenn ich mich selbst aussperre?
→ Du kannst dich über ein anderes Gerät oder Netz verbinden und dich manuell mit unbanip
entsperren.
Kann ich auch andere Dienste mit Fail2Ban absichern?
→ Ja, Fail2Ban unterstützt viele Dienste wie Apache, nginx, Postfix, FTP und mehr.
Wie lange bleibt eine IP gebannt?
→ Standardmäßig 1 Stunde (bantime = 1h
), individuell anpassbar.
Funktioniert Fail2Ban auch mit UFW oder iptables?
→ Ja. Fail2Ban nutzt intern iptables-Regeln, ist aber mit UFW kompatibel.