Proxmox voll-verschlüsselt

Mithilfe von LUKS/LVM, inkl. Remote-Entsperrung via Dropbear-SSH

Siehe hierzu auch folgenden Follow-Up Artikel
Proxmox auf verschlüsseltem Software RAID

Du bist aktuell auf der Suche nach einem (virtuellen) Server? Ich bin seit Jahren von netcup begeistert und hätte da ein paar Gutscheine.

Vor einiger Zeit hatte ich hier mal aufgeschrieben, wie ich meine (externen) Proxmox-Server betreibe. Daran hat sich prinzipiell zwischenzeitlich nichts geändert, alles läuft immer noch super so, auch habe ich meine Server primär immer noch bei netcup – die Leistung dort bei den Preisen sucht echt seinesgleichen.

Nun stand vor kurzem mal ein Wechsel eines Servers auf die aktuelle Generation an. Im Prinzip installiere ich in so einem Fall kurz Proxmox neu und ziehe dann alle Container per Backup/Restore um, geht auch relativ schnell und problemlos so.

Alle meine Workstations Betreibe ich schon seit Ewigkeiten voll-verschlüsselt, warum eigtl. nicht auch die (externen) Server, fragte ich mich dann mal und entschied, das nun auch mit Proxmox umzusetzen. Natürlich kann man sich die Frage stellen, ob man das braucht, wenn man nichts verwerfliches auf den Servern speichert und auch wie sinnvoll das bei virtuellen Servern ist. Meine Antworten dazu sind – verschlüsselt wird immer und überall und alles, einfach aus Prinzip, meine Daten sind meine. Selbstverständlich hat der Hoster bei einem virtuellen Server vollen Zugriff auf das System, eine Verschlüsselung ist hier eine zusätzliche Hürde. Theoretisch kann er natürlich auch die Keys rausziehen, den logischerweise liegen die im laufenden Zustand im RAM vor, aber jeder kann das definitiv auch nicht mal eben so einfach. Von daher würde ich behaupten, dass eine Vollverschlüsselung auch bei virtuellen Server absolut Sinn macht. Unabhängig davon würde ich natürlich auch keinen Hoster wählen, dem ich in Bezug darauf nicht vertraue und die entsprechenden AGBs schließen einen Zugriff auf die Kundensysteme meist sowieso aus, aber heutzutage kann man zu allem möglichen ja auch gezwungen werden…

Leider kann man hierzu den Proxmox ISO-Installer nicht verwenden, da der dieses Szenario nicht abbildet. Man kann Proxmox aber auch recht einfach nachträglich auf ein frisches Debian draufbügeln, das machte ich:

1. Debian installieren mit LUKS-LVM

Ich nehme die Netinst-ISO und setze erstmal eine neue Debian(-Minimal) Maschine auf – folge dem grafischen Installer, wähle dort natürlich kein Desktop-Environment und richte die Festplatte mit LVM und LUKS ein – am Ende hat man nun schon ein voll-verschlüsseltes System, das einem vor dem Start nach der entsprechend festgelgten Passphrase fragt.

2. dropbear-initramfs einrichten für Remote-Entsperrung

Nun wäre es ja doof, wenn man die Passhprase jedes mal an der (VNC-)Konsole des Servers eingeben muss. Bei virtuellen Servern wäre dies eine weitere Schwachstelle, wo theoretisch der Provider mitschneiden könnte. Dazu gibt es einen kleinen SSH-Server (Dropbear), kennt man evtl. von Routern oder dergleichen, der vor dem Start von Debian läuft und mit dem man eben die LUKS-Passphrase eingeben kann.

apt install dropbear-initramfs
update-initramfs -u

Ich würde hier einen separaten SSH-Key verwenden (Public-Key muss in /etc/dropbear-initramfs/authorized_keys hinterlegt werden) und auch einen anderen SSH-Port (legt man in /etc/dropbear-initramfs/config fest, DROPBEAR_OPTIONS="-p 12345"), als für den normalen Systemzugriff. Zum Entsperren bzw. Eingeben der LUKS-Passphrase muss man den Befehl cryptroot-unlock verwenden – das habe ich z. B. mit KeePass-AutoType automatisiert.

3. Proxmox installieren

Dann installiert man noch kurz Proxmox, und schon hat man seine gewohnte Weboberfläche (standardmäßig verfügbar unter https://host.domain.tld:8006):

In /etc/hosts muss der 127.0.0.1 <Host> Eintrag entfernt und folgender eingefügt werden („host“ etc. natürlich entsprechend ersetzen):

xxIPv4DesHostsxx host.domain.tld host pvelocalhost

/etc/network/interfaces sollte ungefähr so aussehen:

iface ens3 inet manual

auto vmbr0
  iface vmbr0 inet static
  address xxIPv4DesHostsxx
  netmask xxSubnetmaskDesHostsxx
  gateway xxIPv4DesGatewaysxx
  bridge_ports ens3
  bridge_stp off
  bridge_fd 0

Dann noch kurz die Installation:

echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget http://download.proxmox.com/debian/proxmox-ve-release-5.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-5.x.gpg
apt update
apt install proxmox-ve postfix open-iscsi
apt purge os-prober linux-image-amd64 linux-image-4.*-amd64
apt clean
update-grub

Beim Neustart des Hosts verbindet man sich zukünftig dann kurz mit dem Dropbear-SSH-Server, gibt die Passphrase ein, fertig.

Du möchtest mir hierzu Feedback hinterlassen? Dann schreib mir gerne eine Nachricht.