Aktionen

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


Kommentare

Loading comments...