Wer einen Proxmox VE Host im Internet betreibt und die Loginoberfläche so für alle offen hat, sollte sich vor fehlerhaften “Login Versuchen” schützen. Doch Fail2ban muss erstmal lernen wie ein fehlerhafter Loginversuch bei Proxmox aussieht. Dafür erstellen wir bei der Einrichtung eine kleine Konfigurationsdatei die dabei fail2ban unterstützt.
Wer noch kein fail2ban auf dem Proxmox Host installiert hat, der sollte dies nun tun mit folgendem Befehl.
apt install fail2ban
Als nächstes aktivieren / erstellen wir die Funktion damit fail2ban “Proxmox” als Aufgabe akzeptiert.
Dafür fügen wir in der Datei “/etc/fail2ban/jail.local” ein paar Zeilen hinzu.
Wer es genau wissen möchte. In dieser Konfiguration wird rückwirkend 6 Stunden in die Vergangenheit geschaut und bei 3 Fehlversuchen für wird 6 Stunden gesperrt. Diese Werte könnt Ihr natürlich auf eure Anforderung anpassen.
nano /etc/fail2ban/jail.local [proxmox] enabled = true port = https,http,8006 filter = proxmox logpath = /var/log/daemon.log maxretry = 3 # 6 ban time bantime = 21600 # 6 Stunden Rückwärts findtime = 21600
Jetzt müssen wir Fail2Ban noch beibringen wie man fehlerhafte Logins erkennt. Sowas macht sich in der Regel bemerkbar mit Einträgen in eine Logdatei. Wir lesen also die Datei aus und werten die dort enthaltenen Informationen aus.
- CPU: Intel J3710 Celeron Quad Core / 4 Thread bei 1,6 GHz (Burst auf 2,6 GHz), Intel AES-NI Hardwareunterstützung
- Anschlüsse: 4 Intel 2.5 Gigabit Ethernet NIC Ports, 2x USB 3.0, 2x HDMI, 1x RJ45 COM-Port
- Komponenten: 4 GB RAM, 32 GB SSD
Wir legen eine neue Datei an mit folgenden Pfad. /etc/fail2ban/filter.d/proxmox.conf
nano /etc/fail2ban/filter.d/proxmox.conf [Definition] failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.* ignoreregex =
Abschließend einmal alles zu Fail2ban Neustarten. Und wer möchte kann das sofort auch testen mit dem unten stehenden Befehl.
systemctl restart fail2ban ##### fail2ban-regex /var/log/daemon.log /etc/fail2ban/filter.d/proxmox.conf
16. Dezember 2022 um 18:35 Uhr
Man sollte auch ssh (22) hinzufuegen….
Und evtl Ausnahmen fuer eigene IP:
ignoreip = xx.xx.xx.xx/yy
5. Januar 2023 um 19:45 Uhr
Hi,
danke für den Beitrag. Bei
“Dafür fügen wir in der Datei “/etc/fail2ban/filter.d/proxmox.conf” ein paar Zeilen hinzu.”
hat sich aber wohl ein Tippfehler eingeschlichen (ist die gleiche Datei wie unten).
Sollte vermutlich die
/etc/fail2ban/jail.local
sein, oder?
lG
Rene
6. Januar 2023 um 10:21 Uhr
Wie Recht du hast. Ich habe das angepasst.
20. Januar 2023 um 14:04 Uhr
Hi Dennis,
du hast glaube die Filter und Jail config vertauscht?
VG, Jörg
18. Februar 2023 um 13:22 Uhr
ja hat er
19. Mai 2023 um 23:03 Uhr
Er hat es nun auch geändert!
24. August 2023 um 21:32 Uhr
Hi Dennis
kann es sein, das seit dem letzten Update die Logins in der
logpath = /var/log/auth.log
und nichtmehr in
logpath = /var/log/daemon.log
gespeichert werden?
Auch das eintrag:
failregex = pvedaemon\[.*authentication failure; rhost= user=.* msg=.*
scheint nicht mehr ganz richtig zu sein.
failregex = IPCC.xs\[.*authentication failure; rhost= user=.* msg=.*
oder so ähnlich sollte die jetzt sein?
VG Haecky
26. September 2023 um 20:41 Uhr
korrekt
10. September 2023 um 17:35 Uhr
Systemd bei der Logbasis als Backend beachten
[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
maxretry = 4
# 6 ban time
bantime = 6h
# 2 Tage Rückwärts log durchsuchen wegen fehlerhaften Logins
findtime = 2d
backend = systemd
hier sieht man dann den Status:
fail2ban-client status proxmox
26. September 2023 um 20:40 Uhr
Dennis-the-Pennis, hier mal eine gute Frage:
Wie kriegst du die Real IP des attackers in das auth.log ? Stehe hinter einem Nginx reverse proxy und bei mir kommt nur die IP des nginx durch im falle eines Login failures (wenn von ausserhalb). Trotzdem einen Fail2Ban zu implementieren würde mich angreifbar für DDOS machen, falls ich remote drauf will.
Wie kriegst du die echte IP durchgereicht? Kann nginx dass überhaupt! Bericht bis morgen 8:30 auf meinem Schreibtisch!