Monter un volume crypté au démarrage du système
Dans cet article, nous allons voir comment monter manuellement puis automatiquement un système de fichier crypté avec luks. Toutes les commandes se font en root (ou avec sudo).
Avec seulement crypttab
Création d'une clé
Cette clé permet d'ouvrir un conteneur luks sans avoir à entrer de mot de passe. On va créer une clé aléatoire à l'aide de la commande suivante :
On rend ensuite cette clé illisible pour le commun des mortels :
Association de la clé au conteneur
On associe ensuite cette clé au conteneur luks :
Test de la clé
On peut ensuite tester l'ouverture manuelle du conteneur à l'aide de cette clé :
Montage du conteneur
Tout en une commande
On peut également ouvrir le conteneur et monter le système de fichier en une commande :
cryptsetup --key-file /root/.keyfile_luks luksOpen /dev/mapper/datavg-sauvegardelv cryptsauvegarde && wait && mount /dev/mapper/cryptsauvegarde /mnt/cryptWD
Automatisation
On va maintenant automatiser cette manip. au démarrage du système via fstab et crypttab
A l'instar du fichier fstab qui automatise les montages de partitions, crypttab automatise l'ouverture de conteneurs sécurisés. On modifie le fichier /etc/crypttab en ajoutant la ligne suivante :
Dans mon cas, pour exemple :
Ensuite, on modifier le fichier fstab en ajoutant la ligne suivante :
Par exemple, dans mon cas :
Vous pouvez rebooter et vérifier que cela fonctionne !
Avec crypttab + dracut
Le principe ici est d'utiliser dracut. Comme vu précédemmet, 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.
Montage automatique de la partition initialement cryptée
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é)
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 :
Mettez ensuite à jour dracut
Warning
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 :
Devrait vous renvoyer :
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):
Modification du fstab
Modifier votre fichier /etc/fstab :
Note
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"
Warning
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
<volume user="remi" mountpoint="/home" path="/dev/mapper/homevg-homelv" fstype="crypt" options="relatime"/>
Tip
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 :
avant la ligne"auth substack password-auth"
avant la ligne "password substack password-auth"
avant la ligne "session required pam_selinux.so close"
Warning
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.
