Monter automatiquement un volume chiffré avec LUKS

Je me suis récemment refait une petite configuration sous Linux pour pouvoir travailler et jouer de temps en temps de manière confortable. Rien de bien exceptionnel et j’ai en plus trouvé encore une fois une carte graphique d’occasion pas trop chère pour pouvoir faire tourner des modèles d’intelligence artificielle en local.

Pour faire les choses bien, j’ai voulu chiffrer mon disque principal qui héberge l’OS avec LUKS. Jusqu’ici, rien de bien exceptionnel, vous allez me dire. Sauf qu’il s’agit d’un petit SSD que j’ai récupéré et qui ne sert qu’à ca. Ce SSD n’était pas très usé donc plutôt que de le jeter ou l’abandonner, j’ai décidé de le réutiliser dans ce nouveau PC. Sauf que j’ai pas mal de données à manipuler et donc à stocker. J’ai alors alors ajouté plusieurs autre SSD de bonne capacité.

Oui, mais voilà, mes données importantes et précieuses seront justement stockée dans ces SSD supplémentaires et j’aimerais donc les protéger eux aussi. Pour cela rien de plus simple, il suffit de chiffrer aussi ces volumes avec LUKS. Le problème, c’est qu’à chaque redémarrage, il faut retaper le mot de passe pour les monter et exploiter leur contenu pour les utiliser normalement. J’ai des mots de passe assez sécurisés et c’était plutôt contraignant de les retaper à chaque fois. D’autant plus quand il faut remonter plusieurs volumes …

C’est quoi LUKS et pourquoi chiffrer ses SSD et disques durs

Avant d’aller plus loin et de vous dévoiler l’astuce qui m’a permis de ne plus avoir à saisir ces fameuses phrases de passe, il me semble important de clarifier ce qu’est LUKS et pourquoi cette étape de chiffrement est, à mon sens, cruciale.

Alors, LUKS, qu’est-ce que c’est au juste ? Derrière cet acronyme se cache « Linux Unified Key Setup ». Pour faire simple, c’est une norme, une sorte de cahier des charges pour le chiffrement de disque sous Linux. Plutôt qu’un logiciel unique, c’est une spécification qui garantit que n’importe quel outil compatible pourra dialoguer avec vos disques chiffrés. C’est ce standard qui assure la portabilité et la pérennité de votre protection. Concrètement, LUKS chiffre des partitions entières, ce qu’on appelle le chiffrement de bloc. Ainsi, tout ce qui se trouve sur la partition est protégé.

Mais au fond, pourquoi s’infliger cette contrainte ? Après tout, l’ordinateur est à la maison et ne bouge pas. L’erreur classique est de penser que la sécurité s’arrête aux mots de passe de nos sessions. Imaginez un simple cambriolage : si vos disques ne sont pas chiffrés, il suffit de les démonter et de les brancher sur une autre machine pour accéder à l’intégralité de vos fichiers. Projets, photos de famille, documents administratifs… tout devient accessible en quelques minutes sans avoir besoin de la moindre compétence. Microsoft a d’ailleurs généralisé l’utilisation de BitLocker pour protéger ses utilisateurs contre le vol de données en cas de perte physique du support de stockage.

C’est précisément là que le chiffrement intégral intervient. Il protège ce que l’on appelle les « données au repos », c’est-à-dire les données telles qu’elles sont stockées physiquement sur le disque. Tant que le volume n’est pas déverrouillé avec la bonne clé, son contenu n’est qu’une suite de données illisibles et inexploitables pour quiconque y accède. Cette protection transforme vos SSD en véritables coffres-forts numériques. Même en cas de perte ou de vol de la machine, vous avez la certitude que vos données personnelles ne seront pas compromises. C’est cette tranquillité d’esprit qui justifie largement l’effort initial.

La chaîne de confiance pour déverrouiller automatiquement les SSD au démarrage

Maintenant que l’on comprend mieux l’intérêt vital de cette protection, revenons à notre problème : comment concilier cette sécurité indispensable avec le confort d’utilisation au quotidien, surtout quand on a plusieurs volumes à gérer ? La solution est en fait assez élégante et s’appuie sur le fait que notre disque système principal est déjà lui-même chiffré. C’est le socle de toute notre stratégie.

L’idée générale est de créer une chaîne de confiance. Au lieu de taper un mot de passe pour chaque disque au démarrage, nous allons taper un seul mot de passe, celui de notre disque système. Une fois ce premier coffre-fort ouvert, le système d’exploitation aura accès à des fichiers de clé spéciaux que nous allons créer. Chacun de ces fichiers agira comme une clé numérique pour déverrouiller automatiquement un de nos disques de données supplémentaires. Ces clés seront stockées en toute sécurité à l’intérieur du disque système, lui-même chiffré.

Le processus se déroulera en plusieurs étapes logiques. D’abord, nous allons chiffrer nos disques de données supplémentaires avec LUKS. Il est important de noter que cette opération est destructive : toutes les données présentes sur ces disques seront effacées. Il faut donc s’assurer qu’ils sont vides ou que leur contenu a été sauvegardé ailleurs. Ensuite, pour chaque disque nouvellement chiffré, nous générerons un fichier de clé unique, une sorte de long mot de passe aléatoire très complexe. Ce fichier sera ajouté à LUKS comme une seconde méthode d’authentification, en plus de la phrase de passe que nous aurons définie comme solution de secours.

La question qui vient immédiatement à l’esprit est bien sûr celle de la sécurité. Stocker une clé sur un disque pour en déverrouiller un autre ne crée-t-il pas une faille ? La réponse est non, grâce à notre configuration initiale. Le fichier de clé n’est pas stocké en clair sur un disque lisible par n’importe qui. Il se trouve à l’intérieur du volume système, qui est protégé par sa propre couche de chiffrement LUKS. On crée ainsi une sorte de cercle de confiance : pour accéder aux clés des disques secondaires, un attaquant devrait d’abord réussir à déverrouiller le disque principal.

Imaginons le scénario d’un vol de l’ordinateur entier alors qu’il est éteint. Le voleur, en tentant d’allumer la machine, sera immédiatement bloqué par la demande de mot de passe du disque système. Sans ce sésame, impossible de démarrer l’OS, et donc impossible d’accéder au système de fichiers où sont stockées nos précieuses clés. Celles-ci restent protégées, et les disques de données demeurent chiffrés et inaccessibles. La sécurité de l’ensemble de nos données repose donc sur la robustesse de ce premier et unique mot de passe. C’est cet équilibre parfait entre haute sécurité et confort d’utilisation que nous allons maintenant mettre en place.

Activer le montage automatique des volumes chiffrés avec LUKS

C’est cet équilibre parfait entre haute sécurité et confort d’utilisation que nous allons maintenant mettre en place. Passons à la pratique ! Le tutoriel qui suit est un guide pas à pas. Prenez le temps de bien lire les explications pour comprendre chaque commande. Pour l’exemple, nous allons travailler avec deux disques supplémentaires fictifs, /dev/sdb et /dev/sdc, mais la procédure est adaptable que vous ayez un seul ou plusieurs disques à configurer.

Avant toute chose, il est primordial d’identifier correctement les disques que vous souhaitez chiffrer. La moindre erreur pourrait entraîner une perte de données irréversible sur le mauvais disque. Ouvrez un terminal et utilisez la commande suivante pour lister vos périphériques de stockage :

lsblk -f

Repérez les disques que vous voulez chiffrer. Ils ne doivent pas avoir de point de montage (colonne MOUNTPOINT) et vous devez être certain de leur identifiant (colonne NAME, par exemple sdb, sdc ou nvme1n1). Notez également leurs UUID si une partition existe déjà.

Chiffrer les disques de données (si ce n’est pas déjà fait)

Cette étape est fondamentale si vos disques ne sont pas encore chiffrés avec LUKS. Attention, la commande suivante effacera de manière définitive toutes les données présentes sur le disque ciblé. Assurez-vous d’avoir sauvegardé tout ce qui est important.

Pour notre premier disque, /dev/sdb, nous allons le formater au standard LUKS. Le système vous demandera de confirmer en tapant YES en majuscules, puis vous devrez choisir une phrase de passe robuste. Cette phrase de passe servira de méthode de déverrouillage de secours.

sudo cryptsetup luksFormat /dev/sdb

Une fois le conteneur LUKS créé, il faut l’ouvrir pour pouvoir y créer un système de fichiers. Nous lui donnons un nom temporaire, par exemple data_sdb_temp.

sudo cryptsetup open /dev/sdb data_sdb_temp

Maintenant que le volume chiffré est ouvert et accessible via /dev/mapper/data_sdb_temp, nous pouvons y créer un système de fichiers, ext4 dans notre cas, qui est un excellent choix par défaut.

sudo mkfs.ext4 /dev/mapper/data_sdb_temp

Enfin, nous refermons le volume temporaire :

sudo cryptsetup close data_sdb_temp

Répétez scrupuleusement ces quatre commandes pour votre second disque, /dev/sdc, en adaptant les noms (data_sdc_temp). À l’issue de cette étape, vos disques de données sont chiffrés, chacun protégé par sa propre phrase de passe.

Créer le fichier de clé centralisé

C’est ici que la magie opère. Nous allons générer un fichier qui servira de clé universelle pour nos disques de données. Ce fichier sera stocké dans le répertoire /root, qui n’est accessible que par l’administrateur et qui, surtout, est situé sur notre disque système déjà chiffré.

La commande suivante crée un fichier de 2048 octets rempli de données purement aléatoires, ce qui en fait une clé cryptographiquement très sûre.

sudo dd if=/dev/urandom of=/root/luks_autounlock.key bs=512 count=4

Nous restreignons ensuite drastiquement les permissions de ce fichier pour que seul le superutilisateur (root) puisse le lire ou le modifier, ajoutant une couche de sécurité au niveau du système de fichiers.

sudo chmod 600 /root/luks_autounlock.key

Lier la clé aux disques LUKS

Maintenant que notre clé existe, nous devons « l’enregistrer » auprès de chacun de nos disques chiffrés pour qu’ils la reconnaissent comme une méthode de déverrouillage valide. Pour cela, nous allons ajouter cette clé à un nouvel emplacement (un « slot ») dans l’en-tête LUKS de chaque disque.

Pour le premier disque, /dev/sdb, la commande est la suivante. Le système vous demandera de saisir la phrase de passe que vous avez définie à l’étape 1 pour autoriser cette modification.

sudo cryptsetup luksAddKey /dev/sdb /root/luks_autounlock.key

Nous faisons exactement la même chose pour le second disque, /dev/sdc, en fournissant sa propre phrase de passe lorsque demandée.

sudo cryptsetup luksAddKey /dev/sdc1 /root/luks_autounlock.key

Désormais, chaque disque peut être déverrouillé soit avec sa phrase de passe d’origine, soit avec le contenu du fichier luks_autounlock.key.

Automatiser le déverrouillage au démarrage

Il est temps d’indiquer au système qu’au démarrage, il doit utiliser notre fichier de clé pour déverrouiller automatiquement ces deux volumes. C’est le rôle du fichier /etc/crypttab. Nous allons l’éditer avec un éditeur de texte en ligne de commande comme nano.

sudo nano /etc/crypttab

À la fin de ce fichier, ajoutez les lignes correspondant à vos disques. Il est crucial d’utiliser les UUID de vos partitions (que vous avez récupérés au tout début avec lsblk -f) pour éviter tout problème si l’ordre des disques venait à changer. Voici à quoi ressembleront les lignes avec nos UUID fictifs :

# Déverrouillage automatique des disques de données
data_sdb UUID=896cc2c6-af87-4eb1-8c8f-2c8a62b5fe3e /root/luks_autounlock.key luks,discard
data_sdc UUID=ebb05c93-3991-39bd-b637-57fa304861e9 /root/luks_autounlock.key luks,discard

Ici, data_sdb et data_sdc sont les noms que nous choisissons pour les volumes une fois déchiffrés. Ils apparaîtront dans /dev/mapper/. L’option discard est utile pour optimiser les performances et la durée de vie des SSD. Enregistrez les modifications (Ctrl+O) et quittez (Ctrl+X).

Automatiser le montage des volumes

Les disques seront maintenant déverrouillés au démarrage, mais pas encore accessibles. Il faut les « monter » dans un dossier. D’abord, créons ces dossiers qui serviront de points de montage.

sudo mkdir /media/data_sdb
sudo mkdir /media/data_sdc

Ensuite, nous allons éditer le fichier /etc/fstab, qui gère le montage des systèmes de fichiers au démarrage.

sudo nano /etc/fstab

Ajoutez à la fin les lignes suivantes pour monter nos volumes fraîchement déverrouillés dans les dossiers que nous venons de créer.

# Montage automatique des volumes de données chiffrés
/dev/mapper/data_sdb /media/data_sdb ext4 defaults,nofail 0 2
/dev/mapper/data_sdc /media/data_sdc ext4 defaults,nofail 0 2

L’option nofail est une sécurité importante : si pour une raison ou une autre un disque est débranché, le système démarrera quand même sans se bloquer. Appuyez sur Ctrl+O pour enregistrer et Ctrl+X pour quitter.

Test et redémarrage

La configuration est terminée. Pour vérifier que tout est correct, en particulier le fichier fstab, vous pouvez lancer la commande suivante qui tentera de monter tous les points de montage non encore actifs. Si aucune erreur n’apparaît, c’est bon signe.

sudo mount -a

Il ne reste plus qu’à redémarrer l’ordinateur pour admirer le résultat.

reboot

Au redémarrage, vous n’aurez qu’à saisir la phrase de passe de votre disque système principal comme d’habitude. Une fois votre session ouverte, vous pourrez constater que vos disques supplémentaires sont bien présents et accessibles dans /media/data_sdb et /media/data_sdc, sans aucune autre intervention de votre part. Le tout, en parfaite sécurité.

Laisser un commentaire