Comment déverrouiller un système Ubuntu 11.10 entièrement crypté via SSH au démarrage?

8

Dans les versions précédentes d'Ubuntu et les versions actuelles de Debian, vous pouvez déverrouiller un système entièrement chiffré (en utilisant dmcrypt et LUKS) au démarrage via SSH.

C'était aussi simple que:

  1. Installer le système chiffré à l'aide du disque d'installation alternatif Ubuntu ou du disque d'installation Debian normal et choisir de chiffrer le système.
  2. Une fois le système installé, ajout des packages dropbear et busybox.
  3. Mise à jour de l'initram-fs pour autoriser votre clé ssh.

Au démarrage, il vous suffit de lancer ssh sur la machine et de faire:

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

La machine déverrouillerait alors et démarrerait le système crypté.

En utilisant exactement les mêmes étapes sur Ubuntu 11.10, je peux accéder à la machine, mais /lib/cryptsetup/passfifon'existe pas.

Il semble qu'il n'y ait aucun moyen de déverrouiller le système via ssh. Je ne sais pas où chercher pour voir si cette fonctionnalité a changé ou si elle a été supprimée.

Jeff
la source
Sur un système qui fonctionnait à l'ancienne, pouvez-vous le faire dpkg -S /lib/cryptsetup/passfifo? Je ne trouve aucun package sur packages.ubuntu.com pour Natty ou Maverick contenant ce fichier.
maco

Réponses:

4

Je viens de faire une recherche sur Google et il semble que Plymouth se mette en travers du chemin. Si plymouth est là, alors au démarrage, cryptsetup demandera à plymouth le mot de passe et cela signifie qu'il n'utilise pas passfifo.

La meilleure solution de contournement semble être de mettre le script suivant dans le répertoire Une /usr/share/initramfs-tools/hooks/fois que vous l'avez placé là, vous pouvez chmod +xet vous devez le faire update-initramfs -u. Vous devriez alors pouvoir utiliser la unlockcommande (qui est créée par le script ci-dessous).

Pour cela, vous devez utiliser une clé ssh pour vous connecter. Si vous souhaitez utiliser un mot de passe, vous devez mettre SSHUSERPASS=<username>en/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

Vous pouvez en lire plus dans ce post sur les ubuntuforums , ce bug du tableau de bord et le post allemand d'où j'ai piqué la majeure partie .

Hamish Downer
la source
1

jusqu'à ce que ce bug soit résolu, vous pouvez d'abord essayer de tuer plymouth. Malheureusement, il n'y a pas de moyen facile de déterminer le PID de plymouthd. Mais plymouth sait se quitter :-) Donc, ce qui suit devrait être suffisant.

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

Frederick Nord
la source