LUKS Server-LVM beim Boot mittels Dropbear SSH via Wifi entsperren

von Eric Kubenka

Ich habe mir letztens einen kleinen Tiny PC gekauft, welcher als Server für kleine Docker-Container dienen soll. Home Assistant, ein kleines Grafana und ein bisschen Logging. Der Standarkram für den Heimautomatisierungsbedarf eben. Der kleine PC hat Wifi und soll in einer Ecke stehen, welche nicht über ein LAN Kabel erreichbar ist. Aufgesetzt hab ich den Kleinen mit einem schlanken Debian 13 System und LVM mit LUKS Verschlüsselung für die Platten. Der aktuelle Standard eben. - Bis mir dann aufgefallen ist, dass ich Platten ja entschlüsseln muss, wenn ich ihn mal neu starte oder ein Stromverlust zum Reboot führt. Also schnell ein Dropbear SSH Server im initramfs aufgesetzt und den Wifi Netzwerkadapter ebenfalls noch im initramfs verfügbar gemacht, damit ich das Decrpyt-Passwort auch per SSH über Wifi eingeben kann.

Wifi Kernelmodule im initramfs verfügbar machen

In meinem Server ist Intel Wifi Karten verbaut. Um die entsprechenden Kernelmodule iwlwifi und iwlmvm im initramfs verfügbar zu machen, müssen diese in der Datei /etc/initramfs-tools/modules eingetragen werden:

# List of modules that you want to include in your initramfs.
# They will be loaded at boot time in the order below.
#
# Syntax:  module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod

iwlwifi
iwlmvm

Dropbear installieren und im initramfs verfügbar machen

Dropbear, ist wie bereits erwähnt, ein kleiner und äußerst ressourcenfreundlicher SSh Server, welcher im initramfs kann, also dem kleinen Dateisystem, welches beim Booten geladen wird, bevor das eigentliche System gestartet wird. Um Dropbear zu installieren, folgte ich einfach der entsprechenden Anleitung im Debian Wiki.

In der /etc/initramfs-tools/initramfs.conf Datei muss das WLAN Interface im DEVICE Block angegeben werden. Außerdem eine IP-Config, in meinem Fall einfach, da ich die IP via DHCP beziehe.

#
# DEVICE: ...
#
# Specify a specific network interface, like eth0
# Overridden by optional ip= or BOOTIF= bootarg
#

DEVICE=wlp2s0
IP=:::::wlp2s0:dhcp

Anschließend muss man unbedingt darauf achten, dass die Host-Keys auch im Dropbear Verzeichnis liegen und vorher in ein Dropbear-fähiges Format konvertiert werden, damit man beim SSH zum Dropbear SSH Server und dem eigentlichen SSH Server nach dem Boot nicht jedes mal in eine Host Key Verification Warning läuft.

dropbearconvert openssh dropbear /etc/ssh/ssh_host_ecdsa_key /etc/dropbear/initramfs/dropbear_ecdsa_host_key
dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/dropbear/initramfs/dropbear_rsa_host_key
dropbearconvert openssh dropbear /etc/ssh/ssh_host_ed25519_key /etc/dropbear/initramfs/dropbear_ed25519_host_key

Ebenfalls ist es wichtig, dass man die aktuellen Einträge der authorized_keys Datei entsprechend nach /etc/dropbear/initramfs/authorized_keys kopiert. Ansonsten wir des mit dem Login als root dann knifflig.

Das Update des initramfs nicht vergessen!

WLAN-Daten mittels WPA Supplicant konfigurieren

Das Gröbste ist nun bereit geschafft, doch fehlt noch die Konfiguration des WLANs. Also SSID und Passwort.

Hier habe ich mir eine WPA Supplicant Konfigurationsdatei erstellt. Dazu habe ich das wifi-on-debian-initramfs-Repository verwendet, um die Dateien dann auch entsprechend im initramsfs verfügbar zu machen.

Für WPA2 ist das proto immer RSN, für die Werte von pairwise und group habe zuvor mittels iw dev wlp2s0 scan ermittelt.

# sample /etc/initramfs-tools/wpa_supplicant.conf
# note that this is independent of the system /etc/wpa_supplicant.conf (if any)
# only add the network you need at boot time. **And keep the ctrl_interface** !!
ctrl_interface=/tmp/wpa_supplicant

network={
    ssid="WLAN-SSID"
    scan_ssid=1
    proto=RSN
    psk="PASSWORT"
    key_mgmt=WPA-PSK
    pairwise=CCMP
    group=CCMP
}

Thats it. Wenn man den Anweisungen gefolgt ist, sollte nun beim nächsten Reboot ein Dropbear SSH Server im initramfs laufen, welcher über das Wifi Interface erreichbar ist.

Links