Sicherheit

Proxmox-Firewall: die Falle mit dem Flag firewall=1, das nichts filtert

Ein Audit unserer eigenen Serverflotte hat es gezeigt: Maschinen mit „aktivierter“ Firewall an ihrer Schnittstelle standen in Wirklichkeit für die ganze Welt offen. Die Proxmox-Firewall verlangt zwei Bedingungen, nicht eine, und die Regeln auf Datacenter-Ebene schützen nie die Gäste. Anatomie der Falle, Prüfung mit einem einzigen Befehl und die vollständige Anleitung.

Firewall-Schalter auf ON, dessen Kabel durchtrennt ist, bevor es den Server erreicht, der ungeschützt bleibt
Inhalt (4 Abschnitte)
  1. Drei Ebenen und eine kontraintuitive Hierarchie
  2. Die Falle: ein Schalter ohne Stromkreis
  3. Unser Audit: 4 von 9 Maschinen geschützt
  4. Die vollständige Anleitung

Die Firewall von Proxmox hat eine trügerisch einfache Oberfläche: ein Kästchen Firewall an der Netzwerkkarte jeder Maschine, bei der Erstellung standardmäßig angekreuzt. Angekreuzt = geschützt, oder? Nein. Dieses Kästchen ist ein Schalter… der womöglich mit keinem Stromkreis verbunden ist. Wir haben das bei einem Audit unserer eigenen Serverflotte festgestellt: Maschinen mit öffentlicher IP, Firewall „aktiviert“, in Wirklichkeit für die ganze Welt offen. Hier die genaue Anatomie der Falle und wie Sie in dreißig Sekunden prüfen, ob Sie betroffen sind.

Drei Ebenen und eine kontraintuitive Hierarchie #

Die Proxmox-Firewall wird auf drei Ebenen konfiguriert: Datacenter (der gesamte Cluster), Knoten (jeder Hypervisor) und Gast (jede VM bzw. jeder CT). Die Intuition sagt, dass die Regeln des Datacenters auf alles „durchsickern“, was es enthält. Im Code sieht es anders aus: Die Regeln auf Datacenter- und Knotenebene schützen die Hypervisoren selbst: ihr SSH, ihre Administrationsoberfläche. Auf den Verkehr der Gäste werden sie nie angewendet. Wer glaubt, eine Datacenter-Regel „SSH nur von unseren IPs“ decke die gesamte Serverflotte ab, lässt bei jeder VM mit öffentlicher IP deren eigenes SSH für die ganze Welt offen.

Die Falle: ein Schalter ohne Stromkreis #

Damit ein Gast tatsächlich gefiltert wird, braucht es zwei Bedingungen zugleich: das Kästchen firewall=1 an seiner Netzwerkschnittstelle und eine eigene Regeldatei des Gastes (/etc/pve/firewall/<vmid>.fw), die mindestens enable: 1 und eine Richtlinie enthält. Das Kästchen allein bewirkt nichts: keine Standardrichtlinie, keine implizite Sperre, der Verkehr läuft vollständig durch. Und da das Kästchen bei der Erstellung von vornherein angekreuzt ist, füllt sich die Serverflotte ganz von selbst mit Maschinen, die eine Firewall anzeigen, ohne eine zu haben.

Bash
# Die Prüfung, von einem Knoten des Clusters aus:
ls /etc/pve/firewall/
# cluster.fw  105.fw  133.fw ...

# Mit den Gästen abgleichen, die eine öffentliche IP haben:
# Jede exponierte Maschine OHNE ihre <vmid>.fw ist ein Loch.

# Und die letzte Instanz: VON AUSSEN testen
nmap -Pn <ip-publique-du-guest>

Unser Audit: 4 von 9 Maschinen geschützt #

Echte Zahlen aus unserem internen Audit: Von neun Maschinen mit öffentlicher IP hatten nur vier eine Regeldatei. Fünf „aktivierte Firewalls“ filterten nichts. Lehrreiches Detail am Rande: Eine aktive Regeldatei verwies auf einen Gast… der längst gelöscht war: das Spiegelbild der Falle, die Regel ohne Maschine. Zwei Lehren: Dieser Fehler ist in der Oberfläche nicht zu sehen (alles wirkt normal), und er lässt sich nur durch ein Audit erkennen, das die Liste der Regeldateien mit der Liste der exponierten Maschinen abgleicht.

Die vollständige Anleitung #

INI
# /etc/pve/firewall/<vmid>.fw: das Lebensnotwendige für einen exponierten Gast
[OPTIONS]
enable: 1
policy_in: DROP
policy_out: ACCEPT

[RULES]
IN ACCEPT -p tcp -dport 80
IN ACCEPT -p tcp -dport 443
# SSH: nie für die ganze Welt offen, beschränkt auf ein ipset mit Administrations-IPs
IN ACCEPT -source +admin-ips -p tcp -dport 22
  • Bei der Erstellung jeder exponierten Maschine: Netzwerkkarte und Regeldatei werden gemeinsam angelegt, nie das eine ohne das andere. Das ist eine Zeile auf der Checkliste, keine Sache des Gedächtnisses.
  • Die ipsets (auf Datacenter-Ebene definiert) bündeln die Listen der Administrations-IPs: Ändert sich eine IP, ist nur eine Stelle anzupassen.
  • Beim Löschen einer Maschine: ihre Regeldatei entfernen. Verwaiste Regeln sind das Rauschen, das das nächste echte Loch verdecken wird.
  • Regelmäßig: erneut von außen scannen. Eine Firewall weist man nach, man unterstellt sie nicht.

Diese Falle ist ein Lehrbuchfall für unsere Überzeugung von Sicherheit als Reihe geprüfter Details: Das Werkzeug ist gut, die Oberfläche ist klar, und der Fehler entsteht genau dadurch, dass alles konfiguriert aussieht. Das Audit, das ihn bei uns aufgespürt hat, gehört zu dem, was wir auf die Infrastrukturen anwenden, die wir im Rahmen unserer Managed Services betreuen. Wenn Ihre exponierten Maschinen noch nie von außen gescannt wurden, fangen Sie damit an.

Über uns
01/Als Nächstes lesenDrei Artikel

Verwandte Artikel

Sicherheit

Eine veraltete Lock-Datei ist ein Scan, der lügt

Lock-Dateien für Abhängigkeiten sind die maßgebliche Quelle für Sicherheitsanalysen. Wenn eine CI-Pipeline sie stillschweigend umschreibt, statt zu scheitern, liest die Analyse falsche Versionen und liefert ein beruhigendes Urteil. Wie wir das entdeckt haben und was wir geändert haben.

abhängigkeitensoftware-lieferkette
Sicherheit

446 Schwachstellen, dann null: was ein Inventar ändert, das die Wahrheit sagt

Jede Maschine scannte ihre eigenen Images, niemand sah den ganzen Bestand. Mit einer zentralen Analyse auf Basis des tatsächlichen Inventars (111 eindeutige Images statt 25 lokaler Datenbanken) fiel der Zähler an einem Abend von 446 auf 0. Bericht über eine Messaktion, nicht über eine Korrektur.

schwachstellencontainer
Sicherheit

Ein SIEM für eine Flotte von 38 Maschinen: Wazuh, von der Dimensionierung bis zur Feinabstimmung

Ein Protokoll, das auf der kompromittierten Maschine bleibt, ist nichts wert. Wir haben Wazuh in zwei Tagen auf der gesamten Serverflotte eingeführt: eigene VM, zwölf Monate Aufbewahrung, 38 Agenten in drei Wellen und vor allem eine Feinabstimmung, die das Rauschen von 1.250 Alarmen pro Maschine auf 8 für die gesamte Flotte senkt. Die Fallstricke des Installers, der Konformitätsprüfung in Containern und die eigenen Erkennungsregeln, auf die es wirklich ankommt.

wazuhsiem

Und jetzt

Erkennen, bevor es teuer wird?

Zentralisierte Logs, Alarme, bewusst eingespielte Updates, Backups, die wirklich wiederhergestellt werden. Erstgespräch kostenlos.

Ihr Projekt besprechen

Antwort binnen 24 Stunden an Werktagen, von einem der beiden Gründer. Oder telefonisch: +33 7 59 96 14 99.