<
Proxmox STRATO Server
01 Vorbereitung Server und VM 02 Netzwerk und SSH 03 Firewall 04 Serielle Konsole 05 Installation Kleine Themen
>

Proxmox Server auf einem STRATO Server

Firewall für den Proxmox STRATO Server

Auf dieser Seite geht es um die Firewall Einstellung für den Proxmox Server, bevor er auf den STRATO Server verschoben werden kann. Hierbei geht es nun um die Erhöhung der Sicherheit, wenn man Proxmox auf einem Server einsetzt, der im Internet steht.
Dabei geht es hier nicht um die Firewall der virtuellen Gäste, sondern um den Proxmox Host selbst. In den Seiten zuvor wurde der Proxmox zur Image Vorbereitung in einer Virtuellen Maschine zu Hause installiert. Im Anschluss wurde das Netzwerk vom STRATO Server kopiert und der SSH Zugriff geändert. Durch die Änderung des SSH Ports und dem Einsatz von Public-Key Authentifizierung ist schon einiges an der Sicherheit des Servers passiert. Doch weiterhin ist der Port der Weboberfläche Welt-offen. Und der Proxmox enthält noch ein paar Dienste, die im Hintergrund arbeiten. Diese sollten nicht einfach dem Internet offen stehen. Daher sollen diese Ports nun dem Internet gesperrt werden. Der Zugriff auf die Weboberfläche erfolgt über die Portweiterleitung von SSH, die im Kapitel 2 angelegt wurde. Der Port für den SSH Server muss offen bleiben, weshalb bei diesem die Erhöhung der Sicherheit sehr wichtig war.

Offnene Ports des Proxmox

Der Proxmox besteht aus einigen Diensten, die dafür da sind, um Funktionen des Proxmox zu ermöglichen. Offensichtlich ist der Port, der für die Weboberfläche benötigt wird. Der Port 8006 ist dafür verantwortlich. Die Weboberfläche wird nur mit Benutzer und Passwort Abfrage geschützt. Man kann auch eine Zwei-Faktor-Authentifizierung einschalten, jedoch empfiehlt es sich trotzdem nicht, diesen Port offen zu haben. Den der Proxmox benutzt diesen Port auch für das Kommunizieren von anderen Diensten. Einige andere Dienste laufen mit dem Proxmox um weitere Funktionen zu ermöglichen. Es gibt Dienste, die für die Cluster Funktion von Proxmox benötigt werden. Wenn man diese auf dem Server im Internet benutzen möchte, müssen diese Ports zugänglich bleiben. Für die Steuerung von VMs gibt es Dienste wie VNC oder SPICE. Diese will man von zu Hause ggf. auch Verwenden, wenn man VMs laufen hat. Aber jedoch sollten diese Ports nicht 24/7 online für jeder man verfügbar sein. Da es möglich ist, diese Ports durch den SSH Tunnel zu leiten, sollte man die in der Firewall für das Internet schließen und nur durch den SSH Tunnel zugreifen.
Es gibt von den Proxmox Entwicklern einen Artikel zu der Firewall im Proxmox, welcher auch ganz unten auflistet, welche Dienste laufen und welche Ports öffnen. Die Seite hierzu findet man hier.

Warum eine eigene Firewall installieren

Der Proxmox hat eine Firewall. Diese kann man für die Gäste verwanden und auch für den Host einstellen. Hier soll nun aber eine eigene Firewall installiert und verwendet werden. Das hat seinen Grund.
Die Firewall des Proxmox tut bestimmte Ports nicht sperren, auch wenn man das einstellt. So steht es in dem Firewall Artikel von Proxmox. Das ist aber wegen oben genannten Ports und dem Einsatz auf einem Server im Internet nicht gut.
Man sperrt bei Proxmox die Ports nicht, weil die Dienste untereinander kommunizieren müssen. Dies ist für deren Funktion und dem Zusammenspiel notwendig. Ferner ist es Notwendig, wenn man z.B. die Cluster Funktion von Proxmox verwenden möchte, dass dann mehr als ein Dienst nach Außen erreichbar ist. Daher müssten in dem Fall die Ports leider geöffnet werden. Man sollte sich Überlegen, ob man diese Funktionen für einen Server im Internet offen haben und verwenden möchte. In dem Setup hier werden solche Funktionen nicht verwendet und daher die Ports und alle weiteren Proxmox Ports vor dem Internet Zugriff versperrt. Ein Zugriff auf die Ports bleibt aber Server intern, sowie aus den virtuellen Netzwerken möglich.
Da die Proxmox eigene Firewall leider das Sperren der Ports verweigert, muss man hierfür eine eigene Firewall installieren und verwenden. Klassisch empfiehlt sich unter Linux "iptables", welches auch für die Portweiterleitung an Gäste benötigt wird. Da die Befehle für "iptables" nicht so gängig sind, gibt es ein Frontend dafür, welches die einfacheren, hier benötigten Regeln verwalten kann.

UFW installieren und einrichten

Als Firewall Frontend wird hier UFW eingesetzt und installiert. Es ist ein kleines Kommandozeilen Tool, welches "iptables" Regeln für den Nutzer setzt, welche in der vereinfachten Form der UFW benannt werden. Frontend heißt hier, dass es ein Tool für die Kommandozeile ist, welches aus den eigenen Regeln "iptables" Regeln macht.
Um die UFW verwenden zu können, loggt man sich auf dem Proxmox ein. Dies kann hier auch per SSH passieren, da der Port für SSH weiterhin zugelassen wird (es wird der Port aus dem Kapitel 02 verwendet). Nur in der Weboberfläche eine Kommandozeile des Proxmox Host öffnen und verwenden sollte man lassen, da der Zugriff von Außen auf den Port 8006 gesperrt wird, wenn die Firewall aktiv geschaltet wird.
Ist man auf der Kommandozeile des Proxmox, installiert man per apt install ufw die Firewall. Diese ist nach dem installieren noch nicht aktiviert, sodass erst mal nur die Ports konfiguriert werden können. Das ist für die SSH Verbindung auch besser, da man erst die Regeln anlegen muss, dass die SSH Verbindung zugelassen wird, bevor man die Firewall aktiviert.

UFW Regeln für den Proxmox anlegen

Nach der Installation werden nun Regeln für die Ports des Proxmox erstellt. Dabei ist einiges zu beachten. Generell werden nun Regeln erstellt, die den Zugriff auf die Ports vom Internet aus verbieten. Dies muss nun aus der Sicht des Servers bei STRATO passieren, obwohl der Proxmox aktuell noch in der VM zu Hause läuft. Das kommt daher, dass wenn der Proxmox auf dem Server bei STRATO installiert worden ist, diese Regeln sofort gelten sollen. Daher soll hier der Zugriff auf die IP des STRATO Servers verboten werden. Für den Zugriff auf die IP der VM macht man das sinnvollerweise gleich. So kann man alles testen. Bestimmte Ports werden dann wiederum vom "localhost" aus erlaubt.
Unten ist nun ein Befehlsset für die UFW, welche die Regeln setzt. Es wird hierbei "routed" und "incomming" Traffic generell erst mal erlaubt. Das bedeutet, andere Ports, die von den Regeln hier nicht verboten werden, funktionieren weiterhin. Das Erlaubt den SSH Port aus Kapitel 02 und Port freigaben für virtuelle Gäste, die später beliebig folgen können. Wie bereits erklärt, sind virtuelle Gäste in einem privaten Netzwerk geschützt. Somit sind andere Ports (z.B. der SSH Ports eines Gastes) solange vor dem Internet sicher, bis man ihn im Host freigibt. Die UFW Firewall wird diese Ports nie beschränken. Man kann die PVE Firewall im übrigen trotzdem Verwenden.
Einige Proxmox Ports, wie z.B. der von dem "corosync"-Dienst oder der für die Live Migration werden hier nicht geblockt. Diese erfordern Dienste, die nicht installiert und aktiviert sind, wenn der Proxmox frisch installiert wurde.
Sind die unten gezeigten Regeln eingetragen, sollte die Ausgabe der Regeln durch ufw status verbose wie im Bild gezeigt aussehen.

ufw logging off
ufw default allow routed
ufw default allow incoming
ufw allow from 127.0.0.1 to 127.0.0.1 port 8006
ufw deny to 192.168.55.4 port 8006
ufw deny to 85.214.5.42 port 8006
ufw allow from 127.0.0.1 to 127.0.0.1 port 3128
ufw deny to 192.168.55.4 port 3128
ufw deny to 85.214.5.42 port 3128
ufw deny to 192.168.55.4 port 111
ufw deny to 85.214.5.42 port 111

Ausgabe der UFW Regeln im Terminal (Daten zu Demo zwecken geändert)

Firewall aktivieren

Sind die oben gezeigten Einstellungen gesetzt, kann die Firewall aktiviert werden. Mit dem Befehl ufw enable wird die Firewall eingeschaltet. Sind bis zu dem Zeitpunkt Verbindungen (z.B. Weboberfläche auf Port 8006) zu der Proxmox IP-Adresse aufgebaut gewesen, werden diese nun getrennt. Das sollte die SSH Verbindung nicht betreffen. Wurde der Port 8006 als Port-forwarding in der SSH Verbindung eingestellt (s. Kapitel 02), ist nun nur noch nach dem aufbauen der SSH Verbindung und aufrufen von "https://<IP-VM-Host>:8006" der Zugriff auf die Weboberfläche des Proxmox möglich. Mit diesen Einstellungen kann der Proxmox im Internet betrieben werden.
Sollte bei der Einstellung etwas nicht geklappt haben, kann ggf. am Bildschirm der VM durch Eingabe des Befehls ufw disable die Firewall wieder deaktiviert werden. Ist die Firewall erfolgreich aktiviert, gelten die oben gezeigten Einstellungen bei jedem Neustart automatisch. Das ist im übrigen ein Unterschied zur eigentlichen "iptables" Firewall.