Verschlüsseltes System via SSH freischalten
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.10 Kinetic Kudu
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Hinweis:
Falls man die Installation nicht richtig durchführt oder sich den falschen Schlüssel kopiert, ist es möglich, dass das System nicht mehr booten kann bzw. eine manuelle, lokale Eingabe des Schlüssels am Rechner notwendig ist.
Dieser Artikel erklärt, wie man ein System mit verschlüsselter Root-Partition auch ohne physikalischen Zugang zum Rechner über SSH freischalten kann. Verwendet wird hierzu der dropbear-SSH-Server, der im initramfs untergebracht wird. Dieses Vorgehen kann man anwenden, wenn man z.B. „Dedicated Server“ fast komplett (in diesem Fall bis auf die /boot-Partition) verschlüsseln möchte. Dies ist z.B. bei der Nutzung von Servern vorteilhaft, an denen man nicht direkt arbeitet, und nur über das Netzwerk (komfortabel) erreichen kann.
Installation¶
Folgende Pakete müssen installiert[1] werden:
cryptsetup (sollte schon vorhanden sein)
dropbear (universe)
dropbear-initramfs (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install cryptsetup dropbear dropbear-initramfs
Oder mit apturl installieren, Link: apt://cryptsetup,dropbear,dropbear-initramfs
Wenn bereits ein anderer SSH-Server installiert ist, wird dies erkannt und dropbear wird nur während des Bootvorgangs gestartet. Zur späteren Verifikation sollte man sich die Fingerprints, die ausgegeben werden, aufschreiben.
Konfiguration¶
Nach jeder Änderung müssen die Dateien für initramfs neu erstellt werden. Dies kann durch folgenden dpkg-Befehl für Dropbear erledigt werden (die Installationsskripte des Paketes rufen update-initramfs auf).
sudo dpkg-reconfigure dropbear-initramfs
Schlüssel kopieren¶
Man benötigt einen SSH-RSA-Schlüssel. Dieser muss in /etc/dropbear/initramfs/authorized_keys eingetragen sein und hat die gleiche Syntax wie ~/.ssh/authorized_keys.
Aus Sicherheitsgründen sollte diese Datei root
gehören und von anderen nicht beschreibbar sein.
Netzwerk-Konfiguration im initramfs¶
Die Netzwerk-Konfiguration für den Remote-Zugriff auf den Server wird in der Datei /etc/initramfs-tools/initramfs.conf durchgeführt.
Wie die genauen Regeln zur Konfiguration des Netzwerks aussehen, kann unter nfsroot.txt 🇬🇧 nachgelesen werden. Für DHCPv4 muss keine Zeile hinzugefügt werden.
# # DEVICE: ... # # Specify the network interface, like eth0 # DEVICE=
Für eine statische IPv4-Adresse muss die Zeile wie folgt geändert werden (es werden nur IPv4, Gateway, Netzmaske und Gerät festgelegt):
ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>:<ntp0-ip> IP=192.168.56.101::192.168.56.1:255.255.255.0::ens192
Nun muss wieder eine Aktualisierung des initramfs durchgeführt werden:
sudo update-initramfs -u
Nun wird das Netzwerk-Device bereits vor der Abfrage des Passworts konfiguriert.
Port ändern¶
Möchte man den Port ändern auf dem Dropbear lauscht oder weitere Konfigurationen während des Bootvorgangs vornehmen muss man folgende Zeile in /etc/dropbear/initramfs/dropbear.conf ergänzen:
DROPBEAR_OPTIONS="-p 2222"
Bootvorgang¶
Ist das System im initramfs, erscheint auf dem Monitor wie gewohnt die Kennwortabfrage. Ebenso wird ausgegeben, auf welcher Adresse Dropbear lauscht.
Von außen kann man per ssh mit dem Befehl
ssh -i ~/.ssh/id_rsa root@server
eine Verbindung herstellen und bekommt eine BusyBox-Shell.
Das eigentliche Freischalten erfolgt danach über den Befehl:
cryptroot-unlock
Ist die Partition erfolgreich entschlüsselt worden, wird der Bootvorgang fortgesetzt und die SSH-Verbindung getrennt. Ein Entsperren per angeschlossener Tastatur ist weiterhin möglich.
Links¶