Ubuntu 16.10 Yakkety Yak
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Falls man die Installation nicht richtig durchführt oder sich den falschen Schlüssel kopiert ist es möglich, dass das System nicht mehr booten kann bzw. eine manuelle, lokale Eingabe des Schlüssels am Rechner notwendig ist.
Dieser Artikel erklärt, wie man ein System mit verschlüsselter Root-Partition auch ohne physikalischen Zugang zum Rechner über SSH freischalten kann. Verwendet wird hierzu der dropbear-SSH-Server, der im initramfs untergebracht wird. Dieses Vorgehen kann man anwenden, wenn man z.B. „Dedicated Server“ fast komplett (in diesem Fall bis auf die /boot-Partition) verschlüsseln möchte. Ob dies auch vor Angreifern schützt, die (physikalischen) Zugriff auf den Server haben, ist jedoch nicht sicher.
Folgende Pakete müssen installiert[1] werden:
cryptsetup (sollte schon vorhanden sein)
dropbear
mit apturl
Paketliste zum Kopieren:
sudo apt-get install cryptsetup dropbear
sudo aptitude install cryptsetup dropbear
Wenn bereits ein anderer SSH-Server installiert ist, wird dies erkannt und dropbear wird nur während des Bootvorgangs gestartet. Zur späteren Verifikation sollte man sich die Fingerprints, die ausgegeben werden, aufschreiben.
Achtung: Jegliche Konfigurationen bezüglich des initramfs müssen via "update-initramfs" aktualisiert werden:
sudo update-initramfs -u
Die Netzwerk-Konfiguration für den Remote-Zugriff auf den Server wird in folgender Datei durchgeführt:
/etc/initramfs-tools/initramfs.conf
Wie die genauen Regeln zur Konfiguration des Netzwerks aussehen, kann unter nfsroot.txt nachgelesen werden. Für DHCP muss keine Zeile hinzugefügt werden!
# # DEVICE: ... # # Specify the network interface, like eth0 # DEVICE=
Für eine statische Adresse muss die Zeile wie folgt geändert werden:
DEVICE=ens192 IP=192.168.56.101:::255.255.255.0::ens192:off
Nun muss wieder eine Aktualisierung des initramfs durchgeführt werden:
sudo update-initramfs -u
Nun wird das Netzwerk-Device bereits vor der Abfrage des Passworts konfiguriert.
Nun muss man seinen Public Key für die schlüssel-basierte Authentifizierung auf den Server kopieren.
Auf seinem Client erzeugt man SSH-Schlüssel und kopiert diese auf den Server der entsperrt werden soll
ssh-keygen scp serveruser@server:~/.ssh/id_rsa.pub ~/dropbear_id_rsa.pub
Auf dem Server hinterlegt man den öffentlichen Teil des Schlüssels als autorisierten Schlüssel
ssh serveruser@server sudo touch /etc/dropbear-initramfs/authorized_keys sudo cat ~serveruser/dropbear_id_rsa.pub >> /etc/dropbear-initramfs/authorized_keys rm ~serveruser/dropbear_id_rsa.pub sudo update-initramfs -u
Nach dem Kopieren des RSA-Schlüssels kann man ab sofort bei jedem Bootvorgang die Root-Partition per SSH freischalten. Mit
ssh -i ~/.ssh/id_rsa root@server
kann man sich einloggen und bekommt eine BusyBox-Shell.
Das eigentliche Freischalten erfolgt danach über den Befehl:
echo -n "Passphrase" > /lib/cryptsetup/passfifo
wobei die Passphrase durch das eigene Passwort ersetzt wird, das bei der Einrichtung der Verschlüsselung ausgewählt wurde. Danach wird der Server ganz normal gestartet. Ein paar Sekunden später müsste man sich normal einloggen können.
Wegen der Einführung von Plymouth in 10.04 funktioniert das Freischalten nicht mehr. Eine Lösung wird in einem Fehlerbericht auf Launchpad in Kommentar #5 beschrieben. Nach einem Update des initramfs images mittels update-initramfs -u
sollte das Freischalten via SSH auch unter Systemen ab Lucid Lynx funktionieren. Das System kann dann allerdings nur noch per SSH freigeschaltet werden; das Eingeben des Passworts vor Ort mit angeschlossener Tastatur ist nicht mehr möglich.
Möchte man den Port ändern auf dem Dropbear lauscht oder weitere Konfigurationen während des Bootvorgangs vornehmen muss man folgende Zeile in /etc/initramfs-tools/initramfs.conf ergänzen:
PKGOPTION_dropbear_OPTION="-p 2222"
Sollte eine Verbindung zu Dropbear mit der Meldung "server refused our key" abgewiesen werden, sind evtl. die Berechtigungen des .ssh-Ordners in den initramfs-tools falsch gesetzt. Ein Lösungsweg ist z.B. hier beschrieben. Außerdem muss nach jeder Änderung das initramfs image mittels update-initramfs -u
erneuert werden.
Diese Revision wurde am 25. Januar 2017 08:50 von ah005 erstellt.