Outils pour utilisateurs

Outils du site


luks

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
luks [2017/11/02 21:49] – [Montage automatique du deuxième disque dur] simonluks [2018/10/05 12:42] – [Chiffrer un disque dur externe] simon
Ligne 1: Ligne 1:
 ====== LUKS ====== ====== LUKS ======
 +
 +<WRAP center round important 60%>
 +TODO: Relire et remettre de l'ordre.
 +</WRAP>
 +
 ===== Chiffrer un deuxième disque dur ===== ===== 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. 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.
Ligne 87: Ligne 92:
 </code> </code>
  
-==== Montage automatique du deuxième disque dur ==== +===== Chiffrer un disque dur externe ===== 
-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!)+ 
 +On repère le disque avec [[fdisk]] : 
 +<code bash> 
 +$ sudo fdisk -l 
 +(...) 
 +Disque /dev/sdc : 1,8 TiB, 2000365289472 octets, 3906963456 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 : 0B31EF05-5462-40FF-B947-C7423EFAB8D2 
 + 
 +Périphérique Début        Fin   Secteurs Taille Type 
 +/dev/sdc1     2048 3906961407 3906959360   1,8T Données de base Microsoft 
 +</code> 
 + 
 +Chiffrer le disque dur : 
 +<code bash> 
 +# cryptsetup luksFormat /dev/sdc1 
 +</code> 
 + 
 +J'ai voulu faire ça mais il y a des WARNINGS : 
 +<code bash> 
 +# cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha256 /dev/sdc1 
 +WARNING: Device /dev/sdc1 already contains a 'ntfs' superblock signature. 
 +WARNING: Device /dev/sdc1 already contains a 'atari' partition signature. 
 + 
 +WARNING! 
 +======== 
 +Cette action écrasera définitivement les données sur /dev/sdc1. 
 + 
 +Are you sure? (Type uppercase yes): no  
 +Opération interrompue. 
 +</code> 
 + 
 +J'ai fait un formatage un peu "brutal" à grand coups de [[dd]] (attention, ça a duré 200 000 secondes!): 
 +<code bash> 
 +$ sudo dd if=/dev/zero of=/dev/sdc iflag=nocache oflag=direct bs=4096 
 +488370433+0 enregistrements lus 
 +488370432+0 enregistrements écrits 
 +2000365289472 octets (2,0 TB, 1,8 TiB) copiés, 199997 s, 10,0 MB/s 
 +</code> 
 + 
 +<code bash> 
 +$ sudo fdisk -l 
 +Disque /dev/sdc : 1,8 TiB, 2000365289472 octets, 3906963456 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 
 +</code> 
 + 
 +<code bash> 
 +$ sudo lsblk  
 +NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT 
 +(...) 
 +sdc                    8:32     1,8T  0 disk  
 +</code> 
 + 
 +Création d'une nouvelle partition :  
 +<code bash> 
 +$ sudo fdisk /dev/sdc 
 + 
 +Bienvenue dans fdisk (util-linux 2.32.1). 
 +Les modifications resteront en mémoire jusqu'à écriture. 
 +Soyez prudent avant d'utiliser la commande d'écriture. 
 + 
 +Le périphérique ne contient pas de table de partitions reconnue. 
 +Création d'une nouvelle étiquette pour disque de type DOS avec identifiant de disque 0xff8426b0. 
 + 
 +Commande (m pour l'aide) :
 +Type de partition 
 +     primaire (0 primaire, 0 étendue, 4 libre) 
 +     étendue (conteneur pour partitions logiques) 
 +Sélectionnez (p par défaut) : p 
 +Numéro de partition (1-4, 1 par défaut) : 1 
 +Premier secteur (2048-3906963455, 2048 par défaut) :  
 +Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2048-3906963455, 3906963455 par défaut) :  
 + 
 +Une nouvelle partition 1 de type « Linux » et de taille 1,8 TiB a été créée. 
 + 
 +Commande (m pour l'aide) :
 +La table de partitions a été altérée. 
 +Appel d'ioctl() pour relire la table de partitions. 
 +Synchronisation des disques. 
 +</code> 
 + 
 +Vérification: 
 +<code bash> 
 +$ sudo lsblk 
 +(...) 
 +sdc                    8:32     1,8T  0 disk   
 +└─sdc1                 8:33     1,8T  0 part  
 +</code> 
 + 
 +**Chiffrer la partition sdc1** : 
 +<code bash> 
 +$ sudo cryptsetup -v -y -c aes-xts-plain64 -s 512 -h sha512 -i 5000 --use-random luksFormat /dev/sdc1 
 + 
 +WARNING! 
 +======== 
 +Cette action écrasera définitivement les données sur /dev/sdc1. 
 + 
 +Are you sure? (Type uppercase yes): YES 
 +Saisissez la phrase secrète pour /dev/sdc1 :  
 +Vérifiez la phrase secrète :  
 +Key slot 0 created. 
 +Opération réussie. 
 +</code> 
 + 
 +Vérification: 
 +<code bash> 
 +$ sudo cryptsetup luksDump /dev/sdc1 
 +LUKS header information for /dev/sdc1 
 + 
 +Version:        1 
 +Cipher name:    aes 
 +Cipher mode:    xts-plain64 
 +Hash spec:      sha512 
 +Payload offset: 4096 
 +MK bits:        512 
 +MK digest:      6e c5 4d 4a 3c b6 bf d4 4b bb 1b 18 8a 24 a9 74 57 7c f1 5a  
 +MK salt:        94 97 d0 42 34 f3 20 eb f0 72 76 3d 90 00 72 2b  
 +                d2 29 18 aa 36 fd 22 95 b0 0f 0c 00 2a cd d7 b8  
 +MK iterations: 112027 
 +UUID:          a329d451-fbd0-4a40-9270-896e64472208 
 + 
 +Key Slot 0: ENABLED 
 + Iterations:          4607100 
 + Salt:                28 2a 94 33 a1 4d 2b b0 83 9f 9f 09 0d e3 24 86  
 +                       b6 ec e4 97 27 83 f0 71 b8 d0 68 a4 99 58 f3 11  
 + 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 
 +</code> 
 + 
 +Backup du header (explications sur [[https://loganmarchione.com/2015/05/encrypted-external-drive-with-luks/#Step_2_8211_Securely_wipe_your_disk|loganmarchione.com]]) : 
 +<code bash> 
 +$ sudo cryptsetup luksHeaderBackup --header-backup-file /home/simon/header_backup.img /dev/sdc1 
 +</code> 
 + 
 +Ouvrir le container LUKS : 
 +<code bash> 
 +$ sudo cryptsetup luksOpen /dev/sdc1 ddexterne 
 +Saisissez la phrase secrète pour /dev/sdc1 :  
 +</code> 
 + 
 +Créer une partition : 
 +<code bash> 
 +$ sudo mkfs.ext4 /dev/mapper/ddexterne  
 +mke2fs 1.44.4 (18-Aug-2018) 
 +En train de créer un système de fichiers avec 488369664 4k blocs et 122093568 i-noeuds. 
 +UUID de système de fichiers=7a5beb6b-7fc6-41bd-9767-1b3861718fe6 
 +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, 214990848 
 + 
 +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é 
 +</code> 
 + 
 +==== Utilisation ==== 
 +Déchiffrer et monter le disque :  
 +<code bash> 
 +$ sudo lsblk 
 +NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT 
 +(...) 
 +sdd                    8:48     1,8T  0 disk   
 +└─sdd1                 8:49     1,8T  0 part <= C'est cette partition-ci, de 1,8To!!   
 + 
 +$ sudo cryptsetup luksOpen /dev/sdd1 ddexterne 
 +Saisissez la phrase secrète pour /dev/sdd1 :  
 + 
 +$ sudo mount /dev/mapper/ddexterne /mnt/ddexterne/ 
 +</code> 
 + 
 +On travaille dedans et puis on referme/démonte :  
 +<code bash> 
 +$ sudo umount /mnt/ddexterne 
 + 
 +$ sudo cryptsetup luksClose /dev/mapper/ddexterne 
 +</code> 
 + 
 +__Sources:__  
 +  * [[https://loganmarchione.com/2015/05/encrypted-external-drive-with-luks/#Step_2_8211_Securely_wipe_your_disk|loganmarchione.com]] 
 +  * [[https://blog.hellnino.com/?p=464|hellnino.com]] 
 + 
 +===== Montage automatique d'un disque dur chiffré (externe ou second disque) ===== 
 +Si le premier disque dur principal 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 : Création du fichier :
Ligne 147: Ligne 349:
 Key Slot 7: DISABLED Key Slot 7: DISABLED
 </code> </code>
 +
 +Démontage :
 +<code bash>
 +# umount /mnt/data/
 +# cryptsetup luksClose /dev/mapper/data
 +</code>
 +
 +Montage :
 +<code bash>
 +# cryptsetup luksOpen /dev/sda1 data
 +Saisissez la phrase secrète pour /dev/sda1 : 
 +
 +# mount -t ext4 -o noatime /dev/mapper/data /mnt/data
 +</code>
 +
 +On doit maintenant modifier les fichiers ''/etc/fstab'' et ''/etc/crypttab'' :
 +<code bash>
 +# 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
 +
 +#SLF: Deuxième disque dur (/dev/mapper/data)
 +  UUID=33ac1c64-3173-457e-a7c1-25c7ad35e161   /mnt/data    ext4    defaults          0       1
 +</code>
 +
 +**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é :
 +<code bash>
 +# cryptsetup --key-file=/etc/keys/sdb1_key luksOpen /dev/sdb1 sdb1_crypt
 +</code>
 +(source: [[https://www.finnie.org/2009/07/26/keyfile-based-luks-encryption-in-debian/|keyfile-based luks encryption in Debian]])
 +
 ===== Ajouter une deuxième mot de passe pour déchiffrer ===== ===== 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. 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.
Ligne 281: Ligne 532:
  
 Cette fois, deux emplacements sont bien utilisés. Cette fois, deux emplacements sont bien utilisés.
 +
 +===== Backup du header de LUKS =====
 +Comme expliqué dans cet article sur [[https://loganmarchione.com/2015/05/encrypted-external-drive-with-luks/#Step_2_8211_Securely_wipe_your_disk|loganmarchione.com]], il est très important de sauvegarder le **header** de LUKS.
 +
 +{{ ::20150505_002-1024x753.png?400 |}}
 +
 +<code bash>
 +$ sudo cryptsetup luksHeaderBackup --header-backup-file /home/simon/header_backup.img /dev/sdc1
 +</code>
 +
 +Il faut évidemment stocker ce header sur un autre support chiffré... 
  
 ===== Sources ===== ===== Sources =====
   * [[http://web.archive.org/web/20100110234521/http://petaramesh.org/post/2007/11/29/Une-cle-de-contact-pour-votre-portable-chiffre|web.archive de petaramesh.org]]   * [[http://web.archive.org/web/20100110234521/http://petaramesh.org/post/2007/11/29/Une-cle-de-contact-pour-votre-portable-chiffre|web.archive de petaramesh.org]]
 +  * [[https://doc.ubuntu-fr.org/cryptsetup|doc.ubuntu-fr.org/cryptsetup]]