LUKS-Festplatten-Vollverschlüsselung per SSH entsperren
Aktuell widme ich mich in meiner Freizeit dem Projekt mein Heimnetzwerk ("Homelab") neu aufzusetzen. Hierbei kommt ein kleiner Mini-PC als "Home"-Server zum Einsatz. Wie bei allen meinen Systemen soll eine Festplatten-Vollverschlüsselung mittels LVM on LUKS zum Einsatz kommen. Zudem möchte ich nicht dass der Server 24/7 läuft, sondern ihn immer nur bei Bedarf per Wake On LAN aufwecken. Konkret möchte ich also z.B. von unterwegs mich mittels VPN mit meinem Heimnetzwerk verbinden, per Wake On LAN den Server starten und dann auf dessen Services zugreifen.
Eine Herausforderung ist die während des Bootvorgangs benötigte Eingabe der Passphrase zum Entsperren des mit LUKS voll-verschlüsselten Systems. Eine Lösung, die ich euch in diesem Beitrag zeigen möchte, ist die Verwendung von Dropbear. Hierbei handelt es sich um einen "kleinen" SSH-Server, der ins initramfs integriert werden kann. Hierdurch lässt sich bereits während des Bootvorgangs eine SSH-Verbindung zum Server aufbauen und so aus der Ferne (Remote) die Passphrase zum Entsperren des Systems eingeben.
Dropbear installieren & einrichten
dropbear-initramfs installieren
Als erstes installieren wir Dropbear für die Integration ins initramfs wie folgt:
sudo apt install dropbear-initramfs
dropbear-initramfs konfigurieren
Im nächsten Schritt öffnet /etc/dropbear/initramfs/dropbear.conf und passt die Konfigurationsdatei an:
DROPBEAR_OPTIONS="-I 180 -j -k -p 33333 -s -c cryptroot-unlock"Die einzelnen Parameter haben dabei folgende Bedeutung:
- -I 180: Schließt die SSH-Verbindung nach 180s Inaktivität.
- -j -k: Deaktiviert Local- und Remote-Portwarding.
- -p 33333: Der SSH-Server lauscht auf Port 33333.
- -s: Deaktiviert SSH-Logins mittels Passwort.
- -c cryptroot-unlock: Beschränkt die SSH-Verbindung/-Session auf Ausführung des Befehls
cryptroot-unlock. Kann bei Bedarf auch weggelassen und manuell eingegeben werden.
SSH-Schlüssel hinterlegen
Für eine erfolgreiche Anmeldung per SSH müsst ihr nun noch euren SSH-Public-Key in die Datei /etc/dropbear/initramfs/authorized_keys kopieren.
initramfs neu erzeugen
Zuguterletzt muss das initramfs neu generiert werden. Hierfür führt folgenden Befehl aus:
sudo update-initramfs -u
Beim nächsten Neustart eures Servers sollten nun zusätzlich zur Abfrage der LUKS-Passphrase weitere Informationen bzgl. der IP-Konfiguration angezeigt werden und der SSH-Server somit laufen.
SSH-Verbindung herstellen und System entsperren
Auf eurem Notebook/PC stellt nun eine Verbindung zu eurem Server her (ersetzt localhost durch die entsprechende IP eures Servers). Direkt nach erfolgreicher Anmeldung per SSH werdet ihr aufgefordert die LUKS-Passphrase zum Entsperren eures Server-Systems einzugeben.
ssh -p 33333 root@localhost
Please unlock disk vda2_crypt:
cryptsetup: vda2_crypt set up successfully
Connection to localhost closed.Wenn alles geklappt hat, habt ihr nun euer Server-System entschlüsselt und die SSH-Verbindung wird automatisch geschlossen. Anschließend könnt ihr ganz normal auf eure Server-Dienste zugreifen.
Fazit
Im Rahmen von Zero Trust lassen sich auch mit LUKS verschlüsselte Systeme bei Bedarf problemlos aus der Ferne entsperren bzw. entschlüsseln.