LUKS est le chiffrement de disque pour Linux.
La première fois que vous cryptez une partition avec LUKS (ou lorsque vous sélectionnez l'option de cryptage du disque lors de l'installation du système d'exploitation), vous devez spécifier un mot de passe qui sera utilisé lorsque vous ouvrirez la partition LUKS.
Mais, après cela, vous pouvez monter et démonter la partition autant de fois que vous le souhaitez sans avoir à saisir le mot de passe jusqu'au redémarrage du système.
Imaginez les deux scénarios suivants :
- Vous avez oublié le mot de passe LUKS. Ou, vous avez hérité d'un système de quelqu'un qui a une partition montée avec le cryptage LUKS. Vous n'avez pas de mot de passe LUKS pour cela. Lorsque vous redémarrez le système, vous aurez des problèmes, car vous n'avez pas la clé LUKS.
- Pour des raisons de sécurité, vous devez modifier fréquemment le mot de passe de chiffrement LUKS. Dans ce cas, vous devez faire pivoter la clé LUKS sans perturber la partition montée.
Dans ce didacticiel, nous aborderons tout ce que vous devez savoir sur la gestion des clés LUKS.
1. Huit emplacements pour clés LUKS
Dans LUKS, pour une seule partition chiffrée, vous pouvez avoir huit clés différentes.
N'importe laquelle des huit clés différentes peut être utilisée pour ouvrir la partition chiffrée.
Vous pouvez choisir d'avoir une seule clé sur une partition, ou vous pouvez attribuer les huit clés différentes.
Ces clés sont stockées dans des emplacements de clé LUKS pour la partition. Ainsi, il y aura 8 emplacements de clé pour une partition.
Pour afficher tous les emplacements de clé, utilisez cryptsetup luksDump comme indiqué ci-dessous. Dans cet exemple, il n'utilise que deux emplacements.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Dans ce qui précède :
- /dev/sdb1 est la partition chiffrée LUKS.
- Le numéro d'emplacement de clé commence à partir de 0. Puisque nous avons 8 emplacements, le numéro d'emplacement de clé commence de 0 à 7.
- ENABLED indique qu'une clé est attribuée à cet emplacement particulier.
- Ici, nous avons deux emplacements avec la clé LUKS. Ainsi, la partition chiffrée /dev/sdb1 LUKS a deux clés assignées.
2. Ajouter une nouvelle clé LUKS
Pour ajouter une nouvelle phrase de passe LUKS (clé LUKS) à la partition chiffrée LUKS /dev/sdb1, utilisez la commande cryptsetup luksAddKey comme indiqué ci-dessous.
# cryptsetup luksAddKey /dev/sdb1 Enter any passphrase: Enter new passphrase for key slot: Verify passphrase:
Dans ce qui précède :
- Lorsqu'il indique "Entrez n'importe quelle phrase de passe :", vous devez saisir l'un des mots de passe existants pour /dev/sdb1. Comme nous l'avons vu ci-dessus, il y avait déjà deux mots de passe de l'emplacement 0 et de l'emplacement 1. Vous devez d'abord saisir l'un de ces mots de passe.
- Une fois que vous avez entré un mot de passe existant, vous pouvez attribuer une nouvelle clé LUKS.
Chaque fois que vous ajoutez une nouvelle clé LUKS, elle sera ajoutée au prochain emplacement disponible. Comme nous avions déjà deux clés existantes, la nouvelle clé a été ajoutée à l'emplacement n° 2, qui était le prochain emplacement disponible.
Ainsi, Slot # 0 à 2 indiquera "ENABLED". Nous avons trois clés LUKS sur /dev/sdba1.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: ENABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
3. Ajouter une nouvelle clé LUKS à un emplacement spécifique
Au lieu que LUKS ajoute la nouvelle clé au prochain emplacement disponible, vous pouvez également ajouter une nouvelle clé à un emplacement spécifique.
Pour cela, utilisez l'option -S dans le cryptsetup luksAddKey comme indiqué ci-dessous.
Dans cet exemple, nous ajoutons une nouvelle clé LUKS au Slot#5. J'ai attribué la nouvelle phrase de passe comme :PasswordforSlot5
# cryptsetup luksAddKey /dev/sdb1 -S 5
Comme nous le voyons ci-dessous, le slot #5 indique désormais "ENABLED", tandis que les slots #3 et #4 sont toujours à l'état DISABLED.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: ENABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: ENABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
À ce stade, nous avons 4 clés LUKS attribuées à la partition chiffrée /dev/sdb1.
4. Supprimer une clé LUKS existante
Pour supprimer une clé existante de la partition LUKS, utilisez cryptsetup luksRemoveKey comme indiqué ci-dessous.
Dans cet exemple, il vous suffit de saisir le mot de passe (clé) que vous souhaitez effacer.
Supprimer/Effacer/Supprimer une clé LUKS d'un emplacement. Vous n'avez pas à spécifier le numéro d'emplacement. Spécifiez plutôt la clé à supprimer !.
Dans cet exemple, lorsqu'il demande "Entrez la phrase secrète LUKS à supprimer :", j'ai entré la clé créée dans l'exemple précédent :PasswordforSlot5
# cryptsetup luksRemoveKey /dev/sdb1 Enter LUKS passphrase to be deleted:
Comme vous le voyez dans la sortie suivante de luksDump, la clé de l'emplacement #5 est maintenant effacée.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: ENABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
5. Supprimer une clé LUKS à l'aide de luksKillSlot
Si vous n'avez pas la clé d'un emplacement particulier, mais que vous souhaitez simplement le supprimer, vous pouvez le faire à l'aide de la commande cryptsetup luksKillSlot, comme indiqué ci-dessous.
Dans cet exemple, nous supprimons la clé de l'emplacement LUKS #2.
Pour cela, vous devez entrer la clé LUKS pour l'un des emplacements. Ce n'est qu'une validation avant de supprimer la clé de l'emplacement n° 2.
# cryptsetup luksKillSlot /dev/sdb1 2 Enter any remaining LUKS passphrase:
Comme vous le voyez dans la sortie suivante de luksDump, la clé de l'emplacement #2 est maintenant effacée.
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
6. Ajouter une nouvelle clé LUKS à partir d'un fichier
Vous pouvez également ajouter une nouvelle clé LUKS basée sur un fichier clé que vous avez déjà comme indiqué ci-dessous.
# cryptsetup luksAddKey /dev/sdb1 masterkeyfile Enter any passphrase:
Dans ce qui précède :
- masterkeyfile contient la nouvelle clé LUKS que vous souhaitez ajouter. Cela devrait être un fichier binaire.
- Lorsqu'il vous demande "Entrez n'importe quelle phrase de passe :", entrez l'une des clés LUKS existantes pour la partition /dev/sdb1.
- Comme vous le voyez ci-dessus, il n'a pas demandé de nouvelle clé LUKS, car il l'a extraite du fichier de clé principale.
Comme vous le voyez dans la sortie suivante de luksDump, cette nouvelle clé du fichier de clé principale est ajoutée à l'emplacement #2
# cryptsetup luksDump /dev/sdb1 | grep Slot Key Slot 0: ENABLED Key Slot 1: ENABLED Key Slot 2: ENABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
7. Réinitialiser la clé LUKS oubliée - Obtenir la clé existante
Si vous avez redémarré le serveur et que vous ne parvenez pas à monter votre partition LUKS cryptée, car vous avez oublié votre mot de passe LUKS, vous n'avez pas de chance, vous pouvez le réinitialiser.
Mais, si une partition LUKS cryptée est déjà ouverte, et si vous n'avez pas redémarré le système, et que vous avez oublié le mot de passe LUKS pour la partition qui est déjà montée (au moins LUKS s'est ouvert une fois depuis le dernier redémarrage), alors vous pouvez attribuer une nouvelle clé LUKS.
Dans ce scénario « J'ai oublié mon mot de passe LUKS », vous pouvez effectuer les deux étapes suivantes :
- Extraire la clé chiffrée actuelle de la partition LUKS
- Créer une nouvelle clé LUKS à l'aide de la clé chiffrée extraite ci-dessus
Dans cet exemple, j'ai monté la partition /home1, qui est une partition cryptée LUKS, mais je n'ai pas le mot de passe pour cela.
# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda1 127G 44G 76G 37% / /dev/mapper/home1 93G 188M 88G 1% /home1
Le nom du volume est ce qui se trouve après "/dev/mapper/" dans la 1ère colonne de la sortie de la commande df ci-dessus. Ainsi, dans notre exemple, le nom du volume est "home1"
La table dmsetup suivante –showkeys affichera les clés chiffrées de toutes les partitions montées sur votre système.
# dmsetup table --showkeys home1: 0 197259264 crypt aes-cbc-essiv:sha256 607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c 0 8:17 4096
Le champ après "aes-cbc-essiv:sha256" est le mot de passe crypté. Obtenez la clé LUKS cryptée et stockez-la dans un fichier.
# vi existinglukskey.txt 607f482870c795a9b1e307ffbfc6643eaa219e9ef8c6773de02cd298c8fcda3c
8. Réinitialiser la clé LUKS oubliée - Créer un fichier de clé binaire
Maintenant, nous devons convertir cette clé existante d'un fichier texte en un fichier binaire. Utilisez la commande xxd comme indiqué ci-dessous.
# xxd -r -p existinglukskey.txt existinglukskey.bin
Dans ce qui précède :
- L'option
- -r est pour l'inverse. Cela convertira le vidage hexadécimal en binaire. L'option
- -p est pour le postscript. Cela indique un style de vidage hexadécimal continu postscript.
- fichier d'entrée lukskey.txt existant
- fichier de sortie glukskey.bin existant. Celui-ci contiendra désormais le mot de passe LUKS chiffré existant dans un fichier binaire.
9. Réinitialiser la clé LUKS oubliée - Ajouter une nouvelle clé
Enfin, ajoutez une nouvelle clé LUKS en utilisant la clé LUKS existante que nous avons extraite dans le fichier binaire.
# cryptsetup luksAddKey /dev/sdb1 --master-key-file <(cat existinglukskey.bin) Enter new passphrase for key slot: Verify passphrase:
Dans ce qui précède :
- –master-key-file Spécifiez ici le fichier binaire. N'utilisez pas le fichier lukskey.txt existant. Utilisez plutôt le fichier lukskey.bin existant que nous avons créé ci-dessus.
- Comme vous le voyez ci-dessus, luksAddKey n'a pas demandé le mot de passe LUKS existant, car il l'a extrait du fichier binaire.
- Lorsqu'il vous est demandé "Entrez une nouvelle phrase de passe pour l'emplacement de clé :", entrez le nouveau mot de passe LUKS. Mais, cette fois, ne l'oublie pas.
Encore une fois, souvenez-vous de ceci :si vous oubliez le mot de passe LUKS après avoir redémarré le système, vous n'avez plus de Luks (pas de chance), car vous ne pouvez pas le réinitialiser.
10. Vider la clé principale LUKS
Vous pouvez également vider la MasterKey et la garder en sécurité quelque part. Utilisez l'option –dump-master-key avec luksDump comme indiqué ci-dessous.
# cryptsetup luksDump --dump-master-key /dev/sdb1 Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: LUKS header information for /dev/sdb1 Cipher name: aes Cipher mode: cbc-essiv:sha256 Payload offset: 4096 UUID: 146d639a-757c-4bcb-aee6-8fe815345104 MK bits: 256 MK dump: 60 7f 48 28 70 c7 95 a9 b1 e3 07 ff bf c6 64 3e aa 21 9e 9e f8 c6 77 3d e0 2c d2 98 c8 fc da 3c
Gardez à l'esprit que vous devez stocker le vidage d'en-tête LUKS dans un endroit sûr. À l'aide du vidage de la clé principale, quelqu'un peut accéder à la partition chiffrée LUKS.