Proxmox-Login mit fail2ban absichern » serra.me

Proxmox-Login mit fail2ban absichern

Ich bin ein großer Freund von fail2ban – es gehört zur Standardausstattung aller meiner Systeme. Standardmäßig wird es dabei von mir zur Absicherung des SSH-Zugangs eingesetzt. Wobei „Absicherung“ hier sicherlich übertrieben ist – Passwort-Logins sind bei mir schon lange verboten und wenn mir einmal ein Private Key abhanden kommt, habe ich ohnehin ernsthaftere Probleme. Aber immerhin bleiben so die Logfiles sauber.

Aufgrund der Erweiterbarkeit bzw. der Möglichkeit, eigene Filterregeln zu erstellen, lässt sich fail2ban auch hervorragend zur Absicherung weiterer Dienste nutzen. Einzige Voraussetzung ist, dass der zu schützende Dienst fehlerhafte Login-Versuche in einer Logdatei aufzeichnet, sodass diese über Regex-Regeln erfasst werden können.

Da ich zur Virtualisierung meiner Systeme Proxmox einsetze, bietet es sich natürlich an, auch die Proxmox-Weboberfläche mit fail2ban abzusichern – sofern man nicht (wie eigentlich empfohlen) den Zugriff auf die Proxmox-Oberfläche auf bestimmte IPs oder Subnetze einschränkt.

Im ersten Schritt wird für Proxmox eine eigene fail2ban-Filterregel definiert. Dazu wird eine Datei /etc/fail2ban/filter.d/proxmox.conf mit folgendem Inhalt erstellt:

[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
ignoreregex =

Anschließend wird der soeben neu erstellte Filter in die Datei /etc/fail2ban/jail.local hinzugefügt:

[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
logpath = /var/log/daemon.log
maxretry = 3
bantime = 3600

Nach einem Neustart des fail2ban-Servers ist der neue Filter aktiv. Testweise kann nun einmal ein bewusst fehlerhafter Login an der Proxmox-Oberfläche durchgeführt werden, bei korrekter Konfiguration wird ein entsprechender „found“-Eintrag in der fail2ban-Logdatei erscheinen.

Kommentare

  1. Hey,

    finde deine Seite super und hole mir hier immer meine Ideen 😀
    Habe aber doch mal eine Frage: Ich nutze Proxmox auch auf meinem Server und habe das GUI aber hinter einem NGINX reverse Proxy „versteckt“ .. wie kann ich nun das ganze absichern? Ich muss doch die nginx log abfragen oder sehe ich das falsch? Hast du dafür auch einen Workaround? Eventuell könntest du das hier ja mit aufnehmen?

    1. Hi Alexander,

      vielen Dank für dein Feedback 🙂

      Das nginx-Log sollte hier eigentlich eher weniger relevant sein. Grundsätzlich werden die Zugriffsversuche trotz des nginx-Proxy weiterhin in der /var/log/daemon.log geloggt. Der einzige Unterschied, der sich aus dem Reverse Proxy ergibt, ist der, dass unter Umständen bei dem pveproxy die IP deines Proxies anstelle der „echten“ Client-IP ankommt. Damit würdest du dich dann quasi selbst aussperren, da jeder Login-Versuch dann für fail2ban direkt von deinem Proxy und nicht von dem fragwürdigen Client kommt.

      Zusammengefasst musst du deinem nginx sagen, an die „nachgeschaltete“ Anwendung (also Proxmox) die echte anfragende IP weiterzugeben. Dazu wäre die nginx-Konfiguration deines Proxies folgendermaßen zu ergänzen:

      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

      Wenn du diese Option gesetzt hast, kannst du ja einmal ein paar fehlerhafte Logins (mit deaktiviertem Fail2ban!) provozieren. Wenn dann in der daemon.log deine IP und nicht die des Proxies auftaucht, kannst du die Filter tatsächlich einfach so wie in dem Artikel setzen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.