Nachdem ich meinen Homelab-Server auf Arch Linux umgestellt habe, wollte ich wie zuvor bei Debian mein mit LVM on LUKS voll-verschlüsseltes System per SSH entsperren können. Erste Anlaufstelle war für mich wie immer das Arch-Linux-Wiki. Die im Wiki vorgestellten Lösungen verwenden jedoch zum gegenwärtigen Zeitpunkt alle min. ein Paket aus dem Arch User Repository (AUR). Aus Sicherheitsgründen versuche ich, wenn möglich, AUR-Pakete zu vermeiden. Nach etwas Recherche habe ich dann eine Lösung mithilfe des Pakets mkinitcpio-systemd-tool in Verbindung mit dem SSH-Server Dropbear gefunden. Welche Schritte diesbzgl. zum Einrichten nötig sind, findet ihr im folgenden Beitrag.
Arch Linux: LUKS-voll-verschlüsseltes System beim Booten per SSH entsperren (mittels systemd und Dropbear)
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.
Wie ich den Bootvorgang meines Linux-Notebooks absichere - UEFI Secure Boot, Measured Boot (TPM), LUKS
Nebst dem Absichern (Hardening) des Betriebssystems, sollte auch der eigentliche Bootvorgang, dem meist weniger Beachtung bzgl. Sicherheit geschenkt wird, abgesichert werden. Die beste Festplatten-Vollverschlüsselung bringt nicht allzu viel, wenn euer System z.B. mit einem manipulierten Kernel gebootet wird und im Hintergrund bspw. euer Passwort mitgeloggt wird. Aus diesem Grund ist es wichtig bereits beim Bootvorgang sichzustellen, dass nur vertrauenswürdige Firmware/Software geladen und ausgeführt wird.
In diesem Beitrag gebe ich euch einen Überblick darüber, welche Schritte ich umgesetzt habe, um ich mein Notebook mit Arch Linux sicher zu booten.
Linux: LUKS-Container mit FIDO2 entsperren
Standardmäßig lassen sich LUKS-Volumes, wie z.B. LUKS-Container, mit einer Passphrase entsperren bzw. entschlüsseln. Seit einiger Zeit bietet systemd mit systemd-cryptenroll aber auch die Möglichkeit, LUKS-Container mit einem FIDO2-Gerät, welches die HMAC Secret Extension unterstützt, zu entsperren. Wie sich das z.B. mit einem Hardware-Security-Token wie einem YubiKey umsetzen lässt, zeige ich in folgendem Beitrag.
Arch Linux: LUKS-Volume mit TPM2 inkl. PIN entschlüsseln
Mit systemd-cryptenroll bietet systemd eine einfache Möglichkeit, PKCS#11-, FIDO2- und/oder TPM2-Token-/Geräte zum Entschlüsseln von LUKS2-Volumes einzurichten. Mit der neuesten Version von systemd v251 lässt sich für die Verwendung eines TPM2-Chips auch noch eine zusätzliche PIN festlegen. Dadurch muss zum Entschlüsseln des LUKS-Volume nicht nur der TPM-Speicher (PCR-Status) korrekt sein, sondern es muss auch die korrekte PIN eingegeben werden.
Für mein Notebook mit Arch Linux verwende ich die TPM2+PIN-Lösung nun zum Entschlüsseln meines mit LUKS vollverschlüsselten Systems (Root-LVM-Partition). Was ich dafür tun musste, erfahrt ihr in diesem Beitrag.