web-dev-qa-db-fra.com

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

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

C'était aussi simple que:

  1. Installation du système chiffré à l'aide du disque du programme d'installation secondaire Ubuntu ou du disque du programme d'installation Debian normal et choix de chiffrer le système.
  2. Une fois le système installé, ajoutez les packages dropbear et busybox.
  3. Mise à jour du fichier initram-fs pour autoriser votre clé ssh.

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

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

La machine serait alors déverrouiller et démarrer le système crypté.

En suivant exactement les mêmes étapes sur Ubuntu 11.10, je peux ssh sur la machine, mais /lib/cryptsetup/passfifo n’existe pas.

Il semble n'y avoir aucun moyen de déverrouiller le système sur ssh. Je ne sais pas où chercher pour savoir si cette fonctionnalité a été modifiée ou si elle a été supprimée.

8
Jeff

Je viens de faire quelques recherches sur Google et il semble que Plymouth pose problème. Si plymouth est là, au démarrage, cryptsetup vous demandera le mot de passe pour plymouth, ce qui signifie qu'il n'utilise pas passfifo.

La meilleure solution de contournement semble consister à insérer le script suivant dans le répertoire /usr/share/initramfs-tools/hooks/. Une fois que vous l'avez placé, vous pouvez chmod +x et vous devez alors update-initramfs -u. Vous devriez alors pouvoir utiliser la commande unlock (créée par le script ci-dessous).

Cela suppose que vous utilisiez une clé ssh pour vous connecter. Si vous voulez utiliser un mot de passe, vous devez mettre SSHUSERPASS=<username> dans /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 le site ubuntuforums , ce bug du tableau de bord et le post allemand, j'ai piqué le plus gros de cela .

4
Hamish Downer

jusqu’à ce que ce bogue soit résolu, vous pouvez essayer de tuer d’abord plymouth. Malheureusement, il n’existe pas de moyen facile de déterminer le PID de plymouthd. Mais plymouth sait comment s’arrêter :-) Donc, ce qui suit devrait suffire.

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

1
Frederick Nord