{"id":5282,"date":"2024-01-16T18:35:36","date_gmt":"2024-01-16T17:35:36","guid":{"rendered":"https:\/\/speefak.spdns.de\/oss_lifestyle\/?p=5282"},"modified":"2024-06-02T08:54:08","modified_gmt":"2024-06-02T06:54:08","slug":"luks-remote-entsperrung-ueber-ssh-dropbear","status":"publish","type":"post","link":"https:\/\/speefak.spdns.de\/oss_lifestyle\/luks-remote-entsperrung-ueber-ssh-dropbear\/","title":{"rendered":"LUKS Remote Entsperrung \u00fcber SSH \/ Dropbear"},"content":{"rendered":"<p>Der Vorteil bei der Verwendung von LVMs ist, dass f\u00fcr die Entsperrung aller Logical Volumes nur mehr ein Passwort eingegeben werden muss. Dadurch wird das Crypto-Device, in dem sich die Volume Group und die Logical Volumes f\u00fcr z.B. &#8220;\/root&#8221; und &#8220;\/home&#8221; befinden, entsperrt. F\u00fcr das erfolgreiche Booten wird nur mehr <strong>eine<\/strong> unverschl\u00fcsselte boot-Partition ben\u00f6tigt. Beim Start des Servers wird anschlie\u00dfend nach dem Passwort f\u00fcr die Entsperrung des Crypto-Devices gefragt (&#8220;Pre-boot Authentifizierung&#8221;). Da au\u00dfer &#8220;\/boot&#8221; noch keine Dateisysteme zur Verf\u00fcgung stehen, ist es nicht m\u00f6glich das System \u00fcber eine Remote-Verbindung zu entsperren. Das Passwort muss \u00fcber eine angeschlossene Tastatur eingegeben werden, was f\u00fcr einen Server problematisch sein kann.<\/p>\n<p>Mit Dropbear existiert ein SSH Server, der vor dem Entsperrungsdialog durch initramfs geladen wird und somit eine Remoteentsperrrung der LUKS Partitionen erm\u00f6glicht.<\/p>\n<hr \/>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><a href=\"#installation\">1.0 Installation<\/a><\/li>\n<li><a href=\"#konfiguration\">2.0 Konfiguration<\/a><\/li>\n<li><a href=\"#konfiguration-network\">2.1 Konfiguration Netzwerk<\/a><\/li>\n<li><a href=\"#Konfiguration_SSH-Zugriff_auf_Dropbear\">2.2 Konfiguration<\/a><\/li>\n<li><a href=\"#Entsperren des Crypto-Devices\">3.0 Entsperren des Crypto-Devices<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<hr \/>\n<h2 id=\"installation\">1.0 Installation<\/h2>\n<p>Der dropbear SSH-Server wird wie gewohnt \u00fcber den Paketmanager installiert :<\/p>\n<pre class=\"lang:sh decode:true\">sudo apt-get install dropbear<\/pre>\n<p style=\"text-align: center;\"><span style=\"text-decoration: underline;\"><strong><em><a href=\"#overview\">Zur\u00fcck zur \u00dcbersicht<\/a><\/em><\/strong><\/span><\/p>\n<hr \/>\n<h2 id=\"konfiguration\">2.0 Konfiguration<\/h2>\n<p>Grundlegende Konfigurationen wie z.B. automatisierter Start werden in der Datei <code>\/etc\/default\/dropbear<\/code> festgelegt. Der Eintrag &#8220;No_START=1&#8221; muss f\u00fcr den automatisierten Start auf &#8220;NO_START=0&#8221; gesetzt werden.<\/p>\n<pre class=\"lang:sh decode:true\">sudo sed -i 's\/NO_START=1\/NO_START=0\/' \/etc\/default\/dropbear\r\n<\/pre>\n<p><span id=\"konfiguration-network\" style=\"text-decoration: underline;\">2.1 Konfiguration Netzwerk<\/span><\/p>\n<p>Die Netzwerkkonfiguration f\u00fcr den Remote-Zugriff auf den Server wird \u00fcber die Datei <code>\/etc\/initramfs-tools\/initramfs.conf<\/code> vorgenommen. Hier werden systemspezifische Angaben wie das Netzwerkger\u00e4t und die IP angeben (In diesem Beispiel enp1s1 und DHCP Adressvergabe):<\/p>\n<pre class=\"lang:sh decode:true\">#\r\n# DEVICE: ...\r\n#\r\n# Specify the network interface, like eth0\r\n#\r\nDEVICE=enp1s1 \r\nIP=:::::enp1s1:dhcp<\/pre>\n<p>F\u00fcr eine statische Adresse muss die Zeile wie folgt ge\u00e4ndert werden:<\/p>\n<pre class=\"lang:sh decode:true\">DEVICE=enp1s1 \r\nIP=192.168.56.101:::255.255.255.0::enp1s1:off<\/pre>\n<p>Nun wird das Netzwerk-Device bereits vor der Abfrage des Passworts f\u00fcr das Crypto-Device konfiguriert. Wie die detaillierten Regeln zur Konfiguration der Ger\u00e4te aussehen, kann unter <a href=\"https:\/\/mirrors.edge.kernel.org\/pub\/linux\/kernel\/people\/marcelo\/linux-2.4\/Documentation\/nfsroot.txt\" target=\"_blank\" rel=\"noopener noreferrer\">nfsroot.txt<\/a> nachgelesen werden.<\/p>\n<p><span id=\"Konfiguration_SSH-Zugriff_auf_Dropbear\" style=\"text-decoration: underline;\">2.2 Konfiguration SSH-Zugriff auf Dropbear<\/span><span id=\"Konfiguration_SSH-Zugriff_auf_Dropbear\" style=\"text-decoration: underline;\"><br \/>\n<\/span><\/p>\n<p>Dropbear erstellt mehrere Schl\u00fcssel bei der Installation. Der Host Key f\u00fcr die Identifikation des Servers befindet sich in:<\/p>\n<pre class=\"lang:sh decode:true\">lvtest@ubuntu:~$ ls \/etc\/initramfs-tools\/etc\/dropbear\/dropbear_dss_host_key dropbear_rsa_host_key<\/pre>\n<p>Au\u00dferdem werden automatisch RSA-Schl\u00fcssel f\u00fcr die Public-Key-Authentifizierung erzeugt. Diese werden in folgendem Verzeichnis abgelegt:<\/p>\n<pre class=\"lang:default decode:true\">lvtest@ubuntu:~$ ls \/etc\/initramfs-tools\/root\/.ssh\/authorized_keys id_rsa id_rsa.pub<\/pre>\n<p>Der Private-Key &#8220;id_rsa&#8221; kann f\u00fcr den Zugriff auf den Server vom Client aus verwendet werden. Er muss dazu \u00fcber einen gesicherten Weg auf den Client \u00fcbertragen werden.<\/p>\n<p>Achtung: Der Private-Key von Dropbear liegt unverschl\u00fcsselt vor, sollte die Datei &#8220;id_rsa&#8221; von einem Angreifer entwendet werden, so hat dieser direkten Zugriff auf den Dropbear SSH-Server. Da Dropbear aber kompatibel zu openssh-Schl\u00fcssel ist, empfiehlt es sich am Client ein eigenes SSH-Schl\u00fcsselpaar zu erzeugen und dann den Public-Key zum &#8220;Authorized Keys&#8221;-File von Dropbear hinzuzuf\u00fcgen (s.a. SSH_Key_Login) (am Client):<\/p>\n<pre class=\"lang:default decode:true \">ssh-keygen\r\nGenerating public\/private rsa key pair.\r\nEnter file in which to save the key (\/home\/client\/.ssh\/id_rsa): \/home\/client\/.ssh\/dropbear\/id_rsa_initram\r\nEnter passphrase (empty for no passphrase):\r\nEnter same passphrase again:\r\nYour identification has been saved in \/home\/client\/.ssh\/dropbear\/id_rsa_initram.\r\nYour public key has been saved in \/home\/client\/.ssh\/dropbear\/id_rsa_initram.pub.<\/pre>\n<p>Wichtig: Die Verwendung eines Passwortes sorgt f\u00fcr die Verschl\u00fcsselung des Private-Keys mittels AES-CBC 128-Bit-Key. Der Private-Key kann somit nur nach erfolgreicher Eingabe des Passworts verwendet werden, da die Datei &#8220;id_rsa_initram&#8221; nicht im Klartext vorliegt. Der Public-Key kann nun auf den Server kopiert werden:<\/p>\n<pre class=\"lang:default decode:true \">client@test:~$ scp \/home\/client\/.ssh\/dropbear\/id_rsa_initram.pub lvtest@192.168.56.101:\/home\/lvtest\r\nlvtest@192.168.56.101's password:\r\nid_rsa_initram.pub 100% 396 0.4KB\/s 00:00<\/pre>\n<p>Um Zugriff auf den Server zu erhalten, wird der zuvor am Client erstellte Public Key dem &#8220;Authorized Keys&#8221;-File von Dropbear auf dem Server hinzugef\u00fcgt:<\/p>\n<pre class=\"lang:default decode:true\">lvtest@ubuntu:~$ sudo su\r\nroot@ubuntu:\/home\/lvtest# cat id_rsa_initram.pub &gt;&gt; \/etc\/initramfs-tools\/root\/.ssh\/authorized_keys<\/pre>\n<p>Nun kann der Server neu gestartet werden und ein Verbindungstest mit dem soeben erstellten Schl\u00fcsselpaar durchgef\u00fchrt werden.<\/p>\n<p style=\"text-align: center;\"><span style=\"color: #ff9900;\">Achtung: Jegliche Konfigurationen bez\u00fcglich des initramfs m\u00fcssen via &#8220;update-initramfs&#8221; aktualisiert werden:<\/span><\/p>\n<pre class=\"lang:sh decode:true\">sudo update-initramfs -u<\/pre>\n<pre class=\"lang:default decode:true\">client@test:~$ ssh -i .ssh\/dropbear\/id_rsa_initram -o UserKnownHostsFile=.ssh\/dropbear\/known_hosts root@192.168.56.101\r\nThe authenticity of host '192.168.56.101 (192.168.56.101)' can't be established.\r\nRSA key fingerprint is 03:92:1f:35:fc:e2:2b:db:ac:9b:b7:03:ba:37:e5:f1.\r\nAre you sure you want to continue connecting (yes\/no)? yes\r\nWarning: Permanently added '192.168.56.101' (RSA) to the list of known hosts.\r\n\r\nBusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shell (ash)\r\nEnter 'help' for a list of built-in commands.<\/pre>\n<p>Nach erfolgreichem Test erscheint am Server eine BusyBox-Shell. Diese Shell wird zu einem sp\u00e4teren Zeitpunkt f\u00fcr die Entsperrung des Crypto-Devices verwendet.<\/p>\n<p style=\"text-align: center;\"><strong><em><a href=\"#overview\">Zur\u00fcck zur \u00dcbersicht<\/a><\/em><\/strong><\/p>\n<hr \/>\n<h2 id=\"Entsperren des Crypto-Devices\">3.0 Entsperren des Crypto-Devices<\/h2>\n<p>Nach erfolgreichem Abschluss des Verbindungstests mit Dropbear besteht die M\u00f6glichkeit zur Durchf\u00fchrung der eigentlichen Entsperrung der verschl\u00fcsselten Logical Volume Manager (LVMs). Zu diesem Zweck wird erneut eine Verbindung zum Server \u00fcber SSH (Dropbear) hergestellt, um anschlie\u00dfend zur BusyBox-Shell zu gelangen.<\/p>\n<pre class=\"lang:default decode:true\">client@test:~$ ssh -i .ssh\/dropbear\/id_rsa_initram -o UserKnownHostsFile=.ssh\/dropbear\/known_hosts root@192.168.56.101\r\nBusyBox v1.21.1 (Ubuntu 1:1.21.0-1ubuntu1) built-in shell (ash)\r\nEnter 'help' for a list of built-in commands.\r\n<\/pre>\n<p>An dieser Stelle erfolgt die Entsperrung der verschl\u00fcsselten Logical Volume Manager (LVMs) mittels des nachstehenden Befehls. Dabei ist zu beachten, dass das Passwort &#8220;encryptiontest&#8221; durch das individuell beim Anlegen des Crypto-Devices festgelegte Passwort zu ersetzen ist. Es stehen zwei M\u00f6glichkeiten zur Verf\u00fcgung, um die Entsperrung vorzunehmen:<\/p>\n<pre class=\"lang:default decode:true\">\/lib\/cryptsetup\/passfifo\r\n# echo -n \"encryptiontest\" &gt; \/lib\/cryptsetup\/passfifo\r\n\/lib\/cryptsetup\/askpass<\/pre>\n<p>Die Variante ohne echo, und damit ohne dass das Passwort im Klartext zu sehen ist, sieht wie folgt aus:<\/p>\n<pre class=\"lang:default decode:true \"># \/lib\/cryptsetup\/askpass \"passphrase: \" &gt; \/lib\/cryptsetup\/passfifo\r\npassphrase:<\/pre>\n<p>Bei passphrase muss schlie\u00dflich das Passwort eingegeben werden.<\/p>\n<p>Dann werden die Devices entsperrt und der Server setzt den Bootvorgang fort. L\u00e4uft nun am Server ein weiterer, &#8220;herk\u00f6mmlicher&#8221; SSH-Server (meist openssh), kann man sich auf diesen wie gehabt verbinden. Ist bei der Installation von Dropbear bereits ein openssh-Server am laufen, beendet sich Dropbear automatisch nachdem der Server vollst\u00e4ndig gebootet hat. Die Befehlssequenz kann dann auch in einem Schritt vollzogen werden:<\/p>\n<pre class=\"lang:default decode:true \">ssh -i .ssh\/dropbear\/id_rsa_initram -o UserKnownHostsFile=.ssh\/dropbear\/known_hosts root@192.168.56.101 \"echo -ne \\\"encryptiontest\\\" &gt; \/lib\/cryptsetup\/passfifo\"<\/pre>\n<p>Die Verwendung eines eigenen &#8220;Known Hosts&#8221;-File empfiehlt sich insofern, da Dropbear einen anderen Fingerprint als der openssh-Server verwendet. Werden f\u00fcr Dropbear und openssh keine unterschiedlichen &#8220;Known-Host&#8221;-Files verwendet, kommt es zur folgenden Warnung:<\/p>\n<pre class=\"lang:default decode:true \">ssh -i .ssh\/dropbear\/id_rsa_initram root@192.168.56.101 \"echo -ne \\\"encryptiontest\\\" &gt; \/lib\/cryptsetup\/passfifo\"\r\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\n@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @\r\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\r\nIT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!<\/pre>\n<p>Diese Warnung hat ihren Ursprung darin, dass nun das Standard-File &#8220;~\/.ssh\/known_hosts&#8221; verwendet wird, in dem sich der Fingerprint des openssh-Servers befindet. Es ist daher empfehlenswert f\u00fcr den Dropbear- und den openssh-Server verschiedene &#8220;Known Host&#8221;-Dateien zu verwenden.<br \/>\nWeiterf\u00fchrende Informationen<\/p>\n<hr \/>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-2821 alignleft\" src=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-content\/uploads\/2014\/08\/CC_BY_NC_SA.png\" alt=\"CC_BY_NC_SA\" width=\"65\" height=\"23\" \/><span style=\"font-size: 10pt;\">by Speefak <span style=\"font-size: 8pt;\">| <a href=\"http:\/\/www.thomas-krenn.com\/de\/wiki\/Voll-verschl%C3%BCsseltes-System_via_SSH_freischalten\" target=\"_blank\" rel=\"noopener\">www.thomas-krenn.com<\/a> |<\/span><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Der Vorteil bei der Verwendung von LVMs ist, dass f\u00fcr die Entsperrung aller Logical Volumes nur mehr ein Passwort eingegeben werden muss. Dadurch wird das Crypto-Device, in dem sich die Volume Group und die Logical Volumes f\u00fcr z.B. &#8220;\/root&#8221; und &#8220;\/home&#8221; befinden, entsperrt. F\u00fcr das erfolgreiche Booten wird nur mehr eine unverschl\u00fcsselte boot-Partition ben\u00f6tigt. Beim [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,10,50,43],"tags":[],"class_list":["post-5282","post","type-post","status-publish","format-standard","hentry","category-anleitungen","category-debian","category-encryption","category-sicherheit"],"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"speefak","author_link":"https:\/\/speefak.spdns.de\/oss_lifestyle\/author\/speefak_oss\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/anleitungen\/\" rel=\"category tag\">Anleitungen<\/a> <a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/debian\/\" rel=\"category tag\">Debian<\/a> <a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/encryption\/\" rel=\"category tag\">Encryption<\/a> <a href=\"https:\/\/speefak.spdns.de\/oss_lifestyle\/category\/sicherheit\/\" rel=\"category tag\">Sicherheit<\/a>","rttpg_excerpt":"Der Vorteil bei der Verwendung von LVMs ist, dass f\u00fcr die Entsperrung aller Logical Volumes nur mehr ein Passwort eingegeben werden muss. Dadurch wird das Crypto-Device, in dem sich die Volume Group und die Logical Volumes f\u00fcr z.B. &#8220;\/root&#8221; und &#8220;\/home&#8221; befinden, entsperrt. F\u00fcr das erfolgreiche Booten wird nur mehr eine unverschl\u00fcsselte boot-Partition ben\u00f6tigt. Beim&hellip;","_links":{"self":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts\/5282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/comments?post=5282"}],"version-history":[{"count":0,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/posts\/5282\/revisions"}],"wp:attachment":[{"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/media?parent=5282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/categories?post=5282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/speefak.spdns.de\/oss_lifestyle\/wp-json\/wp\/v2\/tags?post=5282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}