· Henning Scholand · Proxmox · 3 Min. Lesezeit
Die Proxmox Firewall — drei Ebenen, eine Strategie
Proxmox bringt eine integrierte Firewall mit drei Hierarchieebenen. Wie Datacenter-, Node- und VM-Firewall zusammenspielen und wie ein vollständiges Ruleset für Produktionsumgebungen aussieht.

Die integrierte Proxmox-Firewall wird oft ignoriert — zu Unrecht. Sie arbeitet auf Kernel-Ebene mit nftables, ist cluster-weit konfigurierbar und kennt drei Hierarchieebenen: Datacenter, Node und VM. Wer das Zusammenspiel versteht, bekommt granulare Kontrolle ohne externe Firewall-Appliance.
Die drei Ebenen
Datacenter-Firewall
└── Node-Firewall (pro Proxmox-Host)
└── VM-Firewall (pro Netzwerkinterface)Regeln werden von oben nach unten vererbt. Was auf Datacenter-Ebene erlaubt ist, kann auf VM-Ebene weiter eingeschränkt werden — aber nicht erweitert. Das ermöglicht eine zentrale Policy mit lokalen Ausnahmen.
Datacenter-Firewall: die globale Policy
Die Datacenter-Firewall (/etc/pve/firewall/cluster.fw) gilt für alle Nodes und VMs im Cluster.
# /etc/pve/firewall/cluster.fw
[OPTIONS]
enable: 1
policy_in: DROP
policy_out: ACCEPT
log_ratelimit: 1/second
[IPSET mgmt-hosts]
10.0.0.0/24 # Management-Netz aus Artikel 1
10.0.0.5 # Jump-Host
[IPSET storage-hosts]
10.20.0.0/24
[RULES]
# Management-Zugriff auf Proxmox-Webinterface (Port 8006)
IN ACCEPT -source +mgmt-hosts -p tcp -dport 8006 -log nolog
# SSH nur aus Management-Netz
IN ACCEPT -source +mgmt-hosts -p tcp -dport 22 -log nolog
# Corosync Cluster-Kommunikation
IN ACCEPT -source +mgmt-hosts -p udp -dport 5405:5406 -log nolog
# VXLAN falls SDN verwendet wird
IN ACCEPT -source +mgmt-hosts -p udp -dport 4789 -log nolog
# SPICE/VNC Konsole
IN ACCEPT -source +mgmt-hosts -p tcp -dport 5900:5999 -log nolog
# Alles andere: DROP (durch policy_in: DROP)IPSets: wiederverwendbare Adressgruppen
IPSets vermeiden doppelte Pflege von IP-Adressen. Einmal definiert, in beliebig vielen Regeln nutzbar:
# IPSet per CLI anlegen
pvesh create /cluster/firewall/ipset \
--name monitoring-servers
pvesh create /cluster/firewall/ipset/{monitoring-servers} \
--cidr 10.0.0.50 \
--comment "Zabbix"
pvesh create /cluster/firewall/ipset/{monitoring-servers} \
--cidr 10.0.0.51 \
--comment "Grafana Agent"Security Groups: wiederverwendbare Regelsets
Security Groups fassen Regeln zusammen, die auf mehrere VMs angewendet werden:
# Security Group für Web-Server
pvesh create /cluster/firewall/groups \
--group webserver \
--comment "Standard-Regeln für Web-VMs"
# Regeln zur Group hinzufügen
pvesh create /cluster/firewall/groups/{webserver} \
--action ACCEPT \
--type in \
--proto tcp \
--dport 80
pvesh create /cluster/firewall/groups/{webserver} \
--action ACCEPT \
--type in \
--proto tcp \
--dport 443Node-Firewall: pro Host anpassen
Die Node-Firewall (/etc/pve/nodes/<nodename>/host.fw) erbt die Datacenter-Policy und kann lokal erweitert werden:
# /etc/pve/nodes/pve01/host.fw
[OPTIONS]
enable: 1
[RULES]
# Zusätzliche Regel: ICMP aus Management erlauben
IN ACCEPT -source +mgmt-hosts -p icmp -log nolog
# Storage-Replikation erlauben
IN ACCEPT -source +storage-hosts -p tcp -dport 3260 -log nologVM-Firewall: Isolation auf Interface-Ebene
Die VM-Firewall (/etc/pve/firewall/<vmid>.fw) schützt einzelne VMs:
# /etc/pve/firewall/101.fw
[OPTIONS]
enable: 1
policy_in: DROP
policy_out: ACCEPT
dhcp: 1
[RULES]
# Security Group anwenden
GROUP webserver -i net0
# Monitoring erlauben
IN ACCEPT -source +monitoring-servers -p tcp -dport 9100 -log nolog
# Alle anderen eingehenden Verbindungen: DROPFirewall aktivieren und verifizieren
# Status prüfen
pve-firewall status
# Aktive Regeln anzeigen
pve-firewall compile
# Regeln für eine spezifische VM
pve-firewall vm-rules 101
# Logging in Echtzeit
journalctl -f -u pve-firewallTypische Stolpersteine
Firewall blockiert eigene Cluster-Kommunikation: Wenn policy_in: DROP gesetzt wird bevor Corosync-Regeln eingetragen sind, verliert der Cluster die Verbindung. Reihenfolge: erst Regeln definieren, dann Policy auf DROP setzen.
VM-Firewall ohne aktivierte Datacenter-Firewall: Die VM-Firewall funktioniert nur wenn die Datacenter-Firewall aktiviert ist. Ohne enable: 1 in cluster.fw bleiben VM-Regeln wirkungslos.
Log-Flood: Ohne log_ratelimit in den OPTIONS kann das Logging die Performance beeinträchtigen. Standard: 1 Log-Eintrag pro Sekunde und Regel.
Im nächsten Teil der Serie härten wir den Proxmox-Host selbst ab — unabhängig davon, was die Firewall bereits abfängt.



