staging.inyokaproject.org

Dropbear-initramfs-Luks-entschlüsselung (Script)

Status: Ungelöst | Ubuntu-Version: Ubuntu 20.04 (Focal Fossa)
Antworten |

ubuntutest2

Anmeldungsdatum:
31. Mai 2016

Beiträge: 10

Hallo,

Ich versuche mich gerade daran meinen Ubuntu 20.04 server per SSH zu entschlüsseln. Login und entsperen über Initramfs mit SSH Keys und Tastatureingabe funktioniert super, anschließend bootet der Server. Leider scheitert es aber bei der automatischen Passwortübergabe per sh script. Das Passwort ist aber 100% richtig.

Ich bin nach dieser Anleitung vorgegangen: https://www.thomas-krenn.com/de/wiki/Voll-verschlüsseltes-System_via_SSH_freischalten Unter dem Punkt Entsperren des Crypto-Devices. Soll man in der Datei /usr/share/initramfs-tools/scripts/local-top/cryptroot ein paar zeilen ändern, diese sind bei mir garnicht vorhanden. In der Anleitung steht nach Zeile 289. Meine ganze datei hat nur 260 Zeilen.

Die Datei

lib/cryptsetup/passfifo

ist auf dem Server ebenfalls garnicht vorhanden, wird also von diesem Script immer wieder neu erstellt (beim einlogen)

Ich bin mir nicht ganz sicher ob das Passwort schlussendlich richtig übergeben wird. Ich habe alle möglichen Variation ausprobiert. Scheinbar funktioniert es nur mit der unten aufgefürten Methode. Da ich hier wenigstens eine Rückmeldung vom Cryptsetup bekomme.

root@OpenS:~# ssh 192.168.1.240 'sh -s' < /root/.ssh/Server-pass.sh
Please unlock disk sda3_crypt
cryptsetup: cryptsetup failed, bad password or options?

Das Script mit allen möglichen versuchen meinerseits: Server-pass.sh

#!/bin/sh

# Passwort übergabe
Pass=`cat /root/passwort.txt`

Cryptsetup scheint zu hängen, keine Rückmeldung muss per STRG+C abgebrochen werden
# ssh 192.168.1.240 -t "echo -n \"$Pass\" > /lib/cryptsetup/passfifo"
# ssh 192.168.1.240 "echo -ne '$Pass' > /lib/cryptsetup/passfifo"
# ssh 192.168.1.240 "echo -n '$Pass' > /lib/cryptsetup/passfifo"
# echo -ne \"$Pass\" > /lib/cryptsetup/passfifo
# echo -ne "$Pass" > test
# plymouth --quit; echo -n "$Pass" > /lib/cryptsetup/passfifo

# failed mit Rückmeldung
echo -n "$Pass" > /lib/cryptsetup/passfifo

Womöglich könnte es auch Rechte-Probleme geben da ich am Cleint (Openwrt-Router) als root den unten aufgeführten SSH Befehl ausführe.

Bearbeitet von kB:

Link auf externe Seite funktionsfähig gemacht. Bitte benutze zukünftig die Vorschau und teste insbesondere Links vor Veröffentlichung! Danke.

frostschutz

Avatar von frostschutz

Anmeldungsdatum:
18. November 2010

Beiträge: 7529

Ich habe das selbst nie so eingerichtet von daher kann ich da keine konkrete Hilfestellung geben, aber...

Dein ssh Befehl will ja ein Script remote ausführen, also die server.pass.sh wird auf dem Server selbst ausgeführt.

D.h. alles was in der sh drinsteht (das cat /root/passwort.txt) das wäre dann eine Datei die schon auf dem Server vorhanden sein müsste.

Aber wenn der Server schon das Passwort in einer passwort.txt hätte dann würde ja auch das Remote Unlocking über SSH gar keinen Sinn machen.

Also mein Eindruck ist daß hier zwei verschiedene Ansätze miteinander vermischt worden sind. Ich sehe das ssh mit sh -s auch auf der verlinkten Seite nirgends.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 7816

ubuntutest2 schrieb:

[…] ein paar zeilen ändern, diese sind bei mir garnicht vorhanden.

Das mag daran liegen, dass die von Dir verlinkte Anleitung für Ubuntu Server 14.04 geschrieben wurde. Sie ist also im Jahre 2021 hoffnungslos veraltet und auch wenn sie nicht veraltet wäre, darf man nicht erwarten, dass sie ohne Änderungen für eine andere Ubuntu-Version gelten könnte.

Was sagt denn Thomas Krenn dazu?

klinge

Avatar von klinge

Anmeldungsdatum:
17. Februar 2010

Beiträge: 404

vor einigen Jahren hab ich mich auch mal damit abgemüht. Die Anleitung, die du verwendest hat auch bei mir nicht zum Ziel geführt.

Wirklich genug verstehe ich davon nicht, ich kann dir deshalb nicht sagen, was nicht funktioniert. Was ich bieten kann, ist eine Anleitung, die ich mir geschrieben hab, die auch unter 20.04 noch funktioniert.

Auf dem Server

Zuerst muss dropbear installiert werden. Die Warnung bezüglich "invalid authorized_keys file" kann ignoriert werden.

sudo apt-get --assume-yes install dropbear-initramfs

Dann muss die Datei /etc/dropbear-initramfs/config mit root-Rechten bearbeitet werden. In der Zeile DROPBEAR_OPTIONS muss die Auskommentierung # entfernt werden und die folgenden Optionen eingetragen werden. DROPBEAR_OPTIONS="-p 4748 -s -j -k -I 60"

Auf dem Client

Muss ein SSH-Schlüsselpaar erzeugt werden und der Public Key auf dem Server abgelegt werden. Mit dem Befehl ssh-keygen kann ein Schlüsselpaar erzeugt werden und mit

ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

auf den Server kopiert werden. Die Datei /.ssh/id_rsa.pub kann anschliessend auf dem Klient gelöscht werden.

Auf dem Server

Der Inhalt der Datei /.ssh/authorized_keys oder die ganze Datei muss mit Root-Rechten in die Datei /etc/dropbear-initramfs/authorized_keys kopiert (copy & paste) werden. Damit die Änderungen in Dropbear aufgenommen werden, muss dieser aktualisiert werden.

sudo update-initramfs -u

Nach einem Neustart sollte man sich eigentlich vom Client aus einloggen können.

Auf dem Client

Eine Verbindung zum Server herstellen:

ssh -i ~/.ssh/id_rsa root@server -p 4748

mit dem Befehl

cryptroot-unlock

und anschliessend dem Passwort kann das System entsperrt werden.

tom1900G

Anmeldungsdatum:
3. Januar 2023

Beiträge: 1

An dem Thema bin ich auch seit einiger Zeit dran. Das funktioniert schon alles so, der Punkt der aber immer noch offen ist: wie bekomme ich das hin, ohne an der Console das Passwort eintippen zu müssen?

Mein Szenario ist, ich habe einen Server (S01) mit Luks Verschlüsselung, und wenn dieser in Betrieb ist, sollen sich alle weiteren Server (S02, S03, ...) die Authentifizierung bei diesem Server holen, der bereits entsperrt ist. Ich weiß ja, wann ich einen Reboot (am S02, S03 ...) anstosse, und könnte dann veranlassen, dass der S01 permanent (für 180 Sekunden beispielsweise) einen

1
ssh -i ~/.ssh/meinSchluessel_rsa root@192.168.1.15 -p 2222 "echo -ne \"meinTollesPassword\" > /lib/cryptsetup/passfifo" 

sendet.

Wie bekommt man das hin?

klinge

Avatar von klinge

Anmeldungsdatum:
17. Februar 2010

Beiträge: 404

mehr als eine Intuition habe ich dazu nicht, recherchieren und ausprobieren musst du selber: Ich glaub nicht, dass das ein Anwendungsfall für Dropbear ist. Ich würde eher in die Richtung "Keyfile auf Netzwerkgerät" suchen (luks keyfile on network device liefert jedenfalls vielversprechende Hinweise).

Antworten |