Firewall Verständnisfrage

mcdaniels

Member
Feb 1, 2021
44
0
11
48
Hallo,
ich habe jetzt einige Wikiartikel und auch Youtube Videos "durch", verstehe aber die Funktionsweise der FW von Proxmox noch nicht wirklich.

Es gibt die Ebenen:
Datacenter
Host
VM

Kann ich nur für den Host selbst Regeln erstellen, die dann aber für die VMs und das Datacenter nicht gelten?

Muss die Firewall auf allen Ebenen (bei den Optionen von Datacenter / Host und VM) aktiv sein, damit sie auf der Ebene des Hosts greift?

Ich habe grade versucht für den Host alles zu droppen, außer Port 22 = SSH.

Die Firewall ist für den Host aktiv. Die Regel greift aber nicht.

Danke!

LG
 
Last edited:
Die Firewall ist für den Host aktiv. Die Regel greift aber nicht.
Ich blick da jetzt nach einem Jahr auch noch nicht ganz durch.
Du musst auf jeden fall die Firewall auf Datacenter Ebene aktivieren, sonst sind auch die Firewalls auf Node- und VM-Ebene deaktiviert, auch wenn du die z.B. auf Node-Ebene auf aktiv gestellt hast.

Was ich mich dabei frage ist, ob die Firewalls verschachtelt sind. Nehmen wir mal als Beispiel ich möchte auf einer VM TCP Port 1000 öffnen.
Dann aktiviere ich die Firewall auf VM-Ebene und erlaubt für die VM TCP Port 1000.
Die VM befindet sich ja aber auf dem Node. Muss dann auch bei dem Node die Firewall aktiviert haben mit einer entsprechenden Regel da TCP Port 1000 durchzulassen, damit Daten überhaupt erst vom Internet über die Node-Firewall zur VM-Firewall kommen?
Und die gleiche Frage dann halt nochmal für die Datacenter-Firewall. Die muss ja definitiv aktiv sein, wenn man überhaupt irgendwie Firewalls nutzen will. Muss man dann aber auf Datacenter-Ebene auch eine Regel für TCP Port 1000 erstellen, damit die Daten es überhaupt erst zum Node und zur VM schaffen?
 
Last edited:
  • Like
Reactions: mcdaniels
Sobald Du im datacenter die Firewall aktiv hast kannst Du sowohl für den Host/die Node als auch die VMs und Container einzeln Firewall aktivieren und Regeln erstellen. Du musst nicht alles auf der Node machen um es auf der VM zu haben. Achtet nur darauf das die default Regeln unter Datacenter eingestellt für den Host/die Node gelten. Aber nicht für die VMs oder die Container. Da muss man noch mal extra default Regeln setzen. Bzw sind ja schon gesetzt, kann man aber ändern.
 
Die Default Policy "DROP" (ersichtlich unter den Firewalloptions des Datacenter gilt, sobald ich die Firewall auf dem Datacenter aktiv schalte, selbst wenn ich auf dem Datacenter noch keine Regeln definiert habe?

Ich nehme an, zuerst ist eine DROP all Regel zu definieren und dann die Regeln, die Traffic erlauben?
 
Last edited:
Grundsätzlich: Die Firewall unterscheidet zwischen Regeln die für die PVE hosts selbst gelten (iptables INPUT) und Regeln für die Gäste (iptables FORWARD).

Regeln die in der Datacenter Ebene erstellt werden, gelten für alle Hosts. Wenn man nun viele gleiche Regeln für Gäste hat, bieten sich die IPSets an mit denen man auf DC Ebene Gruppen von Regeln erstellen kann und diese dann beim jeweiligen Gast einfach nur hinzufügen muss und somit nicht jede Regel einzeln wieder erstellen muss.

Es werden einige Ausnahmen als Default gesetzt um die Kommunikation innerhalb des Cluster zu garantieren ( https://pve.proxmox.com/pve-docs/pve-admin-guide.html#pve_firewall_default_rules ). Genauso sind die Management Ports innerhalb des Cluster Netzwerks offen. Wenn man von einem anderen Netzwerk aus den Cluster verwalten will, muss man sich die entsprechenden Ports (8006, 5900-5999 noVNC, SSH, Spice usw) freischalten. Hinter dem Link sind diese aufgelistet.
Die Default Policy "DROP" (ersichtlich unter den Firewalloptions des Datacenter gilt, sobald ich die Firewall auf dem Datacenter aktiv schalte, selbst wenn ich auf dem Datacenter noch keine Regeln definiert habe?
Sollte sobald die FW auch auf Host Ebene aktiviert ist.
 
@aaron: Heißt aber dann auch, dass ich keine separate DROP ALL Regel brauche, sondern nur die Regeln setze, die Traffic erlauben? --> Davon ausgehend, dass ich den Host von einem anderen Netzwerk administriere.
 
Genau. Wenn INPUT Policy in den Firewall->Options auf Drop gesetzt ist (Default).

Du kannst das auch testen, indem du zum Beispiel mit nc -zv <ip> <port> (für TCP) schaust, ob du eine Verbindung auf dem Port aufmachen kannst. Aber Vorsicht, wenn kurz davor schon eine Verbindung da war, kann sein, dass diese noch als aktiv angesehen wird und die FW Regeln nicht sofort greifen.
 
  • Like
Reactions: mcdaniels
Perfekt! Das hat funktioniert!

Datacenterfirewall aktiv mit gesetzten ALLOW-Regeln, Host Firewall aktiv (ohne Regeln) & VMs aktiv (ohne Regeln). Heißt also: Das gilt mir jetzt nur für Datacenter und die Hosts.
 
Kurze Frage nochmals: Wenn ich bei der Firewall nicht explizit eine Source angeben will, sondern ALLE meine, muss ich dann bei der Source etwas eingeben, oder diese frei lassen?
 
HI zusammen,

Achtung: bitte erst komplett lesen, BEVOR ihr die FW aktiviert!!!

seit 3 Tagen bastel ich auch mit der Firewall rum, da ich mittlerweile einen Proxmox VE auf einem V-Server via Strato betreibe.
Habe mich anfangs auch mal ausgesperrt, ...

Firewall erklärung:
Proxmox unterscheidet zwischen 3 Ebenen UND der Service

Der Service muss gestartet werden per `pve-firewall start` in irgendeinem node.

Dann gibt es:

Ebene 1 - Datacenter
Ebene 2 - node
Ebene 3 - LXC/VM

Datacenter muss aktiviert werden, damit `pve-firewall status` auf `enabled/running` steht

Nun gilt zu beachten:
Es gibt zwar eine "anti lockout rule" die immer Port 8006 offen hält, ABER nur rückwärts (von LXC/VM -> node). Bedeutet; wenn der Proxmox VE auf einem externen V-Server läuft könnt ihr euch trotzdem ausschließen!!! Da von "zu Hause" -> "online-Server" diese "anti-lockout-regel" NICHT greift!!!!


Weitere Erklärung:

Wenn Ihr nun auf LXC/VM1 einen Port öffnen wollt, muss dieser nicht komplett von Datacenter durch alle Ebenen geöffnet werden!
Hier ist jede Ebene getrennt zu betrachten.
Ausnahme: Ihr wollt zb für alle LXC/VMs den Port xy öffnen könnt ihr diese Regel in der Ebene darüber (hier Ebene 2) erstellen, dann greift sie auf allen Ebenen darunter.

Also in meinem Beispiel (ein Cluster mit nur einem node):

- in LXC die benötigten Ports unter "Firewall" öffen (zb 80/443)
- in LXC die FW unter "FW Optionen" aktivieren
- in LXC die FW in Netzwerkeinstellungen aktivieren
- im node die FW aktivieren, ABER VORHER den Port 22 für die Netzwerkkarte (NICHT vmbr) auf ACCEPT
- und optional den Port 8006 für vmbr aktivieren (in meinem Fall, weil Proxy auf vmbr verweist)
- Datacenter FW aktivieren, aber keine Regeln erstellen.

Hoffe ich habe dem ein oder anderen damit Zeit für "rumprobieren" erspart - wie bei mir, ... ;)

Grüße
 
Last edited:
  • Like
Reactions: Johannes S