|
| 1 | +# LUKS Server-LVM beim Boot mittels Dropbear via Wifi entsperren |
| 2 | + |
| 3 | +Ich habe mir letztens einen kleinen Tiny PC gekauft, welcher als Server für kleine Docker-Container dienen soll. Home |
| 4 | +Assistant, ein kleines Grafana und ein bisschen Logging. Der Standarkram für den Heimautomatisierungsbedarf eben. |
| 5 | +Der kleine PC hat Wifi und soll in einer Ecke stehen, welche nicht über ein LAN Kabel erreichbar ist. |
| 6 | +Aufgesetzt hab ich den Kleinen mit einem schlanken Debian 13 System und LVM mit LUKS Verschlüsselung für die Platten. |
| 7 | +Der aktuelle Standard eben. - Bis mir dann aufgefallen ist, dass ich Platten ja entschlüsseln muss, wenn |
| 8 | +ich ihn mal neu starte oder ein Stromverlust zum Reboot führt. |
| 9 | +Also schnell ein Dropbear SSH Server im `initramfs` aufgesetzt und den Wifi Netzwerkadapter ebenfalls noch im `initramfs` |
| 10 | +verfügbar gemacht, damit ich das Decrpyt-Passwort auch per SSH über Wifi eingeben kann. |
| 11 | + |
| 12 | +## Wifi Kernelmodule im initramfs verfügbar machen |
| 13 | + |
| 14 | +In meinem Server ist Intel Wifi Karten verbaut. Um die entsprechenden Kernelmodule `iwlwifi` und `iwlmvm` im `initramfs` |
| 15 | +verfügbar zu machen, müssen diese in der Datei `/etc/initramfs-tools/modules` eingetragen werden: |
| 16 | + |
| 17 | +``` |
| 18 | +# List of modules that you want to include in your initramfs. |
| 19 | +# They will be loaded at boot time in the order below. |
| 20 | +# |
| 21 | +# Syntax: module_name [args ...] |
| 22 | +# |
| 23 | +# You must run update-initramfs(8) to effect this change. |
| 24 | +# |
| 25 | +# Examples: |
| 26 | +# |
| 27 | +# raid1 |
| 28 | +# sd_mod |
| 29 | +
|
| 30 | +iwlwifi |
| 31 | +iwlmvm |
| 32 | +```` |
| 33 | +
|
| 34 | +## Dropbear installieren und im initramfs verfügbar machen |
| 35 | +
|
| 36 | +Dropbear, ist wie bereits erwähnt, ein kleiner und äußerst ressourcenfreundlicher SSh Server, welcher im `initramfs` kann, |
| 37 | +also dem kleinen Dateisystem, welches beim Booten geladen wird, bevor das eigentliche System gestartet wird. |
| 38 | +Um Dropbear zu installieren, folgte ich einfach der entsprechenden Anleitung |
| 39 | +im [Debian Wiki](https://wiki.debian.org/DropBear). |
| 40 | +
|
| 41 | +In der `/etc/initramfs-tools/initramfs.conf` Datei muss das WLAN Interface im `DEVICE` Block angegeben werden. Außerdem |
| 42 | +eine IP-Config, in meinem Fall einfach, da ich die IP via DHCP beziehe. |
| 43 | +
|
| 44 | +```` |
| 45 | +# |
| 46 | +# DEVICE: ... |
| 47 | +# |
| 48 | +# Specify a specific network interface, like eth0 |
| 49 | +# Overridden by optional ip= or BOOTIF= bootarg |
| 50 | +# |
| 51 | +
|
| 52 | +DEVICE=wlp2s0 |
| 53 | +IP=:::::wlp2s0:dhcp |
| 54 | +```` |
| 55 | +
|
| 56 | +Anschließend muss man unbedingt darauf achten, dass die Host-Keys auch im Dropbear Verzeichnis liegen und vorher in ein |
| 57 | +Dropbear-fähiges Format konvertiert werden, damit man beim SSH zum Dropbear SSH Server und dem eigentlichen SSH Server |
| 58 | +nach dem Boot nicht jedes mal in eine Host Key Verification Warning läuft. |
| 59 | +
|
| 60 | +```` |
| 61 | +dropbearconvert openssh dropbear /etc/ssh/ssh_host_ecdsa_key /etc/dropbear/initramfs/dropbear_ecdsa_host_key |
| 62 | +dropbearconvert openssh dropbear /etc/ssh/ssh_host_rsa_key /etc/dropbear/initramfs/dropbear_rsa_host_key |
| 63 | +dropbearconvert openssh dropbear /etc/ssh/ssh_host_ed25519_key /etc/dropbear/initramfs/dropbear_ed25519_host_key |
| 64 | +```` |
| 65 | +
|
| 66 | +Das Update des initramfs nicht vergessen! |
| 67 | +
|
| 68 | +## WLAN-Daten mittels WPA Supplicant konfigurieren |
| 69 | +
|
| 70 | +Das Gröbste ist nun bereit geschafft, doch fehlt noch die Konfiguration des WLANs. Also SSID und Passwort. |
| 71 | +
|
| 72 | +Hier habe ich mir eine WPA Supplicant Konfigurationsdatei erstellt. Dazu habe ich |
| 73 | +das [wifi-on-debian-initramfs](https://github.com/fangfufu/wifi-on-debian-initramfs)-Repository verwendet, um die |
| 74 | +Dateien dann auch entsprechend im initramsfs verfügbar zu machen. |
| 75 | +
|
| 76 | +Für WPA2 ist das `proto` immer RSN, für die Werte von `pairwise` und `group` habe zuvor mittels `iw dev wlp2s0 scan` |
| 77 | +ermittelt. |
| 78 | +
|
| 79 | +```` |
| 80 | +# sample /etc/initramfs-tools/wpa_supplicant.conf |
| 81 | +# note that this is independent of the system /etc/wpa_supplicant.conf (if any) |
| 82 | +# only add the network you need at boot time. **And keep the ctrl_interface** !! |
| 83 | +ctrl_interface=/tmp/wpa_supplicant |
| 84 | +
|
| 85 | +network={ |
| 86 | + ssid="WLAN-SSID" |
| 87 | + scan_ssid=1 |
| 88 | + proto=RSN |
| 89 | + psk="PASSWORT" |
| 90 | + key_mgmt=WPA-PSK |
| 91 | + pairwise=CCMP |
| 92 | + group=CCMP |
| 93 | +} |
| 94 | +```` |
| 95 | +
|
| 96 | +Thats it. Wenn man den Anweisungen gefolgt ist, sollte nun beim nächsten Reboot ein Dropbear SSH Server im `initramfs` |
| 97 | +laufen, welcher über das Wifi Interface erreichbar ist. |
| 98 | +
|
| 99 | +### Links |
| 100 | +
|
| 101 | +- [Debian Wiki :: Dropbear](https://wiki.debian.org/DropBear) |
| 102 | +- [GitHub :: wifi-on-debian-initramfs](https://github.com/fangfufu/wifi-on-debian-initramfs) |
| 103 | +- [Ubuntu Wiki :: WPA Supplicant](https://wiki.ubuntuusers.de/WLAN/wpa_supplicant/) |
0 commit comments