Tackey - stock.adobe.com

Proxmox VE: Die Firewall für Cluster-Betrieb konfigurieren

Die integrierte Proxmox-VE-Firewall bietet mächtige Filterfunktionen auf Basis von nftables. Damit implementieren Sie globale Regeln sowie eine granulare Absicherung für VMs.

Die Firewall von Proxmox VE ist fester Bestandteil der Virtualisierungsplattform und arbeitet direkt mit dem Cluster-Dateisystem pmxcfs sowie dem Linux-Netzfilter nftables.

Wir haben uns mit dem Thema nftables bereits in mehreren Beiträgen auseinandergesetzt, zum Beispiel hier. Proxmox VE baut auf Debian auf und unterstützt damit auch die Standard-Firewall in Linux, die sich direkt in die Virtualisierungsumgebung einbinden lässt.

Sämtliche Firewall-Konfigurationen liegen im Verzeichnis /etc/pve/firewall und stehen damit allen Knoten gleichzeitig zur Verfügung, wenn ein Proxmox-VE-Cluster zum Einsatz kommt. Jede Änderung an Regeln, IP-Sets oder Security Groups wird sofort im gesamten Cluster wirksam. Virtuelle Maschinen und Container behalten ihre Filterlogik unabhängig davon, auf welchem Host sie aktuell laufen. Migrationen verändern weder Regelreihenfolge noch Filterwirkung, da die Firewall nicht an einzelne Knoten gebunden ist.

Proxmox unterscheidet mehrere Ebenen der Firewall. Regeln lassen sich auf Datacenter-Ebene, auf Node-Ebene, auf VNet-Ebene sowie direkt auf VM- oder Container-Ebene definieren. Die Auswertung folgt einer festen Reihenfolge, die zuerst globale Regeln berücksichtigt und danach immer spezifischer wird. Diese Struktur erlaubt eine Trennung zwischen grundlegenden Sicherheitsvorgaben und workloadspezifischen Ausnahmen.

Aktivieren der Firewall im Datacenter

Die Firewall ist nach der Installation nicht automatisch aktiv. Die zentrale Aktivierung erfolgt im Webinterface unter Datacenter/Firewall. Dort befindet sich im Menü Options der Schalter Firewall. Erst nach dessen Aktivierung wertet Proxmox die hinterlegten Regeln aus. Ohne diese Einstellung bleiben sämtliche Regeldefinitionen wirkungslos, auch wenn sie bereits angelegt wurden.

Firewall in Proxmox VE aktivieren.
Abbildung 1: Die Firewall in Proxmox VE muss nachträglich aktiviert und konfiguriert werden.

Die Firewall-Einstellungen auf Datacenter-Ebene definieren das globale Filterverhalten für den gesamten Proxmox-VE-Cluster. Alle hier gesetzten Parameter gelten für sämtliche Knoten, virtuelle Maschinen, Container und SDN-Netze, sofern keine spezifischeren Regeln auf tieferen Ebenen greifen. Die Konfiguration wirkt unmittelbar nach dem Anwenden und wird über das Cluster-Dateisystem auf alle Hosts repliziert.

Firewall auf Datacenter-Ebene richtig einstellen

Die Option Firewall aktiviert oder deaktiviert die komplette Proxmox-Firewall-Logik. Bei gesetztem Wert Yes erzeugt Proxmox VE die zugehörigen nftables-Regeln und bindet sie aktiv in den Kernel ein. Bei No bleiben alle definierten Regeln wirkungslos, unabhängig davon, ob sie auf Datacenter-, Node- oder VM-Ebene existieren. Diese Einstellung stellt damit den zentralen Schalter für die gesamte Filterarchitektur dar.

Die Einstellung ebtables steuert die Filterung auf Layer 2. Ist sie aktiviert, verarbeitet Proxmox zusätzlich Ethernet-Frames, was für Bridge-basierte Netzwerke relevant ist. Diese Funktion greift vor allem bei virtuellen Switches, VLAN-Setups und SDN-Bridges, da dort MAC-Adressen und ARP-Traffic kontrolliert werden können. Eine Deaktivierung schaltet die Layer-2-Filterung vollständig ab und beschränkt die Firewall auf IP-basierte Regeln.

Der Parameter Log rate limit regelt die Protokollierung von Firewall-Treffern. Proxmox VE begrenzt damit die Anzahl der Log-Einträge pro Sekunde, um eine Überlastung des Journals zu verhindern. Die angezeigte Voreinstellung erlaubt eine begrenzte Anzahl an Einträgen pro Zeitfenster und verwirft darüber hinausgehende Meldungen. Diese Funktion beeinflusst ausschließlich die Log-Ausgabe und nicht die eigentliche Filterwirkung.

Die Input Policy definiert das Standardverhalten für eingehenden Traffic auf allen Hosts. Mit der Einstellung DROP verwirft der Host sämtliche eingehenden Pakete, für die keine explizite Erlaubnisregel existiert. Damit sind Dienste auf den Proxmox-Knoten nur erreichbar, wenn entsprechende ACCEPT-Regeln definiert wurden, zum Beispiel für HTTPS auf Port 8006 oder SSH. Diese Policy bildet die Grundlage für eine restriktive Host-Absicherung.

Die Output Policy legt das Verhalten für ausgehenden Traffic fest. Bei ACCEPT dürfen Prozesse auf dem Host uneingeschränkt Verbindungen nach außen aufbauen, sofern keine blockierende Regel existiert. Diese Einstellung betrifft unter anderem Paket-Updates, DNS-Abfragen, NTP-Synchronisation und Storage-Zugriffe. Eine restriktivere Konfiguration erfordert zusätzliche Regeln, um den regulären Systembetrieb sicherzustellen.

Die Forward Policy steuert den Transit-Traffic, also Pakete, die nicht für den Host selbst bestimmt sind, sondern über ihn weitergeleitet werden. Diese Einstellung ist für VMs, Container und SDN-Netze relevant, da deren Datenverkehr über die Host-Bridges läuft. Mit ACCEPT erlaubt der Host die Weiterleitung standardmäßig. Eine Umstellung auf DROP erzwingt explizite Freigaben für jeden Weiterleitungsfall und wirkt sich direkt auf die Erreichbarkeit virtueller Netze aus.

Das Zusammenspiel dieser Optionen bestimmt das globale Sicherheitsverhalten des Clusters. Die Datacenter-Policies bilden den Rahmen, innerhalb dessen feinere Regeln auf Node-, VNet- oder VM-Ebene greifen. Änderungen an diesen Werten beeinflussen nicht einzelne Workloads isoliert, sondern verändern die Ausgangslage für jede weitere Firewall-Definition im gesamten Proxmox-Verbund.

Nach der Aktivierung greift Proxmox VE auf jedem Knoten auf nftables zurück und erzeugt eigene Regelketten. Diese Ketten lassen sich mit

nft list ruleset

in der Shell prüfen. Direkte Änderungen an nftables sind nicht vorgesehen, da Proxmox die Tabellen regelmäßig neu generiert. Alle Anpassungen erfolgen ausschließlich über die Proxmox-Konfiguration.

Default Policy und grundlegende Regeln

Im nächsten Schritt wird die Default Policy festgelegt. Diese Einstellung befindet sich ebenfalls unter Datacenter/Firewall/Options. Für eingehenden und ausgehenden Traffic lassen sich die Aktionen ACCEPT, DROP oder REJECT definieren. In produktiven Umgebungen ist DROP als Standard sinnvoll, da jede Kommunikation explizit freigegeben wird. REJECT erzeugt aktive Rückmeldungen und ist für Debug-Zwecke geeignet.

Nach dem Setzen der Default Policy müssen Basisregeln definiert werden, da sonst auch Verwaltungszugriffe blockiert werden. Dazu zählen Zugriffe auf das Webinterface über TCP-Port 8006 sowie SSH-Verbindungen. Diese Regeln werden unter Datacenter/Firewall/Rules angelegt. Jede Regel besteht aus Richtung, Aktion, Protokoll, Quell- oder Zieladresse und optionalen Ports. Proxmox VE verarbeitet die Regeln sequenziell von oben nach unten.

Proxmox-VE-Firewall: Manuelle Regeln in der Weboberfläche definieren.
Abbildung 2: Für die Proxmox-VE-Firewall lassen sich manuelle Regeln in der Weboberfläche definieren.

Firewall-Regeln in Proxmox verstehen

Beim Anlegen einer neuen Firewall-Regel über Add definiert Proxmox VE eine einzelne Filteranweisung, die in eine bestehende Regelkette eingefügt wird. Jede Option steuert einen klar abgegrenzten Teil der Paketbewertung und wirkt nur in Kombination mit den übergeordneten Policies der jeweiligen Ebene.

Die Einstellung Direction legt fest, in welche Richtung der Datenverkehr bewertet wird. Über Action wird definiert, wie Proxmox VE mit Paketen umgeht, die auf diese Regel passen. Das Feld Enable steuert den aktiven Zustand der Regel. Eine deaktivierte Regel bleibt in der Konfiguration erhalten, wird jedoch nicht in die laufenden Filtertabellen übernommen. Die Option Macro stellt vordefinierte Regelvorlagen bereit. Makros bündeln mehrere Parameter für häufige Anwendungsfälle. Mit Interface lässt sich die Regel auf ein bestimmtes Netzwerk-Interface begrenzen. Das Feld Protocol bestimmt das zugrunde liegende Transportprotokoll. Über Source wird die Quelladresse des Datenverkehrs definiert. Das Feld Source port schränkt den Quellport ein.

Mit Destination wird die Zieladresse festgelegt. Auf VM- oder Container-Ebene ist dieses Feld häufig leer, da das Ziel implizit der jeweilige Gast ist. Auf Host- oder VNet-Ebene erlaubt das Feld eine Einschränkung auf bestimmte Adressen oder Netze. Der Eintrag Dest. Port definiert den Zielport des Dienstes. Das Feld Comment dient der Dokumentation.

Über die Option Advanced blendet Proxmox VE zusätzliche Parameter ein, darunter Log-Flags oder Zustandsoptionen. Diese erweiterten Einstellungen ermöglichen eine feinere Steuerung der Regelverarbeitung und der Protokollierung. Jede Regel wird nach dem Speichern in die bestehende Reihenfolge einsortiert und in der definierten Abfolge ausgewertet. Die Kombination aus Richtung, Aktion und Filterkriterien bestimmt, welche Pakete erlaubt oder verworfen werden.

Regelverteilung im Cluster

Ein zentraler Vorteil der Proxmox-VE-Firewall liegt in der automatischen Regelverteilung. Wird eine Regel auf Datacenter-Ebene angelegt, erscheint sie sofort auf allen Knoten. Die Konfigurationsdatei /etc/pve/firewall/cluster.fw enthält diese Definitionen. Eine manuelle Bearbeitung ist möglich, wird jedoch nicht empfohlen, da die Weboberfläche Validierungen durchführt und Syntaxfehler verhindert.

Node-spezifische Regeln liegen in /etc/pve/nodes/<node>/firewall/host.fw. Diese Regeln gelten nur für den jeweiligen Host und eignen sich für Verwaltungsnetze oder Wartungsszenarien. In Clustern mit getrennten Managementnetzen lässt sich damit der Zugriff pro Knoten steuern, ohne die globale Regelbasis zu verändern.

Einsatz von IP-Sets

IP-Sets sind ein zentrales Werkzeug zur Vereinfachung von Firewall-Regeln. Statt einzelne IP-Adressen oder Netze in jeder Regel zu hinterlegen, fasst ein IP-Set mehrere Einträge unter einem Namen zusammen. Änderungen am Set wirken sofort auf alle Regeln, die dieses Set referenzieren.

Die Verwaltung erfolgt unter Datacenter/Firewall/IP Sets. Dort wird ein neues Set angelegt und anschließend mit IPv4- oder IPv6-Adressen befüllt. Typische Anwendungsfälle sind Verwaltungsnetze, Monitoring-Systeme oder externe Zugriffspunkte. Proxmox VE speichert IP-Sets in /etc/pve/firewall/ipset.cfg und synchronisiert sie automatisch im Cluster.

In Regeln wird ein IP-Set mit dem Präfix + referenziert. Eine Regel mit Quelle +admin-net erlaubt damit Zugriff aus allen im Set enthaltenen Netzen. Diese Methode reduziert Redundanzen und vereinfacht spätere Anpassungen erheblich.

Security Groups für wiederkehrende Regeln

Security Groups bündeln mehrere Regeln zu einer logischen Einheit. Sie eignen sich für wiederkehrende Services, die auf mehreren VMs oder Containern identische Filter benötigen. Die Definition erfolgt unter Datacenter/Firewall/Security Groups. Eine Gruppe enthält eine eigene Regelliste, jedoch keine Richtung. Die Richtung wird erst bei der Zuweisung zur VM festgelegt. Nach der Erstellung lässt sich eine Gruppe unter <VM>/Firewall/Security Groups zuweisen. Proxmox VE verknüpft die Gruppen intern mit der VM-Firewall-Datei und wertet sie gemeinsam mit lokalen Regeln aus.

Proxmox-VE-Firewall für einzelne VMs setzen.
Abbildung3: Die Proxmox-VE-Firewall lässt sich auch direkt für einzelne VMs setzen.

Firewall auf VM- und Container-Ebene

Die Aktivierung der Firewall auf Gastebene erfolgt pro VM oder Container unter Firewall/Options. Erst nach Aktivierung greift die Filterlogik. Ohne diese Einstellung ignoriert Proxmox VE alle gastbezogenen Regeln, auch wenn sie definiert sind.

Regeln auf dieser Ebene steuern ausschließlich den Traffic des jeweiligen Gastes. Die Definition ähnelt der Datacenter-Ebene, ist jedoch auf die virtuelle Netzwerkschnittstelle beschränkt. Die Konfiguration liegt in /etc/pve/firewall/<vmid>.fw und wird ebenfalls Cluster-weit repliziert.

Segmentierung virtueller Netze mit SDN

In Umgebungen mit Software Defined Networking ergänzt die Firewall die logische Netzwerksegmentierung. Proxmox VE erzeugt für jedes VNet automatische IP-Sets, darunter vnet-all, vnet-gateway und vnet-dhcp. Diese Sets lassen sich direkt in Firewall-Regeln verwenden. Dadurch ist es möglich, Regeln netzbezogen zu formulieren, ohne einzelne IP-Bereiche zu pflegen.

Die Firewall-Integration für SDN befindet sich unter Datacenter/SDN/VNet Firewall. Dort wird festgelegt, ob VNets durch die Firewall gefiltert werden. Nach Aktivierung greift die Filterlogik direkt auf den erzeugten Bridges. Traffic zwischen VNets lässt sich damit erlauben oder unterbinden, parallel zur Firewall auf Cluster- und Host-Ebene.

Firewall-Integration für VNets im Proxmox-VE-SDN.
Abbildung 4: Firewall-Integration für VNets im Proxmox-VE-SDN.

Zusammenspiel mit Migration und HA

Live Migration und Hochverfügbarkeit setzen eine konsistente Firewall voraus. Da Proxmox VE alle Regeln Cluster-weit vorhält, bleibt die Filterwirkung auch nach einem Knotenwechsel identisch. Es sind keine Host-spezifischen Anpassungen notwendig. Die Firewall bewertet Pakete weiterhin anhand der gleichen Regelbasis, unabhängig vom Zielknoten. Bei HA-Failover startet die VM auf einem anderen Host mit unveränderter Firewall-Konfiguration.

Überwachen der Proxmox-VE-Firewall und prüfen der Regeln.
Abbildung 5: Überwachen der Firewall und prüfen der Regeln.

Zur Analyse stellt Proxmox VE Logging-Optionen pro Regel bereit. Diese Option erzeugt Einträge im Systemlog und erlaubt eine gezielte Nachverfolgung blockierter Pakete. Die Aktivierung erfolgt direkt in der jeweiligen Regel. In der Shell lassen sich die Logs mit

journalctl -u pve-firewall

prüfen.

Zusätzlich bietet der Befehl

pve-firewall status

einen Überblick über den aktuellen Zustand. Mit

nft list ruleset

lässt sich die generierte nftables-Struktur inspizieren, ohne sie zu verändern.

Erfahren Sie mehr über Netzwerksicherheit