Proxmox-Hardening: SSH und WebGUI mit Fail2Ban sichern

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.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert