Proxmox PVE Virtual Environment Firewall Zugriff auf Management einschränken
Aus znilwiki
Changelog:
- 27.04.2025 erste Version
Vorwort
In einem anderen Beitrag habe ich die Einrichtung von Proxmox PVE auf einem Bare-Metal-Server von OVH bzw. SoYouStart beschrieben.
Ok, nicht die Installation (die passiert automatisch) sondern wie man darauf eine virtuelle Firewall mit pfSense installiert und dieser einer der Failover-IP-Adressen verpasst.
Es gibt auch immer eine Haupt-IP-Adresse, die braucht der Proxmox PVE Host aber selbst.
Nun steht dieser aber auch mit einer öffentlichen IP-Adresse, weltweit erreichbar, direkt im Internet.
Das ist natürlich nicht schön - aber Proxmox hat ja auch eine Firewall, also habe ich diese genutzt. Das war natürlich - wieder einmal - kein Selbstläufer, also habe ich diese Anleitung hier erstellt.
In der Anleitung erlaube ich den Zugriff auf das Proxmox-Management und SSH nur von meinen festen öffentlichen IP-Adressen aus.
Das ganze funktioniert natürlich auch intern - zum Test habe einen Test-Proxmox in meinem lokalen LAN abgesichert.
Bitte lest immer erst alles durch und beachtet die Hinweise - nicht das Ihr euch ggf. selbst aussperrt. Neue Firewallregeln landen z.B. immer erst an oberster Position. Also immer erst Regel erstellen, an die richtige Stelle schieben und dann aktivieren.
Ausgangslage
mein Proxmox PVE Server hat folgende Netzwerkeinstellungen:
Also die IP
37.187.93.131
Ich habe zu Hause zwei Internetanschlüsse mit festen IP-Adressen:
- Glasfaser Telekom: 80.153.150.156
- Kabelanschluss Vodafone: 90.187.238.201
Ich möchte nun das man auf das auf den Proxmox nur noch von diesen beiden IP-Adressen zugreifen kann.
Wichtiger Hinweis
Alle Änderungen an den Firewall-Regeln gelten - sofern diese erst einmal eingeschaltet ist - unmittelbar.
Ihr ändert etwas? Ein paar Sekunden später gilt die Regel.
Weshalb ich euch unbedingt an Herz legen möchte, gerade Regeln mit DROP immer deaktiviert zu erstellen.
Neu erstellte Regeln landen immer auf Platz 1. Und gerade DROP Regeln gehören oftmals an das Ende.
Bei der Anwendung wird der erste Treffer genommen.
Und wir kommen nicht ohne DROP Regeln aus. Denn es gibt einige Anti-Lockout-Regeln die verhindern sollen das Ihr euch aussperrt. Um diese zu überschreiben, braucht es explizite DROP Regeln.
Unterschiede Alias und IPSet
Der Unterschied zwischen Alias und IPSet liegt in der Verwaltung.
Ein Alias hat einen Namen und eine dazu gehörige IP-Adresse oder Netzwerk:
DCNEW ist hier ein Host mit einer einzelnen IP-Adresse,
SoYouStart ein ganzes Netzwerk mit 24er Maske
Ein IPSet ist eine Gruppe von Adressen. Zu diesen können dann mehre IP-Adressen, Subnetze aber auch Aliase gehören (also verschachteln):
Im IPSet admin-systems sind die IP 192.168.1.32 und der Alias DCNEW Mitglied.
In der Praxis kann also die Nutzung von beidem sinnvoll sein:
- Aliase anlegen um eine eindeutige Benennung zu haben
- IPSets um Funktiongruppen abzubilden
Ich lege hier erst die Aliase an und packe beide in ein IPSet.
Datacenter: Aliase anlegen
Unter
Datacenter => Firewall => Alias
lege ich zwei neue Einträge an:
Im Namen bitte keine Leerzeichen oder ungewöhnlichen Sonderzeichen! Wenn der Name nicht passt gibt es eine "RegEx Warnung".
Hinterher sieht meine Alias Tabelle so aus:
Datacenter: IPSet anlegen
Unter
Datacenter => Firewall => IPSet
lege ich ein neues IPSet an:
Auch hier keine Leerzeichen / Sonderzeichen!
Dann markiere ich links mein IPSet und kann dann rechts die Aliase hinzufügen:
1 das IPSet markieren und bei 2 auf Add drücken
Es erscheint dann schon die Auswahl der möglichen Aliase:
Ich füge beide nacheinander und einzeln hinzu so das es hinterher so aussieht:
Datacenter: Security Group anlegen
Unter
Datacenter => Firewall => Security Group
bauen wir nun eine Gruppe mit Zugriffsregeln:
Diese wieder markieren damit wir rechts Regeln / Rules hinzufügen können:
1 die Gruppe markieren um bei 2 per Add eine neue Regel hinzufügen:
Ihr seht, wir könnten auch direkt Aliase auswählen, ich wähle aber nun das IPSet:
Damit erlauben wir den Admin-Systemen den vollen Zugriff auf alles.
Nach dem Speichern müsst die die Regel noch aktivieren indem der Haken bei On gesetzt wird:
Datacenter: Firewall Regel für den Zugriff hinzufügen
Unter
Datacenter => Firewall
also links 1 Firewall markieren und dann rechts 2 auf Insert Security Group
Den Haken bei Enable nicht vergessen!
Proxmox Host: Firewall Regel für den Zugriff hinzufügen
In anderen Anleitungen wird nun noch mal expliziert eine Regel für den Zugriff für die einzelnen Hosts angelegt.
Und zwar auf deren Network-Device. Aus meiner Sicht wird die nicht gebraucht, die Regel(n) auf dem Datacenter sind nicht an bestimmte Schnittstellen gebunden sondern gelten allgemein.
Eventuell ergänze ich hier später noch etwas.
Datacenter: Firewall aktivieren
Wir haben bisher nur "erlauben" Regeln und noch keine die etwas verbietet.
Die Anti-Lookout-Regeln greifen also noch alle, also können wir im Moment noch gefahrlos die Firewall einschalten.
Wir schauen unter
Host/Node => Firewall => Options
und stellen fest das die Firewall doch schon eingeschaltet ist?
Ja, aber für das Datacenter ist diese noch ausgeschaltet, also unter
Datacenter => Firewall => Options
geschaut, den Eintrag Firewall markieren und auf Edit gehen:
und diese aktivieren.
Und es passiert ... nichts! Genau so soll es sein.
Datacenter: Erste DROP Regel setzen
Proxmox PVE nutzt - eingehend - für das Management folgende Ports:
8006 TCP Webinterface 5900-5999 TCP VNC Web Konsole 3128 TCP SPICE Proxy 22 TCP SSH 25 TCP SMTP (bei OVH aktiv, im Normalfall nicht) 111 UDP RPC Remote Procedure Call 5405-5412 UDP CoroSync Cluster Traffic 60000-60050 TCP Live Migration von VMs
Siehe auch: https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_ports_used_by_proxmox_ve
Über Port 8006 sind wir gerade mit dem Webinterface verbunden.
Hier habe ich einen Unterschied zwischen "Intern" und "Extern über öffentliche IP" festgestellt.
Intern sieht ein Scan mit nmap wie folgt aus (von einem Host der nicht berechtigt sein sollte:
nmap 192.168.0.211 -p 8006,3128,22
Ausgabe:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-27 20:19 CEST Nmap scan report for 192.168.0.211 Host is up (0.00048s latency). PORT STATE SERVICE 22/tcp open ssh 3128/tcp open squid-http 8006/tcp open wpl-analytics MAC Address: 00:25:90:A6:92:68 (Super Micro Computer) Nmap done: 1 IP address (1 host up) scanned in 1.32 seconds
Bei über extern kommt jetzt schon nichts mehr.
Die Ports sind normalerweise in der Anti-Lockout-Policy, also fügen wir diese hinzu.
Für den ersten Test sperren wir Port 3128:
Unter
Datacenter => Firewall
Fügen wir eine weitere Regel hinzu:
Wichtig! Nicht den Haken bei Enable setzen!
Die Regel hat er jetzt oben eingefügt:
Per Drag&Drop auf die 3 Querstriche vorne schieben wie die Regel unter die group Regel:
Und erst jetzt setzen wir den Haken in der Spalte On:
Nun der Test mit nmap:
PORT STATE SERVICE 22/tcp open ssh 25/tcp filtered smtp 3128/tcp filtered squid-http 8006/tcp open wpl-analytics
3128 ist nun gefiltert!
Wir bauen die anderen Regeln (immer erst ohne Enable, dann an die richtige Stelle schieben, dann aktivieren):
Jetzt noch mal ein vollständiger Scan:
nmap 192.168.0.211 -p 8006,3128,22,25,5900-5999,5405-5412,60000-60050
Ergebnis:
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-27 20:27 CEST Nmap scan report for 192.168.0.211 Host is up (0.00050s latency). All 163 scanned ports on 192.168.0.211 are in ignored states. Not shown: 163 filtered tcp ports (no-response) MAC Address: 00:25:90:A6:92:68 (Super Micro Computer) Nmap done: 1 IP address (1 host up) scanned in 4.53 seconds
Ping geht noch, aber der Rest ist zu!
IM NOTFALL
Ok, wenn Ihr diesen Abschnitt braucht, habe Ihr euch wahrscheinlich ausgesperrt!?
Wenn Ihr physischen Zugriff auf den Server habt, also z.B. eine der folgenden Optionen:
- SSH funktioniert noch
- Tastatur und Monitor an der Hardware
- Zugriff über BMC / iLO / iDRAC oder andere Board Management Console
- KVM Zugriff bei Mietservern
Meldet euch als root an und tippt folgenden Befehl ein:
pve-firewall stop
was Ihr mit
pve-firewall status
prüfen könnt.
Danach solltet Ihr wieder drauf kommen. Die Regeln sind dann alle noch da und können angepasst werden.
Oder die Firewall deaktiviert werden (Auf Datacenter oder Hosts Ebene).
Vergesset nicht diese danach wieder zu starten.
Links
- https://pve.proxmox.com/wiki/Firewall#pve_firewall_default_rules
- https://www.reddit.com/r/Proxmox/comments/1dgj5ls/comment/l8qgt2g/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button