Tech Blog.

Thoughts, stories, ideas.

Ouvrir des périphériques cryptés LUKS à distance via drop SSH

21. August 2017

Parfois, il serait pratique si vous n’étiez pas assis dans le bureau, la caisse était bien garée pour économiser l’électricité et vous pourriez simplement dire à un collègue de démarrer l’ordinateur. On pourrait alors utiliser la merveilleuse technologie appelée SSH. Malheureusement, le disque dur crypté est un emmerdeur : pour annuler le cryptage, quelqu’un doit taper la phrase de passe.

Le serveur SSH légerDropbear, que vous pouvez installer dans initramfs, offre une solution à ce problème. De plus, assurez-vous que l’interface réseau est démarrée et spécifiez la partition chiffrée.

Sur mon Arch Linux, les étapes suivantes étaient nécessaires :

Installez Dropbear et configurez-le en tapant la phrase de passe.

Vous devez d’abord installer les paquetsmkinitcpio-utils etmkinitcpio-dropbear de l’AUR :

$ yaourt -S mkinitcpio-dropbear mkinitcpio-utils

Ils installent les crochets nécessaires pour les initramfs. Dans l’annexe se trouve un lien vers un exemple de la façon dont un tel crochet peut être réalisé dans Ubuntu.

Ensuite, la clé publique avec laquelle vous voulez vous connecter au système doit être stockée dans le fichier /etc/dropbear/root_key. Le fichier est structuré comme les fichiers bien connusauthorized_key sous ~/.ssh/, plusieurs clés peuvent donc être ajoutées. Mais à chaque nouvelle clé, l’initfamfs doit être reconstruit !

préparer mkinitcpio.conf

Ensuite, ajustez le fichier /etc/mkinitcpio.conf. D’une part, le module noyau pour la puce réseau doit être ajouté sous MODULES="". Pour connaître le module, `lspci’ peut être utilisé :

$ lspci -k

Sous les périphériques respectifs, vous trouverez le module chargé dans la ligne Modules du noyau. D’autre part, netconf',dropbearetencryptssh**avant**filesystems` doivent être ajoutés aux crochets.

Tout ça ressemble à ça :

[..]
MODULES="r8169"
HOOKS="base udev autodetect modconf block netconf dropbear encryptssh filesystems keyboard fsck"

Les initramfs doivent ensuite être reconstruits :

$ mkinitcpio -p linux

Configurer Bootloader

Dans le bootloader, des options doivent être ajoutées à la ligne du noyau du noyau Linux. Dans mon cas (systemd-boot), cela se trouve sur /boot/loader/entries/arch.conf. Avec GRUB, cela peut être fait en utilisant les variables du fichier `/etc/default/grub’ (voirArch Linux Wiki).

Une option est cryptdevice, qui spécifie quel périphérique (partition) doit être décrypté. Il est préférable de spécifier l’UUID (ls -l /dev/disk/by-uuuid/) ici, au format UUID=<effektive-uuid> et non le nom du périphérique bloc sous /dev, car cela peut changer.

L’autre option indique au noyau comment configurer le réseau. Cette option est simplement appelée ip et peut être configurée via DHCP ou manuellement. Pour utiliser DHCP, vous pouvez simplement spécifier ip=:::::::eth0:dhcp. Dans mon cas, cependant, je voulais une configuration statique pour savoir où me connecter via SSH. Le format est le suivant: ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip> (voir aussi kernel documentation), mais ce n’était pas totalement vrai pour moi. J’ai dû sauter le dernier côlon pour que ça marche. Notez également que’ nécessite le nom du noyau (ethX) et non le nom Udev :

dmesg | grep eno1
16.593465] r8169 0000:03:00.0 eno1: renamed from ==eth0==

Le résultat ressemble à ceci:

title    Arch Linux
linux    /vmlinuz-linux
initrd    /initramfs-linux.img
options   ip=10.9.4.70::10.9.1.1:255.255.0.0:huckfinn:eth0:none: cryptdevice=UUID=9c53e8b6-07bf-4e9d-bb3e-feaf55c02f41 root=/dev/sda2 rw

Crypttab

J’avais précédemment spécifié ma partition cryptée pour le décryptage dans le /etc/crypttab dans mon processus de démarrage. Puisque la partition est déjà définie avec le paramètrecryptdevice, la configuration crypttab n’est plus nécessaire. L’entrée doit y être supprimée car la partition est déjà ouverte. Vous ne pouvez plus utiliser /dev/mapper/XYZ dans fstab, mais si vous utilisez l’UUID, il fonctionne bien.

Il est maintenant temps de vous armer avec la clé USB Live-Boot et de redémarrer votre ordinateur. Idéalement, il devrait ressembler à ceci :

Si vous avez fait une erreur dans la configuration IP, c’est moins grave : le message d’erreur devrait être très révélateur, vous pouvez simplement continuer à démarrer et faire l’ajustement. Cependant, si le paramètre cryptdevice est incorrect, vous vous trouvez dans un état dans lequel vous ne pouvez pas continuer. Ensuite, vous devez démarrer le système actif, monter la partition où se trouve la configuration et corriger le paramètre.

Autres liens