Proxmox Ab-Härtung Debian Bullseye und Debian Bookworm

Proxmox absichern und abhärten

Was ist Proxmox und wofür setzt man Proxmox ein?

Proxmox ist eine Open-Source-Plattform für Virtualisierung, die auf Linux basiert und es ermöglicht, virtuelle Maschinen (VMs) und Container zu verwalten. Mit Proxmox können sowohl KVM (Kernel-based Virtual Machine) für die Virtualisierung auf Hardware-Ebene als auch LXC (Linux Containers) für die Betriebssystemvirtualisierung genutzt werden. Hier sind einige wesentliche Aspekte und Vorteile von Proxmox:

  • Virtualisierungstechnologien: Proxmox verwendet KVM und LXC, um VMs und Container bereitzustellen. KVM ermöglicht die Virtualisierung auf Hardware-Ebene und bietet eine hohe Leistung und Isolation. LXC hingegen ermöglicht die effiziente Ausführung von Anwendungen in Containern.
  • Webbasierte Benutzeroberfläche (Web GUI): Proxmox bietet eine benutzerfreundliche Web-Oberfläche, über die Benutzer ihre virtuellen Umgebungen verwalten können. Dies erleichtert die Konfiguration, Überwachung und Verwaltung von VMs und Containern.
  • Cluster-Fähigkeit: Proxmox ermöglicht die Bildung von Clustern, in denen mehrere Proxmox-Server zusammenarbeiten können. Dies bietet eine erhöhte Skalierbarkeit, Ausfallsicherheit und Ressourcenverwaltung für größere Umgebungen.
  • Live-Migration: Proxmox ermöglicht die Live-Migration von VMs zwischen verschiedenen Proxmox-Hosts, ohne dass die Dienste unterbrochen werden. Dies ist besonders nützlich für Wartungsarbeiten oder Lastenausgleich.
  • Backup und Wiederherstellung: Die Plattform bietet integrierte Mechanismen für das Sichern und Wiederherstellen von VMs und Containern. Dies unterstützt die Datensicherung und stellt sicher, dass wichtige Konfigurationen und Daten jederzeit verfügbar sind.
  • Zugriff über APIs: Proxmox bietet APIs für die Automatisierung von Aufgaben und die Integration in andere Systeme. Dies erleichtert die Anpassung und Integration von Proxmox in bestehende Infrastrukturen.
  • Community-Support und Dokumentation: Proxmox profitiert von einer aktiven Community und verfügt über eine umfassende Dokumentation. Benutzer können auf Foren, Wikis und andere Ressourcen zugreifen, um Unterstützung und Informationen zu erhalten.
  • Open Source und Lizenzierung: Proxmox ist Open Source, was bedeutet, dass es kostenlos verfügbar ist. Dies ermöglicht es Unternehmen und Einzelpersonen, kostengünstig Virtualisierungslösungen einzusetzen und anzupassen.

Zusammenfassend bietet Proxmox eine leistungsstarke, skalierbare und kostengünstige Virtualisierungslösung mit einer benutzerfreundlichen Oberfläche und einer breiten Palette von Funktionen für die Verwaltung von VMs und Containern.

Hier gebe ich Tipps zur Proxmox Ab-Härtung. Die Linuxsysteme, welche ich dafür verwende sind: Debian Bullseye und Debian Bookworm.

Achtung

Achtung. Keine Garantie auf Vollständigkeit. Eingriffe an Linuxservern, können bei Unachtsamkeit oder Fehlern zu einem Datenverlust führen. Auch kann man sich aussperren, wenn man die Firewall, Ports, Netzwerke oder Konfigurationen falsch einstellt. Wenn du keine Erfahrung mit Linux hast, solltest du am besten zunächst die Finger davon lassen und dich erst mal an Linux rantasten. Die unten stehenden Anleitungen sind getestet und Funktionieren. Wenn du allerdings etwas nicht richtig machst, dann sperrst du dich womöglich im Bereich SSH oder Firewall aus!

Nach einer Installation von Proxmox auf Debian muss / sollte ein Proxmox-Server-System abgehärtet werden. Firewall, HTTPS, Kernelparameter, Anmeldeversuche und verschiedene andere Bedrohungen können mit der folgenden Anleitung recht gut gegen unerlaubte Nutzung abgesichert werden. Es ist allerdings unmöglich jede noch so kleine Möglichkeit abzubilden. Das A und O ist hier, informieren, nachlesen und immer am Ball bleiben.

IT-Sicherheit wird immer wichtiger

In der heutigen Zeit wird die IT-Sicherheit immer präsenter, immer wichtiger. Täglich erreichen uns Nachrichten, dass wieder ein Unternehmen, eine Gemeinde, Universitäten oder Privatpersonen gehackt wurden, dass Daten verschlüsselt wurden oder ähnliches. Wie kann man einen Linuxserver absichern? Wie kann man einen Proxmoxserver absichern? Gleich vorweg.

Es gibt keine absolute Sicherheit. Aber man kann einiges tun, um es Angreifern schwer zu machen. Einmal solltest du Google oder eine Suchmaschine deiner Wahl nutzen und dich immer auf Stand halten. Dann halte deine Systeme auf dem neuesten Stand und lass die Kisten nicht einfach so laufen im Netz. Vielleicht die Server auch ausschalten wenn sie nicht gebraucht werden, bei Linux und Proxmox ist das Stichwort : crontab um Server zeitgesteuert zu starten und herunterzufahren.

Root-Rechte werden für die folgenden Eingriffe am System vorrausgesetzt. Entweder man verwendet die Shell auf einem Knoten in Proxmox, oder man wählt sich via SSH-Client auf dem Sevrer ein.

Fail2Ban - IPS zum Abwehren von unerlaubten Anmeldeversuchen

Fail2Ban ist in Python geschrieben und ein IPS (Intrusion Prevention System) welches anhand von Logdatei-Einträgen IP Adressen sperrt. Die Konfigurationsdatei von Fail2Ban hält alle möglichen Parameter bereit um z.B. Apache, PHP, MySQL, Postfix und viele, viele andere System vor Anmeldungsversuche wie zum Beispiel Brutforce-Atacken zu schützen. Hier die kurz die Anleitung um Proxmox abzusichern.

Fail2Ban installieren:

apt-get install fail2ban

Fail2Ban jail.conf Datei mit einem Editor öffnen, hier verwende ich nano, welcher in Debian bereits installiert ist. Es kann aber auch vi oder vim verwendet werden. Sollte kein Editor installiert sein, kann dieser ebenfalls über apt install bzw. apt-get install nachinstalliert werden. jail.conf öffnen:

nano /etc/fail2ban/jail.conf

Folgende Einträge in die Datei jail.conf einfügen:

[proxmox2]
enabled = true
port = https,http,8006
filter = proxmox2
logpath = /var/log/daemon.log
maxretry = 7
bantime = 43200


Dann die Datei proxmox2.conf anlegen. Sie wird bei Aufruf des folgenden Befehls erzeugt:

nano /etc/fail2ban/filter.d/proxmox2.conf

Die folgenden Einträge in die Datei proxmox2.conf schreiben, bzw kopieren:

[Definition]
# Option: failregex
# Notes.: regex to match the password failure messages in the logfile. The
# host must be matched by a group named "host". The tag < host > can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P< host >\S+)
# Values: TEXT
#
failregex = pvedaemon[.*authentication failure; rhost=<host> user=.*msg=.*
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =

Proxmox und Debian-Systeme ausschalten, wenn nicht benötigt

Alle Systeme die nicht benötigt werden, sollten ausgeschaltet / deaktiviert werden. Ich schalte folgende Systeme aus. Ob diese bei Dir benötigt werden kann ich nicht sagen. Das muss jeder selbst wissen.

NFS, Network File System ausschalten.
Die Datei nfs-common öffnen:
nano /etc/default/nfs-common
Den Wert: NEED_STATD=no eintragen.

RPC, Remote Procedure Call mit folgendem Befehl ausschalten:
systemctl disable --now rpcbind.service rpcbind.socket
Server Reboot mit dem Befehl:
reboot

IPv6, Internet Protocol Version 6 ausschalten.
Die Datei sysctl.conf öffnen:
nano /etc/sysctl.conf
Den Wert: net.ipv6.conf.all.disable_ipv6 = 1 eintragen.

Postfix auf IPv4 festlegen.
Die Datei main.cf öffnen:
nano /etc/postfix/main.cf
Den Wert: inet_protocols = ipv4 eintragen.
Postfix neu Starten:
systemctl restart postfix.service

SSH absichern - Achtung nicht für Anfänger!

Achtung

SSH, die Secure Shell wird unter anderem verwendet um sich auf einen Server einzuloggen und sich mit diesem zu verbinden. Die SSH gilt es gesondert abzusichern. Fail2Ban ist bereits installiert und wenn richtig eingestellt, schützt Fail2Ban SSH bereits.

Die Datei sshd_config öffnen:
nano /etc/ssh/sshd_config
Die Werte anpassen:
PubkeyAuthentication yes -> SSH Key erzeugen und installieren
PermitRootLogin no -> erst setzen wenn anderer User mit root Rechten ausgestattet wurde!
PasswordAuthentication no -> erst setzen wenn SSH Keys vorliegen und installiert sind!
Den SSH Port oberhalb Port, hier: 50100 verlegen. Der gewählte Port muss noch frei sein.

Hier habe ich eine Website verlinkt, welche weitere Infos bereithält: Informationen zu Sicherheit und Risiken bei der Nutzung von SSH

Kernelparameter nach Empfehlung vom BSI, Bundesamt für Sicherheit in der Informationstechnik

Die Datei sysctl.conf öffnen:
nano /etc/sysctl.conf
Die folgenden Werte kopieren und am Ende der Datei einfügen:

# Forwarding deaktivieren
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0

# Packet Redirect deaktivieren
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Routed Packets nicht akzeptieren
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# ICMP Redirects nicht akzeptieren
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0

# Secure ICMP Redirects nicht akzeptieren
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

# Suspicious packets müssen geloggt werden
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# Broadcast ICMP Requests müssen ignoriert werden
net.ipv4.icmp_echo_ignore_broadcasts = 1

# bogus ICMP responses müssen ignoriert werden
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Reverse Path Filtering aktivieren
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# TCP SYN Cookies müssen aktivieren werden
net.ipv4.tcp_syncookies = 1

# IPv6 router advertisements deaktivieren
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0

Proxmox 2FA Zwei-Faktor-Authentisierung aktivieren

PVE Zwei-Faktor-Authentisierung in Proxmox einrichten und aktivieren.(Englisch)

Proxmox Firewall aktivieren und einsetzen

Achtung

Firewall auf Datacenter-Ebene:
Klick auf Datacenter
Klick auf Firewall
Klick auf Options
Auf der rechten Seite: Doppelklick auf Firewall, die Checkbox aktivieren
Zunächst keine Quellports setzen. Nur Zielports. Sonst kann man sich aussperren.
ACCEPT tcp Zielport: 50100 -> oben gewählter SSH Port
ACCEPT tcp Zielport 8006 -> Proxmox Web UI

Neue Linux Debian Version: Debian Bookworm für Proxmox VE

Inzwischen ist eine neue Version von Debian rausgekommen: Informationen zu Debian Bookworm. Auf dieser kann problemlos Proxmox Version 8.1.3 (diese läuft bei mir absolut Zuverlässig) installiert und betrieben werden.

Die ISO Images von Proxmox können hier geladen werden: Proxmox Virtual Enviroment ISO Download - Proxmox Virtualisierungssystem.

Ralf-Peter Kleinert, 18.01.2024

Ralf-Peter Kleinert - Autor - IT-Sichereit, Computersicherheit, Cybersecurity

Über den Autor: Ralf-Peter Kleinert

Über 25 Jahre Erfahrung in der IT legen meinen Fokus auf die Computer- und IT-Sicherheit. Auf meiner Website biete ich detaillierte Informationen zu aktuellen IT-Themen. Mein Ziel ist es, komplexe Konzepte verständlich zu vermitteln und meine Leser für die Herausforderungen und Lösungen in der IT-Sicherheit zu sensibilisieren.

Mehr über mich, Ausbildung, Zertifizierungen ...