Ceci est une ancienne révision du document !
Table des matières
LUKS
TODO: Relire et remettre de l'ordre.
Chiffrer un deuxième disque dur
On peut facilement configurer le chiffrement avec LUKS lors de l'installation d'une distribution GNU/Linux. Mais si on veut chiffrer un éventuel deuxième disque dur , il faut le faire à la main.
Une fois le disque identifié (avec fdisk, comme plus bas), on peut le chiffrer :
# cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha256 /dev/sda1 WARNING! ======== Cette action écrasera définitivement les données sur /dev/sda1. Are you sure? (Type uppercase yes): YES Saisissez la phrase secrète : Vérifiez la phrase secrète :
Vérification :
# cryptsetup luksDump /dev/sda1 LUKS header information for /dev/sda1 Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha256 Payload offset: 4096 MK bits: 512 MK digest: 0a 16 95 1f 9c 18 26 62 95 87 69 fb 9d 32 d5 00 89 21 a9 36 MK salt: 3f fd 91 5f c6 02 e8 8e 38 b8 05 bc 83 a7 e2 26 65 0a 07 88 02 38 da 73 db cb 0c 8e ba c8 8c b9 MK iterations: 173750 UUID: cff610dd-3207-472f-bdd9-dbaf102958a9 Key Slot 0: ENABLED Iterations: 1406591 Salt: 1f 0b 0c c5 21 0e d3 e8 05 8c 81 3b 81 fb e9 99 15 d1 65 c8 c6 70 b2 1d c4 39 94 fb 62 26 85 80 Key material offset: 8 AF stripes: 4000 Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Il faut maintenant créer une partition :
# cryptsetup luksOpen /dev/sda1 data Saisissez la phrase secrète pour /dev/sda1 : # ls -l /dev/mapper/ total 0 lrwxrwxrwx 1 root root 7 nov 2 21:42 alt--simon--vg-home -> ../dm-3 lrwxrwxrwx 1 root root 7 nov 2 21:42 alt--simon--vg-root -> ../dm-1 lrwxrwxrwx 1 root root 7 nov 2 21:42 alt--simon--vg-swap_1 -> ../dm-2 crw------- 1 root root 10, 236 nov 2 21:42 control lrwxrwxrwx 1 root root 7 nov 2 22:28 data -> ../dm-4 lrwxrwxrwx 1 root root 7 nov 2 21:42 nvme0n1p3_crypt -> ../dm-0
# mkfs.ext4 -m 0 -L data /dev/mapper/data mke2fs 1.43.4 (31-Jan-2017) En train de créer un système de fichiers avec 122095616 4k blocs et 30531584 i-noeuds. UUID de système de fichiers=33ac1c64-3173-457e-a7c1-25c7ad35e161 Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000 Allocation des tables de groupe : complété Écriture des tables d'i-noeuds : complété Création du journal (262144 blocs) : complété Écriture des superblocs et de l'information de comptabilité du système de fichiers : complété
Créer le point de montage et monter le disque :
# mkdir /mnt/data # mount -t ext4 -o noatime /dev/mapper/data /mnt/data
Chiffrer un disque dur externe
Source:
Montage automatique du deuxième disque dur
Comme le premier disque dur est déjà chiffré, nous pouvons stocker sur celui-ci un fichier qui servira de clé pour déchiffrer le deuxième disque dur. (Ce qui évite de taper deux mots de passe au démarrage!)
Création du fichier :
# dd if=/dev/random of=/mnt/.datakey bs=1 count=256 256+0 enregistrements lus 256+0 enregistrements écrits 256 bytes copied, 0,00285662 s, 89,6 kB/s # ls -al /mnt/ total 16 drwxr-xr-x 3 root root 4096 nov 2 22:43 . drwxr-xr-x 23 root root 4096 nov 2 21:40 .. drwxr-xr-x 3 root root 4096 nov 2 22:34 data -rw-r--r-- 1 root root 256 nov 2 22:43 .datakey
On ajoute la clé dans les “slot” qui permettent de déchiffrer le disque :
# cryptsetup luksAddKey /dev/sda1 /mnt/.datakey
Entrez une phrase secrète existante :
On vérifie :
# cryptsetup luksDump /dev/sda1 LUKS header information for /dev/sda1 Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha256 Payload offset: 4096 MK bits: 512 MK digest: 0a 16 95 1f 9c 18 26 62 95 87 69 fb 9d 32 d5 00 89 21 a9 36 MK salt: 3f fd 91 5f c6 02 e8 8e 38 b8 05 bc 83 a7 e2 26 65 0a 07 88 02 38 da 73 db cb 0c 8e ba c8 8c b9 MK iterations: 173750 UUID: cff610dd-3207-472f-bdd9-dbaf102958a9 Key Slot 0: ENABLED Iterations: 1406591 Salt: 1f 0b 0c c5 21 0e d3 e8 05 8c 81 3b 81 fb e9 99 15 d1 65 c8 c6 70 b2 1d c4 39 94 fb 62 26 85 80 Key material offset: 8 AF stripes: 4000 Key Slot 1: ENABLED Iterations: 1391302 Salt: 73 ec 5a 9e 2e a9 51 1f 17 53 79 e3 27 01 09 56 eb 6f b2 19 be 44 1c e2 87 05 58 7d 5b 27 38 ce Key material offset: 512 AF stripes: 4000 Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Démontage :
# umount /mnt/data/ # cryptsetup luksClose /dev/mapper/data
Montage :
# cryptsetup luksOpen /dev/sda1 data Saisissez la phrase secrète pour /dev/sda1 : # mount -t ext4 -o noatime /dev/mapper/data /mnt/data
On doit maintenant modifier les fichiers /etc/fstab
et /etc/crypttab
:
# nvim /etc/crypttab # cat /etc/crypttab # <target name> <source device> <key file> <options> nvme0n1p3_crypt UUID=8fb1b94f-db06-4d28-bb8a-abc1a30d2126 none luks data /dev/sda1 /mnt/.datakey luks,keyscript=/lib/cryptsetup/scripts/passdev # nvim /etc/fstab # cat /etc/fstab # <file system> <mount point> <type> <options> <dump> <pass> /dev/mapper/alt--simon--vg-root / ext4 errors=remount-ro 0 1 # /boot was on /dev/nvme0n1p2 during installation UUID=c3829ece-82e0-4e83-9a79-ae6c444b42d7 /boot ext2 defaults 0 2 # /boot/efi was on /dev/nvme0n1p1 during installation UUID=B013-E763 /boot/efi vfat umask=0077 0 1 /dev/mapper/alt--simon--vg-home /home ext4 defaults 0 2 /dev/mapper/alt--simon--vg-swap_1 none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 #SLF: Deuxième disque dur (/dev/mapper/data) UUID=33ac1c64-3173-457e-a7c1-25c7ad35e161 /mnt/data ext4 defaults 0 1
TODO: Terminer la configuration pour permettre à l'utilisateur courant de (dé)monter le deuxième disque et d'y écrire.
Bonus, pour ouvrir un disque chiffré avec Luks et avec un fichier-clé :
# cryptsetup --key-file=/etc/keys/sdb1_key luksOpen /dev/sdb1 sdb1_crypt
(source: keyfile-based luks encryption in Debian)
Ajouter une deuxième mot de passe pour déchiffrer
Suite à une intallation d'une Debian avec le disque chiffré, je souhaite pouvoir rajouter une clé pour déchiffrer le disque dur, en plus de celle configurée au départ.
On identifie tout d'abord les partitions :
# fdisk -l Disque /dev/nvme0n1 : 238,5 GiB, 256060514304 octets, 500118192 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : gpt Identifiant de disque : FB187D7A-0D33-4743-889D-5441E424852D Périphérique Début Fin Secteurs Taille Type /dev/nvme0n1p1 2048 1050623 1048576 512M Système EFI /dev/nvme0n1p2 1050624 1550335 499712 244M Système de fichiers Linux /dev/nvme0n1p3 1550336 500117503 498567168 237,8G Système de fichiers Linux Disque /dev/sda : 465,8 GiB, 500107862016 octets, 976773168 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : dos Identifiant de disque : 0x6ee5e36e Périphérique Amorçage Début Fin Secteurs Taille Id Type /dev/sda1 * 2048 976771071 976769024 465,8G 7 HPFS/NTFS/exFAT Disque /dev/mapper/nvme0n1p3_crypt : 237,8 GiB, 255264292864 octets, 498563072 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Disque /dev/mapper/alt--simon--vg-root : 28 GiB, 29997662208 octets, 58589184 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Disque /dev/mapper/alt--simon--vg-swap_1 : 15,9 GiB, 17075011584 octets, 33349632 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Disque /dev/mapper/alt--simon--vg-home : 193,9 GiB, 208188473344 octets, 406618112 secteurs Unités : secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets
# cryptsetup luksDump /dev/nvme0n1p3 LUKS header information for /dev/nvme0n1p3 Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha256 Payload offset: 4096 MK bits: 512 MK digest: 6f c0 da 10 e2 67 96 91 e3 d1 61 49 7a ef 5b f0 2b f2 94 9a MK salt: 2a 58 19 02 dd 6a ca 3e d4 ba ac 6d 34 c3 0e 4b b4 45 61 69 58 6d 41 1b e3 ed 08 d7 08 a1 b9 05 MK iterations: 174750 UUID: 8fb1b94f-db06-4d28-bb8a-abc1a30d2126 Key Slot 0: ENABLED Iterations: 1391302 Salt: ef 73 48 b9 05 36 24 ec 7c 0a 9b ca 63 fd d0 fa e6 c6 c1 aa f1 56 d9 13 f7 50 14 cc d1 3c 22 2c Key material offset: 8 AF stripes: 4000 Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
On voit qu'il reste 7 slots disponibles. On ajoute :
# cryptsetup luksAddKey /dev/nvme0n1p3 Entrez une phrase secrète existante : Entrez une nouvelle phrase secrète pour l'emplacement de clé : Vérifiez la phrase secrète :
On vérifie :
# cryptsetup luksDump /dev/nvme0n1p3 LUKS header information for /dev/nvme0n1p3 Version: 1 Cipher name: aes Cipher mode: xts-plain64 Hash spec: sha256 Payload offset: 4096 MK bits: 512 MK digest: 6f c0 da 10 e2 67 96 91 e3 d1 61 49 7a ef 5b f0 2b f2 94 9a MK salt: 2a 58 19 02 dd 6a ca 3e d4 ba ac 6d 34 c3 0e 4b b4 45 61 69 58 6d 41 1b e3 ed 08 d7 08 a1 b9 05 MK iterations: 174750 UUID: 8fb1b94f-db06-4d28-bb8a-abc1a30d2126 Key Slot 0: ENABLED Iterations: 1391302 Salt: ef 73 48 b9 05 36 24 ec 7c 0a 9b ca 63 fd d0 fa e6 c6 c1 aa f1 56 d9 13 f7 50 14 cc d1 3c 22 2c Key material offset: 8 AF stripes: 4000 Key Slot 1: ENABLED Iterations: 1398906 Salt: d1 cf 7f 08 e8 bb 57 0c f4 e5 27 fb fd c7 a3 66 c7 1c 85 7f b6 be 79 50 fa f0 60 ab 0c bd c8 44 Key material offset: 512 AF stripes: 4000 Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Cette fois, deux emplacements sont bien utilisés.