Wie kann man ein vollständig verschlüsseltes Ubuntu 11.10-System beim Booten über SSH entsperren?

8

In früheren Versionen von Ubuntu und aktuellen Versionen von Debian können Sie ein vollständig verschlüsseltes System (mit dmcrypt und LUKS) beim Booten über SSH entsperren.

Es war so einfach wie:

  1. Installieren des verschlüsselten Systems mit der alternativen Ubuntu-Installationsdiskette oder der normalen Debian-Installationsdiskette und Verschlüsseln des Systems.
  2. Fügen Sie nach der Installation des Systems die Dropbear- und Busybox-Pakete hinzu.
  3. Aktualisieren der initram-fs, um Ihren SSH-Schlüssel zu autorisieren.

Beim Booten müssen Sie nur auf den Computer zugreifen und Folgendes tun:

echo -ne "keyphrase" > /lib/cryptsetup/passfifo

Der Computer würde dann das verschlüsselte System entsperren und starten.

Mit genau den gleichen Schritten unter Ubuntu 11.10 kann ich auf den Computer ssh, aber /lib/cryptsetup/passfifonicht vorhanden.

Es scheint keine Möglichkeit zu geben, das System über ssh zu entsperren. Ich bin nicht sicher, wo ich nachsehen soll, ob sich diese Funktionalität geändert hat oder ob sie entfernt wurde.

Jeff
quelle
Können Sie dies auf einem System tun, das auf die alte Art funktioniert hat dpkg -S /lib/cryptsetup/passfifo? Ich kann auf packages.ubuntu.com keine Pakete für Natty oder Maverick finden, die diese Datei enthalten.
Maco

Antworten:

4

Ich habe gerade gegoogelt und es scheint, dass Plymouth im Weg ist. Wenn Plymouth vorhanden ist, fragt Cryptsetup beim Booten Plymouth nach dem Passwort und das bedeutet, dass kein Passfifo verwendet wird.

Die beste Problemumgehung scheint darin zu bestehen, das folgende Skript in das Verzeichnis zu stellen. /usr/share/initramfs-tools/hooks/Nachdem Sie es dort abgelegt haben, können Sie es chmod +xund müssen es dann update-initramfs -u. Sie sollten dann in der Lage sein, den unlockBefehl zu verwenden (der vom folgenden Skript erstellt wird).

Dies setzt voraus, dass Sie einen SSH-Schlüssel verwenden, um sich anzumelden. Wenn Sie ein Passwort verwenden möchten , dann müssen Sie setzen SSHUSERPASS=<username>in/etc/initramfs-tools/initramfs.conf

#!/bin/sh

PREREQ="dropbear"

prereqs() {
    echo "$PREREQ"
}

case "$1" in
    prereqs)
        prereqs
        exit 0
    ;;
esac

. "${CONFDIR}/initramfs.conf"
. /usr/share/initramfs-tools/hook-functions

if [ "${DROPBEAR}" != "n" ] && [ -r "/etc/crypttab" ] ; then
    cat > "${DESTDIR}/bin/unlock" <<-EOF
        #!/bin/sh
        if PATH=/lib/unlock:/bin:/sbin /scripts/local-top/cryptroot
        then
            /sbin/pkill cryptroot
            /sbin/pkill -f "plymouth ask-for-pass"
            /sbin/pkill cryptsetup
            exit 0
        fi
        exit 1
    EOF
    chmod 755 "${DESTDIR}/bin/unlock"

    mkdir -p "${DESTDIR}/lib/unlock"
    cat > "${DESTDIR}/lib/unlock/plymouth" <<-EOF
        #!/bin/sh
        [ "\$1" == "--ping" ] && exit 1
        /bin/plymouth "\$@"
    EOF
    chmod 755 "${DESTDIR}/lib/unlock/plymouth"

    # Enable password login
    if [ -n "$SSHUSERPASS" ]
    then
        sed -n "s/^${SSHUSERPASS}:/root:/p" /etc/shadow > "${DESTDIR}/etc/shadow"
        chmod 640 "${DESTDIR}/etc/shadow"
    fi
fi

Sie können mehr in diesem Beitrag über die Ubuntuforums , diesen Launchpad-Bug und den deutschen Beitrag lesen , aus dem ich das meiste geklaut habe .

Hamish Downer
quelle
1

Bis dieser Fehler behoben ist, können Sie versuchen, zuerst Plymouth zu töten. Leider gibt es keine einfache Möglichkeit, die PID von Plymouthd zu bestimmen. Aber Plymouth weiß, wie man sich selbst beendet :-) Das Folgende sollte also ausreichen.

plymouth --quit; echo -ne "keyphrase" > /lib/cryptsetup/passfifo

Frederick Nord
quelle