Comment déverrouiller à distance via SSH, un volume « root » « / » encrypté LUKS dans LinuxMint?

Si votre volume « root » « / » est encrypté avec LUKS, vous êtes invité à chaque démarrage de votre ordinateur à entrer le mot de passe afin de le déverouiller. Ce qui est très embêttant de cette mesure de sécurité, est que vous devez être physiquement sur les lieux avec votre clavier pour entrer votre mot de passe. Donc lorsque vous êtes connecté à distance, et que vous devez redémarrer votre ordinateur, vous devez avoir un esclave à l’emplacement de l’ordinateur pour qu’il entre le mot de passe lors du redémarrage.

Ceci a été testé sur LinuxMint 17.1, basé sur Ubuntu 14.04 LTS La plupart de l’information que j’ai trouvé ici et là sur Internet concernant ce qui suit, datait de 2008 à 2014, mais AUCUN des articles ne fonctionnait. Ce qui suit fonctionne en date du 30 janvier 2015.

Dans cet article, je vais vous expliquer comment faire en sorte que lors du démarrage de votre ordinateur, un serveur SSH se lance, afin que vous puissiez vous y connecter et dévérouiller à distance votre volume « root » « / » pour que le système d’exploitation puisse démarrer.

Pour que cela fonctionne, votre ordinateur doit avoir une adresse IP statique. Ce qui suit prend pour acquis que vous avez une adresse IP statique assignée automatiquement via DHCP à votre machine LinuxMint. Si votre serveur DHCP(probablement votre routeur), ne peut pas assigner des adresses IP statiques en fonction de l’adresse MAC de votre carte réseau, vous aurez besoin de modifier le bootloader (chargeur d’armorçage; crédit Vincent Castonguay-Drouin-Baguette) GRUB pour que ce dernier configure l’adresse IP statique. L’article qui suit ne prend pas en charge l’édition de GRUB, car ça me donne des maux de tête chaque fois que je joue là dedans.

Installer les applications nécessaires

  1. sudo apt-get update
  2. sudo apt-get install busybox dropbear

Dropbear est un petit serveur SSH qui se lance sur votre partition d’initialisation en mémoire vive. Ce dernier fonctionne complètement indépendement de OpenSSH, donc vous n’avez en aucun cas à changer la configuration de votre serveur OpenSSH actuel. Le serveur SSH Dropbear ne sera en fonction que dans le volume d’initialisation se trouvant en mémoire vive lors du démarrage de l’ordinateur, une fois le système d’exploitation lancé ce volume n’existe plus.

Lors de l’installation de Dropbear, une clef public et une clef privée sont générées pour la connexion à SSH. Ces deux clefs se trouvent à l’emplacement « /etc/initramfs-tools/root/.ssh/ » .

Nous allons devoir aller chercher la clef privée et nous en faire une copie sur notre ordinateur client depuis lequel nous nous connecterons à distance. Le fichier que nous voulons copier est /etc/initramfs-tools/root/.ssh/id_rsa .

Transférer la clef privée

Les tutoriels que j’ai vu sur Internet utilisaient tous la commande « scp » pour copier par SSH le fichier depuis le serveur sur leur client. Je n’ai jamais été en mesure de réussir avec cette commande, tant sur LinuxMint, que sur Windows 7 avec PuTTY. Je vous laisse donc choisir votre méthode de transfer de fichier. Dans mon cas, j’ai copié le fichier id_rsa dans un dossier partagé avec samba sur mon serveur LinuxMint, puis j’ai été le chercher ainsi.

Je vous laisse néanmoins la commande pour copier le fichier vers un autre emplacement de votre serveur.

sudo cp /etc/initramfs-tools/root/.ssh/id_rsa /nouvel/emplacement/

Cette commande copiera et collera le fichier vers votre dossier de choix.

Sur votre ordinateur client, vous devez mettre le fichier à l’emplacement suivant.

Sur Linux

/root/.ssh/

Commande pour copier et coller votre clef privée dans ce dossier:
sudo cp /emplacement/de/la/clef/id_rsa /root/.ssh/

Sur Windows avec PuTTY

N’importe où.

Configuration du client SSH

Sur Linux:

Nous allons créer un fichier de configuration.
sudo gedit /root/.ssh/config

La raison pour laquelle nous devons créer ce fichier dans le dossier .ssh/ de « root », est parce que Dropbear n’accepte que l’utilisateur « root », et qu’il n’accepte que l’authentification par clef privée RSA.

Je tiens à vous réconforter tout de suite, tout comme Dropbear est indépendant de OpenSSH, il est également indépendant de la configuration du compte utilisateur « root » du système d’exploitation. En aucun cas vous n’avez à activer cet utilisateur dans Linux, ou de l’autoriser dans OpenSSH pour qu’il se connecte. Dropbear fonctionne indépendement et n’accepte que l’utilisateur « root » avec la clef privée RSA comme authentification.

Donc si on revient à nos moutons, nous étions en train de créer le fichier /root/.ssh/config .

Mettez y le texte suivant, en y changeant bien évidement l’adresse IP pour l’adresse IP de votre serveur LinuxMint.


Host 192.168.0.100
HostName 192.168.0.100
User root
IdentityFile ~/.ssh/id_rsa

La configuraion du client est terminée pour Linux.

Sur Windows avec PuTTY:

PuTTY n’accepte pas les clefs directement de Linux, il faudra donc dans un premier temps, convertir notre clef en format PuTTY. Pour ce faire, vous aurez besoin de puttygen.exe , il est disponible sur le site de PuTTY, ou, si vous avez installé PuTTY, il est déjà dans votre dossier C:\Program Files (x86)\PuTTY\ .

  1. Dans puttygen.exe, cliquez sur « Conversions » dans le menu, puis sur « Import key ».
  2. Sélectionnez le fichier id_rsa que vous avez transféré depuis votre serveur Linux.
  3. Cliquez sur le bouton « Save private key »

Maintenant que nous avons une clef privée en langage que PuTTY peut comprendre, nous pouvons configurer PuTTY.

  1. Dans PuTTY, dans le menu de gauche, sélectionnez Connection -> SSH -> Auth.
  2. Cliquez sur le bouton « Browse » puis sélectionnez le fichier nouvellement créé par puttygen.exe.

Vous venez de configurer PuTTY pour utiliser cette clef privée comme moyen d’authentification. Le reste des paramètres sont les mêmes que vous utilisez d’habitude.

Création d’un script pour déverrouiller le volume

De retour sur le serveur, vous allez créer un script qui nous permettra de vous demander le mot de passe dans SSH pour déverrouiller votre volume « root » LUKS.

Le script suivant, ne désactive pas le clavier physique du serveur, il vous est donc toujours possible de déverrouiller physiquement sur place le serveur, contrairement à d’autres scripts.

  1. sudo gedit /usr/share/initramfs-tools/hooks/crypt_unlock.sh
  2. Copiez-y le texte suivant
    #!/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
    kill \`ps | grep cryptroot | grep -v « grep » | awk ‘{print \$1}’\`
    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 »

    echo To unlock root-partition run « unlock » >> ${DESTDIR}/etc/motd

    fi

  3. sudo chmod +x /usr/share/initramfs-tools/hooks/crypt_unlock.sh
  4. sudo update-initramfs -u

Maintenant redémarrez votre serveur et laissez-le poiroter en attente du mot de passe pour déverrouiller le volume « root » « / ».

Comment se connecter et déverrouiller le volume LUKS root

Sur votre ordinateur client…

Sur Linux:

    1. sudo su
Ceci est nécessaire puisque seul l’utilisateur « root » peut se connecter à Dropbear, vous devez donc exécuter la prochaine commande en tant que l’utilisateur « root ».
    1. ssh 192.168.0.100
Remplacez l’adresse IP par celle de votre serveur. ceci doit être la même qui est inscrite dans le fichier /root/.ssh/config que nous avons créé plus tôt. Ceci chargera automatiquement ce fichier de configuration et donc utilisera la clef privée pour l’authentification.
  1. unlock
  2. Entrez le mot de passe du volume LUKS.

Et voilà, votre lecteur est déverrouiller et le système d’exploitation se charge. Tapez « exit » pour fermer votre section SSH Dropbear, puis « exit » une seconde fois pour sortir du mode « root » dans Terminal. Vous pouvez maintenant vous connecter normalement avec votre utilisateur à SSH utilisant vos paramètres habituels.

Sur Windows avec PuTTY:

  1. Après avoir sélectionné la clef privée comme nous avons fait plus haut, entrez votre adresse IP et cliquez sur « Open » comme vous le faite normalement.
  2. Utilisez le nom d’utilisation « root » à la demande « Login ». Vous serez automatiquement authentifié grâce à la clef privée.
  3. unlock
  4. Entrez le mot de passe du volume LUKS.

Et voilà, votre lecteur est déverrouiller et le système d’exploitation se charge. Tapez « exit » pour fermer votre section SSH Dropbear. Pour vous connecter à SSH de façon normale, enlevé la clef privée de la configuration de PuTTY, puis utilisez votre nom d’utilisateur plutôt que « root » à la demande « Login: ».

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *