[[Vorlage(Getestet, jammy)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:System verschlüsseln: Installation eines verschlüsselten Systems] [:LUKS:] [:SSH:] }}} {{{#!vorlage Hinweis 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. }}} [[Inhaltsverzeichnis()]] 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. Dies ist z.B. bei der Nutzung von Servern vorteilhaft, an denen man nicht direkt arbeitet, und nur über das Netzwerk (komfortabel) erreichen kann. = Installation = Folgende Pakete müssen installiert[1] werden: {{{#!vorlage Paketinstallation cryptsetup, sollte schon vorhanden sein dropbear, universe dropbear-initramfs, universe dropbear-run, universe dropbear-bin, universe }}} 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. = Konfiguration = Nach jeder Änderung müssen die Dateien für initramfs neu erstellt werden. Dies kann durch folgenden dpkg-Befehl für Dropbear erledigt werden (die Installationsskripte des Paketes rufen '''update-initramfs''' auf). {{{#!vorlage Befehl sudo dpkg-reconfigure dropbear-initramfs }}} {{{#!vorlage Befehl sudo update-initramfs -u }}} == Schlüssel erstellen == Ein Remotezugriff via [:dropbear:] funktioniert nur mit einer zusätzlichen Schlüssel authentifizierten Anmeldung. Hierzu muss ein Schlüsselpaar für den Host als auch den Client vorhanden sein. Ein passendes Schlüsselpaar kann mit dem [https://wiki.ubuntuusers.de/SSH/#Public-Key-Authentifizierung SSH-Keygen] Befehl erzeugt werden: {{{#!vorlage Befehl ssh-keygen -t rsa -b 4096 }}} Der Verschlüsselungs-Algorithmus wird mit der Option `-t rsa` für eine RSA-Verschlüsselung und die Schlüsselgröße mit der Option `-b 4096` ausgewählt. Somit wird ein RSA-Schlüsselpaar mit 4096 Bit erstellt. Damit alles klappt, wird sowohl am Server als auch am Client ein RSA-Schlüssel erzeugt. [mark]Der private Schlüssel sollte niemals weitergegeben und entsprechend sicher verwahrt werden.[/mark] == Erstanmeldung und Schlüssel an Server übertragen == Damit bei der Verbindung deren Authentizität überprüft werden kann, benötigt der Server entsprechend den Public-Key des Clients. Für die Übertragung des öffentlichen Schlüssel vom Client auf den Server eignet sich der Befehl `ssh-copy-id`. {{{#!vorlage Befehl ssh-copy-id -i .ssh/key_rsa.pub benutzer@server-ip }}} Der `Benutzer` sowie die `Server-IP` sind entsprechend der eigenen Konfiguaration anzupassen. Nach der Bestätigung mit [[Vorlage(Tasten, enter)]] wird das SSH-Passwort des Servers angefordert: {{{benutzer@server-ip's password:}}} Nach der Eingabe des korrekten Passwortes erscheint: {{{# Now try logging into the machine, with "ssh 'benutzer@server-ip'", and check in: # ~/.ssh/authorized_keys # to make sure we haven't added extra keys that you weren't expecting.}}} Was ist passiert? Der obige Befehlt `ssh-copy-id` sorgte für eine Anmeldung am Server und hat gleichzeitig den SSH-Key vom Client an diesen übermittelt und in der Datei `~/.ssh/authorized_keys` auf dem Server gespeichert. Ab sofort ist eine Anmeldung beim Server von diesem Client aus mit dem SSH-Key möglich: {{{#!vorlage Befehl ssh benutzer@server.ip }}} Bei der Anmeldung wird nicht mehr das SSH-Passwort des Servers sondern die Passphrase des eigenen SSH-Schlüssel abgefragt. [mark]Dieser Schritt muss auf jedem Client, welcher später auch via dropbear die verschlüsselte Festplatte via SSH entsperren soll vorab durchgeführt werden![/mark] == Schlüssel für dropbear kopieren == Durch den vorherigen Schritt wurde der öffentliche Key des Client auf dem Server unter `~/.ssh/authorized_keys` gespeichert. Damit auch dropbear diese Schlüssel verwenden kann, müssen diese noch in das Verzeichnis von dropbear kopiert werden. Bei einer Neukonfiguartion wird die Datei `/etc/dropbear/initramfs/authorized_keys` noch nicht vorhanden sein. Somit kann diese direkt kopiert werden: {{{#!vorlage Befehl sudo cp ~/.ssh/authorized_keys /etc/dropbear/initramfs/authorized_keys }}} Aus Sicherheitsgründen sollte diese Datei ``root`` gehören und von anderen nicht beschreibbar sein. Jetzt erschließt sich, warum sich vorher alle benötigten Clients via `ssh-copy-id` am Server anmelden mussten. Es sollte auch überprüft werden, dass nur die berechtigten SSH-Keys in der Datei `authorized_keys` gespeichert sind. == Netzwerk-Konfiguration im initramfs == Die Netzwerk-Konfiguration für den Remote-Zugriff auf den Server wird in der Datei '''/etc/initramfs-tools/initramfs.conf''' durchgeführt. Wie die genauen Regeln zur Konfiguration des Netzwerks aussehen, kann unter [https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt nfsroot.txt] {en} nachgelesen werden. Für DHCPv4 muss keine Zeile hinzugefügt bzw. geändert werden. {{{ # # DEVICE: ... # # Specify the network interface, like eth0 # DEVICE= }}} Für eine statische IPv4-Adresse muss die Zeile wie folgt geändert werden (es werden nur IPv4, Gateway, Netzmaske und Gerät festgelegt): {{{ ip=::::::::: IP=192.168.56.101::192.168.56.1:255.255.255.0::ens192 }}} Nun wird das Netzwerk-Device bereits vor der Abfrage des Passworts konfiguriert. == Port ändern == Möchte man den Port ändern auf dem Dropbear lauscht oder weitere Konfigurationen während des Bootvorgangs vornehmen muss man folgende Zeile in '''/etc/dropbear/initramfs/dropbear.conf''' ergänzen: {{{ DROPBEAR_OPTIONS="-p 2222" }}} == Konfiguaration abschließen == Nachdem nun alle Schlüssel erstellt, getauscht und kopiert wurden und bei Bedarf Änderungen an der Konfiguaration vorgenommen wurden, muss `dropbear` und `initramfs` aktualisiert werden: {{{#!vorlage Befehl sudo dpkg-reconfigure dropbear-initramfs }}} {{{#!vorlage Befehl sudo update-initramfs -u }}} Wenn alles ohne Fehler verarbeitet wurde ist es an der Zeit für den Bootvorgang. = Bootvorgang = Ist das System im initramfs, erscheint auf dem Monitor wie gewohnt die Kennwortabfrage. Ebenso wird ausgegeben (wenn ein Monitor angeschlossen ist), auf welcher Adresse dropbear lauscht. Dropbear bekommt bei DHCP-Konfiguarationen häufig eine andere IP zugewiesen, als der Server selbst. Im Zweifel kann die korrekte IP auch im Router ermittelt werden. Vom Client aus verbindet man sich nun mit dem Server per [https://wiki.ubuntuusers.de/SSH SSH] mit dem Befehl: {{{#!vorlage Befehl ssh root@server-ip }}} Die Anmeldung bei dropbear erfolgt immer mit dem `root`-Benutzer. Die Verbindung wird anschließend in einer BusyBox-Shell etabliert. Das eigentliche Freischalten der verschlüsselten Festplatte erfolgt danach über den Befehl: {{{#!vorlage Befehl cryptroot-unlock }}} Nach Eingabe der korrekten Passphrase ist die Partition erfolgreich entschlüsselt worden und der Bootvorgang wird fortgesetzt. Die SSH-Verbindung zu dropbear wird automatisch getrennt. Wenn der Server hochgefahren ist, kann sich wieder mit dem normalen SSH-Benutzer auf diesen verbunden werden. == Bei Problemen == Ein Entsperren per angeschlossener Tastatur ist jederzeit möglich. Dropbear kann durch einfaches Drücken der [[Vorlage(Tasten, enter)]] Taste übersteuert werden und es erscheint die Eingabe zum Entsperren der Festplatte. = Links = * [bug: :][https://bugs.launchpad.net/ubuntu/+source/dropbear Launchpad: Übersicht bekanntgemachter Dropbear Fehlerberichte] * [https://www.thomas-krenn.com/de/wiki/Voll-verschl%C3%BCsseltes-System_via_SSH_freischalten Detaillierte Anleitung inkl. Import von OpenSSH-Schlüsseln] #tag: Netzwerk, Ubuntu, Internet, System, Sicherheit, Shell, Installation, Server, Dropbear, SSH, Verschlüsselung, LUKS, Boot