Zum Inhalt springen

Einrichten eines neuen Hetzner-Servers – Plattenverschlüsselung, Partitionierung, Installation

Nach den Vorbereitungen im ersten Beitrag zeige ich heute, wie ich die Festplatten des Servers partitioniere und verschlüssele. Darauf wird dann ein minimales Grundsystem installiert.

Der Vorgang ist nicht ganz trivial. Verschlüsselte Festplatten brauchen üblicherweise eine Passworteingabe am Rechner. Mein Server steht in Finnland, da kann ich nicht für jeden Bootvorgang hinfahren. Wie es trotzdem geht, beschreibt Uli Heller.

Hardware-Partitionierung, Minimalsystem installieren

Mein Server hat zwei Festplatten mit je 2 TB Kapazität. Mit zwei Platten ist RAID 0 oder 1 möglich. RAID 0 ermöglicht, beide Platten als Einheit zu betrachten. Das bringt uns aber keinen besonderen Nutzen. Ich hätte gerne RAID 5, aber dafür bräuchte ich mehr Festplatten, und das Geld ist es mir nicht wert. Also RAID 1; dadurch kann ich zwar nur den Platz einer Festplatte nutzen; dafür bekomme ich erhöhte Ausfallsicherheit – für einen Server sicher kein dummes Kriterium.

Ich möchte die Festplatten verschlüsseln. Dabei ist darauf zu achten, dass /boot unverschlüsselt bleibt. Ich richte also auf beiden Platten eine erste Partition mit 512 MB ein, die zweite bekommt den gesamten verfügbaren Platz. Darauf wird das verschlüsselte RAID 1 eingerichtet, das bei Bedarf mit LVM2 weiter aufgeteilt werden kann. Beide Partitionen werden als Type fd (Linux raid autodetect) markiert. So kann /boot beim Bootvorgang von /dev/sda1 oder /dev/sdb1 gelesen werden, im laufenden System aber von der RAID 1-Sicherung profitieren.

Wir booten also ins Rescue-System. Mit dem Befehl installimage starten wir die Installation. Wir wählen ein aktuelles Ubuntu-minimal (hwe ist nicht nötig). Nach allen Bestätigungen landen wir im Editor und können hier die gewünschte Partitionierung eintragen. An dieser Stelle ist zuviel Aufwand überflüssig,  ich wähle ein einfaches LVM-Setup mit / und swap als volume groups, indem ich vor den entsprechenden Zeilen das # lösche. Achtung: die Vorgaben am Ende des Partitionierungsblocks müssen dann mit einem vorangestellten # auskommentiert werden. Nach F2 zum Abspeichern und F10 zum Verlassen des Editors sowie einigen weiteren Sicherheitsabfragen startet der Installationsprozess. Der ist nach erfreulich kurzer Zeit abgeschlossen, wir rebooten und loggen uns in das installierte Minimalsystem ein.

Minimalsystem vorbereiten

Das frische Ubuntu meckert von alleine, es sei nicht aktuell, also wird es mit apt update und apt full-upgrade auf den neuesten Stand gebracht. Reboot, alte Kernelversionen weg, Installation von busybox, dropbear, Plattenverschlüsselung und dem Lieblingseditor:

# apt install joe busybox dropbear-initramfs cryptsetup-initramfs

Danach noch in /etc/initramfs-tools/initramfs.conf den Parameter BUSYBOX von auto auf y ändern. Für das Einloggen zum Entschlüsseln der Festplatte wird der dafür vorgesehene Schlüssel (KEIN Ed25519, nur RSA oder ECDSA, Edit: Ed25519 funktioniert inzwischen, ECDSA hat in anderen Kontexten Lücken gezeigt) in /etc/dropbear-initramfs/authorized_keys geschrieben; für ein paar Bequemlichkeiten und Sicherheiten kommt noch

no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command=“/bin/cryptroot-unlock“ ssh-rsa …

vor den Schlüssel (in die gleiche Zeile), und in /etc/dropbear-initramfs wird 

DROPBEAR_OPTIONS=“-p abcd -s -j -k -I 30″ 

eingefügt.  abcd ist dabei ein Nicht-Standard-Port, auf dem der SSH-Server hören soll.

Edit: Dropbears Config residiert jetzt in /etc/dropbear/initramfs/, die Parameter in authorized_keys vor dem Schlüssel entfallen, dafür heißen die Options jetzt „-p abcd -RFEsjk -c /bin/cryptroot-unlock“

Das Minimalsystem ist jetzt fertig, wir booten wieder ins Rescue-System.

Umkopieren des Minimalsystems, Versclhüsselung einrichten

Das Minimalsystem wird ins Rescue-System gemountet, in ein neues Verzeichnis kopiert, unmountet. Die Volume Group wird danach gelöscht. Nun wird das vorgesehene RAID 1 verschlüsselt und partitioniert.

# cryptsetup –cipher aes-xts-plain64 –key-size 256 –hash sha256 –iter-time=10000 luksFormat /dev/md1

# cryptsetup open /dev/md1 cryptroot

# pvcreate /dev/mapper/cryptroot

# vgcreate vg0 /dev/mapper/cryptroot

# lvcreate -n swap -L4G vg0

# lvcreate -n home -L50G vg0

# lvcreate -n mysql -L50G vg0

# lvcreate -n postgresql -L50G vg0

# lvcreate -n log -L5G vg0

# lvcreate -n opt -L20G vg0

# lvcreate -n root -L1T vg0

Die neuen Logical Volumes werden mit mkfs formatiert. Danach werden sie unter /mnt eingebunden und das Minimalsystem hineinkopiert. Die virtuellen Dateisysteme /dev, /sys und /proc werden hineingelinkt, nach /mnt ge chroot ed und md0 als /boot eingebunden. /etc/crypttab wird um die Zeile

cryptroot /dev/md1 none luks,discard

ergänzt, danach werden die Befehle

# update-initramfs -u

# update-grub

# grub-install /dev/sda

# grub-install /dev/sdb

ausgeführt, die chroot-Umgebung verlassen, alle LVs ausgehängt, sync und reboot. Der nächste SSH-Connect erfolgt mit dem Dropbear-Schlüssel. An der auftauchenden busybox-Kommandozeile wird der Befehl cryptroot-unlock eingegeben und mit dem Passwort die Platte entschlüsselt. Der Rechner trennt die SSH-Verbindung; nach neuem Connect (diesmal mit unserem normalen Schlüssel) sind wir im neuen System.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.