SSH während des Bootvorgangs - dropbear
Dropbear ist eine leichtgewichtige SSH-Server-Implementierung für Unix-ähnliche Systeme. Es ermöglicht sichere Fernzugriffe und Dateiübertragungen über das SSH-Protokoll. Dropbear bietet ähnliche Funktionen wie der bekannte OpenSSH, ist jedoch aufgrund seiner geringen Größe und Ressourcenanforderungen besonders für eingebettete Systeme oder Geräte mit begrenzten Ressourcen geeignet.
Eben weil Dropbear so leichtgewichtig ist, lässt es sich bereits in den Bootprozess integrieren. Dies kann man nutzen, um verschlüsselte Festplatten via SSH zu entsperren und so auch das System selbst zu verschlüsseln. Normalerweise müsste bei einem solchen Setup während des Bootvorgangs das Kennwort für die Entschlüsselung direkt am Gerät eingegeben werden. dropbear
ermöglicht es diese Eingabe via SSH vorzunehmen.
Hinweis:
Ab Debian 12 (Bookworm) hat sich der Pfad für Konfigurationsdateien von dropbear geändert und lautet nun /etc/dropbear/initramfs/
statt /etc/dropbear-initramfs/
und die Konfigurationsdatei selbst heißt nicht mehr config
sondern dropbear.conf
.
Die Installation und Einrichtung ist einfach und schnell erledigt:
apt install dropbear-initramfs
cp ~/.ssh/authorized_keys /etc/dropbear-initramfs/
sed -i 's|#DROPBEAR_OPTIONS=|DROPBEAR_OPTIONS="-p 22 -s -j -k -I 300 -c /bin/cryptroot-unlock"|g' /etc/dropbear-initramfs/config
echo "IP=192.168.178.10::192.168.178.1:255.255.255.0:homeserver:eth0" > /etc/initramfs-tools/conf.d/ip
update-initramfs -u -v
In ~/.ssh/authorized_keys
müssen sich natürlich die Keys die zur Anmeldung an Dropbear genutzt werden sollen befinden. Ich gehe hier davon aus, dass diese bereits für den generellen Einsatz auf dem Server hinterlegt sind und mit denen die für Dropbear genutzt werden sollen identisch sind.
Die Angaben in der Zeile IP=
werden mittels Doppelpunkt voneinander getrennt und setzen sich wie folgt zusammen:
- IP-Adresse des Geräts auf dem Dropbear genutzt wird
- leer
- Gateway (also die IP des Routers im Heimnetz)
- Subnetzmaske
- Name des Geräts auf dem Dropbear genutzt wird
- Name des Netzwerkinterfaces auf dem Dropbear gestartet werden soll
Um die Konfiguration zu testen, führt man einen Reboot des Servers durch und verbindet sich dann mittels ssh root@192.168.178.10
, hier sollte man dann zur Eingabe des Kennworts für die Festplattenverschlüsselung aufgefordert werden. Nach der Eingabe des Kennworts sollte der Server normal starten.
Die Optionen in der Zeile DROPBEAR_OPTIONS
bewirken folgendes:
-p 22
: Listen on specified tcp port (and optionally address)-s
: Disable password logins-j
: Disable local port forwarding-k
: Disable remote port forwarding-I 300
: Idle timeout-c /bin/cryptroot-unlock
: Force executed command
Anstelle einer statischen IP-Adresse kann auch DHCP genutzt werden:
IP=:::::eth0:dhcp
Wichtig, wenn man auf dem Heimserver z.B. Pi-Hole betreibt und dessen DHCP-Funktion nutzt, sollte man hier natürlich eine fest IP statt DHCP nutzen, da Pi-Hole ja nicht erreichbar ist, wenn Dropbear zum Einsatz kommt.
Die vollständige Syntax für die IP=
Config findet sich unter https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt