LUKS : Chiffrement des données du disque dur Linux avec prise en charge NTFS sous Linux

L’acronyme LUKS signifie Linux Unified Key Setup, qui est une méthode largement utilisée pour le chiffrement des disques par le noyau Linux et est implémentée avec le paquet cryptsetup.

La commande cryptsetup chiffre en ligne un disque en utilisant une clé de chiffrement symétrique dérivée d’une phrase secrète fournie à chaque montage d’un disque, d’une partition, voire d’un disque entier (même une clé USB) dans la hiérarchie du système de fichiers, et utilise le chiffrement aes-cbc-essiv:sha256.

Linux Hard Disk Encryption Using LUKS

Étant donné que LUKS peut chiffrer l’ensemble des périphériques de blocs (disques durs, clés USB, disques flash, partitions, groupes de volumes, etc.) sur les systèmes Linux, il est largement recommandé pour protéger les supports de stockage amovibles, les disques durs d’ordinateurs portables ou les fichiers d’échange Linux, et n’est pas recommandé pour le chiffrement au niveau des fichiers.

NTFS (New Technology File System) est un système de fichiers propriétaire développé par Microsoft.

Ubuntu 14.04 prend en charge pleinement le chiffrement LUKS ainsi que le support natif NTFS pour Windows avec l’aide du paquet ntfs-3g.

Pour illustrer mon propos dans ce tutoriel, j’ai ajouté un nouveau disque dur (4ème) sur la machine Ubuntu 14.04 (la référence système du nouveau HDD ajouté est /dev/sdd), qui sera divisé en deux partitions.

  1. Une partition (/dev/sdd1 – primaire) sera utilisée pour le chiffrement LUKS.
  2. La deuxième partition (/dev/sdd5 – étendue) sera formatée en NTFS pour accéder aux données à la fois sur des systèmes Linux et Windows.

De plus, les partitions seront automatiquement montées sur Ubuntu 14.04 après le redémarrage.

Étape 1 : Créer des partitions de disque.

1. Après avoir ajouté physiquement votre disque dur à votre machine, utilisez la commande ls pour lister tous les /dev/dispositifs (le quatrième disque est /dev/sdd).

# ls /dev/sd*
List Partitions in Linux

2. Ensuite, vérifiez votre nouveau disque dur avec la commande fdisk.

$ sudo fdisk –l /dev/sdd
Check Linux Hard Disk

Comme aucun système de fichiers n’a été écrit, le disque ne contient pas encore de table de partition valide.

3. Les étapes suivantes découpent le disque dur en deux partitions en utilisant l’utilitaire de disque cfdisk.

$ sudo cfdisk /dev/sdd

4. L’écran suivant ouvre le mode interactif de cfdisk. Sélectionnez l’Espace Libre de votre disque dur et naviguez jusqu’à l’option Nouveau en utilisant les flèches gauche/droite.

cfdisk Interactive Mode

5. Choisissez le type de partition Primaire et appuyez sur Entrée.

Select Your Partition Type

6. Indiquez la taille de partition souhaitée en Mo.

Write Down Partition Size

7. Créez cette partition au Début de l’espace libre du disque dur.

Create a Partition

8. Naviguez ensuite jusqu’à l’option Type de partition et appuyez sur Entrée.

Partition Type

9. L’invite suivante présente une liste de tous les types de systèmes de fichiers et leur code numérique (nombre en hexadécimal). Cette partition sera chiffrée avec Linux LUKS, choisissez donc le code 83 et appuyez à nouveau sur Entrée pour créer la partition.

Enter File System Type

10. La première partition est créée et l’utilitaire cfdisk revient au début. Pour créer la deuxième partition utilisée en NTFS, sélectionnez l’Espace libre restant, allez à l’option Nouveau et appuyez sur la touche Entrée.

Create New Partition

11. Cette fois, la partition sera une Logique Étendue. Alors, allez à l’option Logique et appuyez à nouveau sur la touche Entrée.

Select Logical Partition Type

12. Renseignez à nouveau la taille de votre partition. Pour utiliser l’espace libre restant comme nouvelle partition, laissez la valeur par défaut pour la taille et appuyez simplement sur la touche Entrée.

Enter Size of Partition

13. Choisissez à nouveau le code de type de partition. Pour le système de fichiers NTFS, choisissez le code de volume 86.

Select Partition Type

14. Après avoir vérifié et validé les partitions, sélectionnez Écrire, répondez oui à la question suivante de l’invite interactive puis Quitter pour quitter l’utilitaire cfdisk.

Write Partition Table to Disk
Confirm Changes
Quit to leave cfdisk utility

Félicitations ! Vos partitions ont été créées avec succès et sont maintenant prêtes à être formatées et utilisées.

15. Pour vérifier à nouveau la table des partitions du disque, saisissez à nouveau la commande fdisk qui affichera des informations détaillées sur la table des partitions.

$ sudo fdisk –l /dev/sdd
Confirm Parition Table

Étape 2 : Créer un Système de Fichiers de Partition

Système de Fichiers NTFS

16. Pour créer le système de fichiers NTFS sur la deuxième partition, exécutez la commande mkfs.

$ sudo mkfs.ntfs /dev/sdd5
Create NTFS Filesystem

17. Pour rendre la partition disponible, elle doit être montée sur le système de fichiers à un point de montage. Montez la deuxième partition sur le quatrième disque dur au point de montage /opt en utilisant la commande mount.

$ sudo mount /dev/sdd5 /opt

18. Ensuite, vérifiez si la partition est disponible et est répertoriée dans le fichier /etc/mtab en utilisant la commande cat.

$ cat /etc/mtab
Check Partition Availability

19. Pour démonter la partition, utilisez la commande suivante.

$ sudo umount /opt
EXT4 LUKS

20. Assurez-vous que le paquet cryptsetup est installé sur votre système.

$ sudo apt-get install cryptsetup		[On Debian Based Systems]

# yum install cryptsetup				[On RedHat Based Systems]

21. Il est temps maintenant de formater la première partition sur le quatrième disque dur avec le système de fichiers ext4 en saisissant la commande suivante.

$ sudo luksformat  -t ext4  /dev/sdd1

Répondez en majuscules OUI à la question « Êtes-vous sûr? » et entrez trois fois votre phrase de passe souhaitée.

Format Partition

Remarque: En fonction de la taille de votre partition et de la vitesse du disque dur, la création du système de fichiers peut prendre du temps.

22. Vous pouvez également vérifier le statut du périphérique de la partition.

$ sudo cryptsetup luksDump  /dev/sdd1
Verify Partition Status

23. LUKS prend en charge un maximum de 8 mots de passe ajoutés. Pour ajouter un mot de passe, utilisez la commande suivante.

$ sudo cryptsetup luksAddKey /dev/sdd1
Add a Password

Pour supprimer un mot de passe, utilisez.

$ sudo cryptsetup luksRemoveKey /dev/sdd1
Remove a Password

24. Pour que cette partition chiffrée soit active, elle doit avoir une entrée de nom (être initialisée) dans le répertoire /dev/mapper avec l’aide du paquet cryptsetup.

Ce paramètre nécessite la syntaxe de ligne de commande suivante:

$ sudo cryptsetup luksOpen  /dev/LUKS_partiton  device_name

Où « nom_du_dispositif » peut être n’importe quel nom descriptif que vous aimez! (Je l’ai nommé volume_chiffré). La commande réelle ressemblera à ce qui suit.

$ sudo cryptsetup luksOpen  /dev/sdd1 crypted_volume
Active Encrypted Partition

25. Ensuite, vérifiez si votre appareil est répertorié dans le répertoire /dev/mapper, lien symbolique et état de l’appareil.

$ ls /dev/mapper
$ ls –all /dev/mapper/encrypt_volume
Verify Encrypted Partition
$ sudo cryptsetup –v status encrypt_volume
Encrypted Partition Status

26. Maintenant, pour rendre le périphérique de partition largement disponible, montez-le sur votre système sous un point de montage en utilisant la commande mount.

$ sudo mount  /dev/mapper/crypted_volume  /mnt
Mount Encrypted Partition

Comme on peut le voir, la partition est montée et accessible pour l’écriture de données.

27. Pour le rendre indisponible, démontez-le de votre système et fermez l’appareil.

$ sudo umount  /mnt
$ sudo cryptsetup luksClose crypted_volume
Umount Encrypted Partition

Étape 3 : Monter la partition automatiquement

Si vous utilisez un disque dur fixe et avez besoin que les deux partitions soient automatiquement montées après le redémarrage du système, vous devez suivre ces deux étapes.

28. Tout d’abord, éditez le fichier /etc/crypttab et ajoutez les données suivantes.

$ sudo nano /etc/crypttab
  1. Nom de la cible : Un nom descriptif pour votre appareil (voir le point ci-dessus 22 sur EXT4 LUKS).
  2. Source du lecteur : La partition du disque dur formatée pour LUKS (voir le point ci-dessus 21 sur EXT4 LUKS).
  3. Fichier clé : Choisissez « aucun »
  4. Options : Spécifiez luks

La dernière ligne ressemblera à ce qui suit.

encrypt_volume               /dev/sdd1          none       luks
Mount Partition Automatically

29. Ensuite, éditez /etc/fstab et spécifiez le nom de votre appareil, le point de montage, le type de système de fichiers et d’autres options.

$ sudo nano /etc/fstab

Utilisez la syntaxe suivante sur la dernière ligne.

/dev/mapper/device_name (or UUID)	/mount_point     filesystem_type     options    dump   pass

Et ajoutez votre contenu spécifique.

/dev/mapper/encrypt_volume      /mnt    ext4    defaults,errors=remount-ro     0     0
Add Partition Entry in Fstab

30. Pour obtenir l’identifiant UUID de l’appareil, utilisez la commande suivante.

$ sudo blkid
Get Device UUID

31. Pour ajouter également le type de partition NTFS créé précédemment, utilisez la même syntaxe que ci-dessus sur une nouvelle ligne dans fstab (Ici, la redirection d’ajout de fichier Linux est utilisée).

$ sudo su -
# echo "/dev/sdd5	/opt	ntfs		defaults		0              0"  >> /etc/fstab
Add NTFS Partition in fstab

32. Pour vérifier les changements, redémarrez votre machine, appuyez sur Entrée après le message d’amorçage « Démarrage de la configuration du périphérique réseau » et saisissez le mot de passe de votre périphérique.

Reboot Machine
Verify Partition is Mounted Automatically

Comme vous pouvez le constater, les deux partitions de disque ont été automatiquement montées sur la hiérarchie du système de fichiers Ubuntu. En guise de conseil, n’utilisez pas les volumes chiffrés automatiquement à partir du fichier fstab sur des serveurs physiquement distants si vous ne pouvez pas accéder à la séquence de redémarrage pour fournir le mot de passe de votre volume chiffré.

Les mêmes paramètres peuvent être appliqués à tous les types de supports amovibles tels que les clés USB, les cartes mémoire flash, les disques durs externes, etc., pour protéger des données importantes, secrètes ou sensibles en cas d’écoute ou de vol.

Source:
https://www.tecmint.com/linux-hard-disk-encryption-using-luks/