Proxmox VE mit Software-RAID und Full-Disk-Encryption

Wie bereits im Artikel zur voll-verschlüsselten Installation von Kali beschrieben, kann nach der Tauchfahrt-Anleitung jedes Debian basierende System voll-verschlüsselt installiert werden. Der Bare-metal Hypervisor Proxmox VE basiert auf Debian. Was liegt näher, als Virtualisierungsserver zu verschlüsseln?

proxmox_fde_swraid

Folgend wird am Beispiel eines Servers mit vier 2TB Festplatten gezeigt, wie die Partitionierung und Installation im Unterschied zur Anleitung
Debian Colocation/Leased Server Full-Disk-Encryption durchgeführt werden kann.

Es sind die Schritte 3, 5.2 und 6 wie folgt durchzuführen. Die Installation von Proxmox geschieht in Schritt 11.

3. Festplatte partitionieren

Für Proxmox VE wird empfohlen, LVM einzusetzen und in einer Volume-Group pve die zwei logischen Volumes root und data anzulegen. Daraus ergibt sich für die vier 2TB Festplatten (sda,sdb,sdc,sdd) folgendes Endschema.

  • 2x 8GB RAID1 für /boot
  • 2x 8GB RAID1 für swap
  • 4x 1992GB RAID10 für LVM

Um dieses Schema zu erreichen, müssen die Partitionsschemen der einzelnen Festplatten wie folgt hergestellt werden. Der Partitionsmanager muss für jede Festplatte einmal aufgerufen werden.

cfdisk -z /dev/sdX

Gelöscht wird automatisch das komplette Partitionsschema der vorherigen Installation.

Angelegt werden zwei Partitionen. Für die ersten beiden Festplatten muss das Bootflag gesetzt werden. Für die restlichen beiden nicht.

sdX1

  • Größe 8GB
  • Typ FD (Wird unverschlüsseltes /boot– oder swap-RAID1)
  • Bootfähig für 1. und 2. Festplatte

sdX2

  • Größe Rest (1992GB)
  • Typ 8E (wird Teil des LVM)

Folgend werden die beiden RAID1-Verbünde für die /boot Partition und die Auslagerungspartition erstellt. Das alte mdadm Metadaten-Format kommt zum Einsatz, damit der betagte Kernel von Proxmox die RAID-Verbünde beim Systemstart automatisch erkennt.

mdadm --create -e 0.9 --level=1 -n 2 /dev/md0 /dev/sda1 /dev/sdb1
mdadm --create -e 0.9 --level=1 -n 2 /dev/md1 /dev/sdc1 /dev/sdd1

Es folgt das RAID10,f2 für das verschlüsselte LVM-Volume.

mdadm --create --level=10 -p f2 -n 4 /dev/md2 /dev/sda2 /dev/sdb2 /dev/sdc2 /dev/sdd2

Dann wird das RAID10 für das LVM-Volume verschlüsselt und formatiert. Hier ist es besonders wichtig, ein Passwort auszuwählen, dass länger als 20 Zeichen ist. Je länger und zufäliger das Passwort, desto länger dauert das Brechen. Dieses Passwort ist gemeinsam mit einem folgend erstellten SSh-Schlüssel die Achillesferse des Prinzips und muss geheimgehalten werden. Es ist sehr empfehlenswert, eine Software wie PWGen zu verwenden, um ein sehr langes Passwort (zum Beispiel 200 Zeichen) zu erzeugen.

Wenn das Passwort erzeugt ist, kann wie folgt fortgefahren werden. Bei der Verschlüsselung der Partition muss zuerst die Verschlüsselung mit Eingabe von YES bestätigt werden und dann der Schlüssel zweimal eingegeben werden.

cryptsetup luksFormat /dev/md2
cryptsetup luksOpen /dev/md2 md2_crypt

Jetzt kann das LVM initialisiert und die nötigen logischen Volumes nach Proxmox-Vorgabe erstellt werden. Die Größe des logischen Volumes data ist absichtlich klein gewählt, sodass weitere logische Volumes für Backups erstellt werden können.

pvcreate /dev/mapper/md2_crypt
vgcreate pve /dev/mapper/md2_crypt
lvcreate --name root --size 60G pve
lvcreate --name data --size 500G pve

Folgend werden die Partitionen formatiert. Dabei soll nach Proxmox-Vorgabe das Dateisystem ext3 eingesetzt werden.

mkfs.ext3 /dev/mapper/pve-data
mkfs.ext3 /dev/mapper/pve-root
mkfs.ext3 /dev/md0

Jetzt werden die Partitionen eingebunden, damit im nächsten Schritt das Basis-System installiert werden kann.

mount /dev/mapper/pve-root /mnt
mkdir -p /mnt/boot /mnt/var/lib/vz
mount /dev/mapper/pve-data /mnt/var/lib/vz
mount /dev/md0 /mnt/boot

5.2 Einrichtung der /etc/crypttab,/etc/fstab, Paketquellen und lokale Einstellungen

Zuerst wird die Dateisystem-Tabelle für verschlüsselte Partitionen angelegt.

md1_crypt /dev/md1	/dev/urandom cipher=aes-cbc-essiv:sha256,size=256,swap
md2_crypt /dev/md2	none	luks

Dann die entsprechende Dateisystem-Tabelle für unverschlüsselte und aktive verschlüsselte Partitionen.

/dev/md0		/boot		ext3	relatime		0 2
/dev/mapper/md1_crypt	none		swap	sw			0 0
/dev/mapper/pve-root	/		ext3	relatime,data=ordered 	0 1
/dev/mapper/pve-data	/var/lib/vz	ext3	relatime,data=ordered	0 3
proc			/proc		prox	defaults

Jetzt werden die Paketquellen in der Datei /etc/apt/sources.list wie folgt eingetragen.

# Debian wheezy
deb http://ftp.de.debian.org/debian/ wheezy main non-free contrib
deb-src http://ftp.de.debian.org/debian/ wheezy main non-free contrib
deb http://security.debian.org/ wheezy/updates main non-free contrib
deb-src http://security.debian.org/ wheezy/updates main non-free contrib
deb http://ftp.de.debian.org/debian/ wheezy-updates main non-free contrib
deb-src http://ftp.de.debian.org/debian/ wheezy-updates main non-free contrib

Nach Aktualisierung der lokalen Caches für Pakete kann fortgefahren werden.

aptitude update && aptitude -y upgrade

Jetzt erfolgt die Konfiguration der Sprache des Systems.

aptitude -y install locales && dpkg-reconfigure locales

Hier wird de_DE.UTF-8 gewählt. Die Zeitzone muss auch gesetzt werden, in der Regel auf Europa/Berlin.

dpkg-reconfigure tzdata

6.1 Grundlegende Software installieren

aptitude install -y ssh grub-pc pciutils psmisc cryptsetup dropbear busybox mdadm lvm2

Während der Installation erscheint eine Nachfrage von grub-pc. Es wird nach dem Ort, an dem GRUB installiert werden soll gefragt. Es sind /dev/sda und /dev/sdb anzugeben. Weicht die Festplattenbenennung ab, ist es wichtig zu wissen, dass GRUB nicht in einer Partition (wie /dev/sda1) oder einem Software-RAID-Verbund, sondern auf Festplatten (wie /dev/sda) installiert werden sollte.

11. Debian in Proxmox VE umwandeln

Nach der erfolgreichen Installation von Debian nach den Proxmox-Vorgaben, kann die Installation nach der Anleitung im Proxmox VE Wiki umgewandelt werden. Es sind die Schritte ab Install Proxmox VE durchzuführen.