Wiki Les geekeries de rungis

Monter automatiquement une partition chiffrée

Dernière mise à jour : 05/12/2023 à 10h58
Table des matières Bonjour, aujourd'hui, un article un peu spécifique sur une procédure que j'ai du réaliser et qui m'a demandé pas mal de tests en machine virtuelle avant d'y arriver...
Voici le contexte. Sur mon ordinateur portable, j'ai installé fedora avec du LVM crypté et j'ai donc (mauvais choix peut-être) tout le volume physique qui est crypté et qui contient mon volume group et deux volumes logiques (root et home).

Pour des questions de place insuffisante, j'ai souhaité ajouter un disque dur sur lequel je ne mettrai que home et le disque inital ne contiendrai que root.
Autre critère pour moi, je ne souhaite pas taper plusieurs mots de passe...

Et bien c'est parti !

Montage automatique de la partition initialement cryptée



Le principe ici est d'utiliser dracut. Habituellement, on va chercher le fichier de clé soit sur une clé usb branchée soit sur une autre partition et on l'indique dans le fstab. Ici cela ne fonctionne pas du fait que la partition qui héberge root est cryptée.
Pour cela, on va utiliser une clé que nous allons mettre dans /boot de façon à ce qu'elle soit accessible.
Je vous renvois vers l'article que j'ai fait sur le sujet ici pour créer cette clé : Article sur LVM

Pas besoin de modifier le fstab mais il faut par contre mettre à jour crypttab (vous devriez normalement déjà y avoir une ligne mais il faut la modifier pour prendre en compte la clé)
Code BASH :
 
luks-50de9237-1abf-4bf2-a065-8800fbbeda53 UUID=50de9237-1abf-4bf2-a065-8800fbbeda53 /boot/.keyfile_luks discard
 


Ensuite, on va demander à dracut d'aller chercher cette clé
Créer le fichier /etc/dracut.conf.d/copy-keyfile.conf et y ajouter la ligne suivante :
Code BASH :
 
install_items+=/boot/.keyfile_luks
 


Mettez ensuite à jour dracut
Code BASH :
 
dracut -f
 



Soyez prudent, avec cette configuration, votre partition root est accessible à toute personne qui utiliserait une livecd pour démarrer. Il suffit d'ouvrir le conteneur luks avec la clé puisque celle-ci se trouve sur la partition boot non verrouillée


On peut ensuite vérifier que cela a bien été pris en compte :
Code BASH :
 
lsinitrd
 


Devrait vous renvoyer :
Code BASH :
 
-r--------   1 root     root           32 Aug  9 20:09 /boot/.keyfile_luks
 


La nouvelle partition home



Ici, nous allons monter automatiquement notre nouvelle partition home sans clé ni pass-phrase. Le principe est tout simplement de mettre en passphrase le mot de passe de la session utilisateur et d'utiliser pam pour décrypter cette partition lorsuq'on entre le mot de passe de la session.
Encore une fois, je vous renvoi vers un article que j'ai écrit sur la façon de créer une partition chiffréé. Cela s'applique aussi à une partition dans un volume logique. Article ici : Sauvegarde distante sur un disque dur externe chiffré

Nous allons donc monter et décrypter cette partition de façon automatique après ouverture de la session.

Installation des librairies nécessaires



Installez ensuite la librairie nécessaire (ici c'est pour une base redhat, à adapter en fonction de votre distribution):
Code BASH :
 
sudo dnf install pam_mount
 


Modification du fstab



Modifier votre fichier /etc/fstab :
Code BASH :
 
/dev/mapper/homevg-homelv       /home        ext4    rw,helper=crypt,noauto  0       0
 



Le premier paramètre correspond à la partition, ici chez moi il s'agit d'une partition sur un volume logique. N'oubliez pas le "helper=crypt"



Il n'a rien à ajouter dans /etc/crypttab pour cette partition !


Paramétrage de pam_mount



Editez le fichier /etc/security/pam_mount.conf.xml et ajouter au début de celui-ci, après la première balise <pam-mount> et après la ligne <! --Volume definition -->, la ligne suivante :
Code XML :
 
<volume user="remi" mountpoint="/home" path="/dev/mapper/homevg-homelv" fstype="crypt" options="relatime"/>
 



volume user permet de restreindre les utilisateur, on peut mettre * si on ne souhaite pas de restriction
Il faut bien sûr adapter le mountpoint et le path à votre cas


Ensuite, c'est ici que j'ai eu le plus de mal, il y a des lignes à ajouter dans le bon fichier et dans le bon ordre. Je vous donne ma configuration qui fonctionne sur une fedora sous Gnome.
Je vous renvoi vers ces deux sites desquels je me suis inspiré si vous n'avez pas les mêmes fichiers :


J'ai donc modifié le fichier /etc/pam.d/gdm-password et j'ai ajouté les lignes suivantes :
Code BASH :
 
auth optional pam_mount.so
 

avant la ligne "auth substack password-auth"

Code BASH :
 
password optional pam_mount.so
 

avant la ligne "password substack password-auth"

Code BASH :
 
session optional pam_mount.so
 

avant la ligne "session required pam_selinux.so close"


Je l'ai déjà mentionné plus haut mais pour que cela fonctionne, la passphrase du volume ou de la partition cryptée doit être le même que le mot de passe de session.

Cette page a été vue 296 fois