LUKS : Chiffrer sa partition home
Afin de sécuriser ses données il est possible de chiffrer les partitions de son système suivant ses propres choix.
Bien que lors de l'installation cette option soit directement accessible facilement, il se peut que vous changiez d'avis par la suite, alors voilà comment il faudrait s'y prendre.
LVM-over-LUKS ou LUKS-over-LVM ? Dans le cas de cet article nous utiliserons LUKS-over-LVM car nous n'avons besoin de chiffrer qu'une partition, si nous avions eu besoin de chiffrer plusieurs partition on pouvait revoir cette décision. |
Préparation
On commence par sauvegarder les données vu que toutes les données présentent sur la partition seront détruites lors du chiffrage.
Ensuite nous avons besoin que la structure des partitions qui va accueillir notre conteneur LUKS soit prête.
Voici le volume logique qui contiendra notre conteneur chiffré :
<file>
# lvdisplay vg/lv_home --- Logical volume --- LV Path /dev/vg/lv_home LV Name lv_home VG Name vg LV UUID --- LV Write Access read/write LV Creation host, time , LV Status available # open 1 LV Size 55,00 GiB Current LE 1760 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2
</file>
Création du conteneur LUKS
Afin de créer un conteneur, il va tout d'abord falloir générer de l'entropie. Pour ce faire, nous allons utiliser /dev/urandom qui est plus rapide que /dev/random.
[root@linux] # | dd if=/dev/urandom of=/dev/vg/lv_home | dblclick to copy |
Il se peut que cette étape soit très longue suivant la taille de la partition, mais elle est nécessaire pour un chiffrement efficace.
Création du conteneur chiffré :
[root@linux] # | cryptsetup --verbose --hash=sha256 luksFormat /dev/vg/lv_home | dblclick to copy |
On peut vérifier que le conteneur est bien créé :
[root@linux] # | cryptsetup isLuks /dev/vg/lv_home && echo Success | dblclick to copy |
Ouverture du conteneur et création du système de fichiers :
[root@linux] # | cryptsetup luksOpen /dev/vg/lv_home home | dblclick to copy |
[root@linux] # | mkfs.ext4 /dev/mapper/home |
Mapping du conteneur
Afin de pouvoir accéder aux données, il faut mettre en place le mapping. Il servira aussi à monter automatiquement la partition en ouvrant le conteneur.
Ajout de l'entrée dans /etc/crypttab
Le format de ce fichier est le suivant :
<name> <device> none
<device>
peut contenir l'identifiant du périphérique de la même manière que pour
/etc/fstab
, si on souhaite utiliser l'UUID, il peut être obtenu via la commande suivante :
[root@linux] # | cryptsetup luksUUID <device> | dblclick to copy |
Dans notre cas nous allons ajouter la ligne suivante dans le fichier : <file> luks-home /dev/vg/lv_home none </file>
Nous aurons donc un device
/dev/mapper/luks-home
.
Ajout de l'entrée dans /etc/fstab
Maintenant que le mapping est fait pour luks nous pouvons mettre en place le montage automatique de la partition, le mot de passe de chiffrement sera demandé au démarrage de la machine.
La ligne à ajouter dans le fichier est la suivante :
<file> /dev/mapper/luks-home /home ext4 defaults 1 2 </file>
Structure finale
Une fois tout en place, la structure de nos partition ressemble à ceci :
<file>
# lsblk --output NAME,LABEL,SIZE,TYPE,MOUNTPOINT
NAME LABEL SIZE TYPE MOUNTPOINT sda 149,1G disk ├─sda1 BOOT 500M part /boot └─sda2 148,6G part
├─vg-lv_swap 5,8G lvm [SWAP] ├─vg-lv_root 87,8G lvm / └─vg-lv_home 55G lvm └─luks-home 55G crypt /home
sr0 1024M rom </file>
Nous avons donc un volume logique LVM qui contient un conteneur LUKS.
Ce conteneur est déchiffrable via un mot de passe qui a été choisi lors de sa création (il vaudrait mieux en avoir choisi un costaud).
Pour aller plus loin, se reporter à l'article LUKS : Gestion des conteneurs