« Cryptsetup » : différence entre les versions
(Page créée avec « Category:chiffrement Category:périphériques bloc Cryptsetup est l'implémentation du standard LUKS sur la plupart des distributions Linux. Il permet de chiffrer... ») |
(Réorganisation + aération du code + ajout de la section "Déchiffrement automatique".) |
||
Ligne 1 : | Ligne 1 : | ||
[[Category:chiffrement]] | [[Category:chiffrement]] | ||
[[Category:périphériques bloc]] | [[Category:périphériques bloc]] | ||
Cryptsetup est l'implémentation du standard LUKS sur la plupart des distributions Linux. Il permet de chiffrer des périphériques de type bloc. | ''Cryptsetup'' est l'implémentation du standard ''LUKS'' sur la plupart des distributions ''Linux''. Il permet de chiffrer des périphériques de type bloc. Dans les distributions ''Debian'', il est fournit par le paquet <source lang="bash" inline>cryptsetup</source>. | ||
=Mise en œuvre= | |||
Voici un exemple de mise en œuvre de ''cryptsetup'' décrivant la création, le montage et le démontage d'un volume chiffré. | |||
{{astuce|Il est possible de réaliser un test de performance des différents algorithmes supportés via la commande <source lang="bash" inline>cryptsetup benchmark</source>.}} | |||
Chiffrement du disque ''sdc'' dans son intégralité (écrase tout dessus). Taper '''YES''' (en majuscule) et entrer le mot de passe de déchiffrement 2 fois | Chiffrement du disque ''sdc'' dans son intégralité (écrase tout dessus). Taper '''YES''' (en majuscule) et entrer le mot de passe de déchiffrement 2 fois | ||
cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdc | cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdc | ||
Ouvrir le volume (ça fait un volume "montable" dans ''/dev/mapper/sdc_crypt'') | Ouvrir le volume (ça fait un volume "montable" dans ''/dev/mapper/sdc_crypt'') | ||
cryptsetup luksOpen /dev/sdc sdc_crypt | cryptsetup luksOpen /dev/sdc sdc_crypt | ||
Créer le système de fichier | Créer le système de fichier | ||
mkfs.ext4 /dev/mapper/sdc_crypt | mkfs.ext4 /dev/mapper/sdc_crypt | ||
Monter le volume | Monter le volume | ||
mount /dev/mapper/sdc_crypt /mnt | mount /dev/mapper/sdc_crypt /mnt | ||
Démonter le volume | Démonter le volume | ||
umount /mnt | umount /mnt | ||
Fermer le volume | Fermer le volume | ||
cryptsetup luksClose sdc_crypt | cryptsetup luksClose sdc_crypt | ||
Afficher les détails du volume (type de chiffrement notamment) | Afficher les détails du volume (type de chiffrement notamment) | ||
cryptsetup luksDump /dev/sdc | cryptsetup luksDump /dev/sdc | ||
cryptsetup | =Déchiffrement automatique= | ||
Si vous avez plusieurs volumes chiffrés, il est possible d'utiliser des fichiers de clef présent sur le premier pour déchiffrer les autres. Nous allons partir du principe que mon premier disque de démarrage (chiffré) est ''vda'' et que le second est ''vdb''. | |||
Création du répertoire de travail | |||
mkdir /root/luks | |||
Création du fichier de clé | |||
dd if=/dev/urandom of=/root/luks/fichier_clef.luks bs=4096 count=1 | |||
Attribution des droits | |||
chmod 500 luks/ | |||
chmod 400 luks/fichier_clef | |||
Un volume ''LUKS'' peut gérer plusieurs ''mots de passes/clefs'', nous allons donc ajouter celle que nous avons créé à notre deuxième disque | |||
cryptsetup luksAddKey /dev/vdb /root/luks/fichier_clef.luks | |||
Récupération de l{{'}}''UUID'' de ''vdb'' | |||
export UUID_LUKS=$(blkid -s UUID -o value /dev/vdb) | |||
Ajout d'une entrée dans le fichier de déchiffrement | |||
echo "vbd_luks UUID=${UUID_LUKS} /root/luks/fichier_clef.luks luks,discard" >> /etc/crypttab | |||
''Note : le paramètre <source lang="bash" inline>discard</source> permet d'autoriser les commandes TRIM pour les SSD. Cela n'a pas de sens si vous utilisez des disques durs.'' | |||
{{info|Le fichier <source lang="bash" inline>/etc/crypttab</source> va initier un déchiffrement des volumes qui y sont indiqués au démarrage. Si le volume demande un mot de passe, un prompt sera proposé à l'utilisateur (c'est ce que fait la première ligne du fichier pour votre disque principal). Si la méthode d'accès est un fichier de clef, ''Cryptsetup'' va le soumettre au volume et si il correspond à celui de sa bibliothèque, il se déchiffre.}} | |||
À ce stade, le volume se déchiffrera automatiquement au démarrage. | |||
Il est également possible d’enchaîner avec un [[fstab|montage automatique]] du système de fichier via le <source lang="bash" inline>/etc/fstab</source>. | |||
Déchiffrer manuellement le volume ''LUKS'' | |||
cryptsetup luksOpen /dev/vdb vbd_luks | |||
Formater la partition | |||
mkfs.btrfs -n 32K /dev/mapper/vbd_luks | |||
Ajouter une une entrée dans le ''fstab'' | |||
echo "/dev/mapper/vbd_luks /mnt btrfs rw,relatime,space_cache,subvolid=5,subvol=/ 0 0" >> /etc/fstab | |||
Au redémarrage, le volume sera automatiquement déchiffré et monté dans <source lang="bash" inline>/mnt/</source>. |
Version du 27 décembre 2020 à 15:56
Cryptsetup est l'implémentation du standard LUKS sur la plupart des distributions Linux. Il permet de chiffrer des périphériques de type bloc. Dans les distributions Debian, il est fournit par le paquet cryptsetup
.
Mise en œuvre
Voici un exemple de mise en œuvre de cryptsetup décrivant la création, le montage et le démontage d'un volume chiffré.
ASTUCE
Il est possible de réaliser un test de performance des différents algorithmes supportés via la commandecryptsetup benchmark
.Chiffrement du disque sdc dans son intégralité (écrase tout dessus). Taper YES (en majuscule) et entrer le mot de passe de déchiffrement 2 fois
cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdc
Ouvrir le volume (ça fait un volume "montable" dans /dev/mapper/sdc_crypt)
cryptsetup luksOpen /dev/sdc sdc_crypt
Créer le système de fichier
mkfs.ext4 /dev/mapper/sdc_crypt
Monter le volume
mount /dev/mapper/sdc_crypt /mnt
Démonter le volume
umount /mnt
Fermer le volume
cryptsetup luksClose sdc_crypt
Afficher les détails du volume (type de chiffrement notamment)
cryptsetup luksDump /dev/sdc
Déchiffrement automatique
Si vous avez plusieurs volumes chiffrés, il est possible d'utiliser des fichiers de clef présent sur le premier pour déchiffrer les autres. Nous allons partir du principe que mon premier disque de démarrage (chiffré) est vda et que le second est vdb.
Création du répertoire de travail
mkdir /root/luks
Création du fichier de clé
dd if=/dev/urandom of=/root/luks/fichier_clef.luks bs=4096 count=1
Attribution des droits
chmod 500 luks/ chmod 400 luks/fichier_clef
Un volume LUKS peut gérer plusieurs mots de passes/clefs, nous allons donc ajouter celle que nous avons créé à notre deuxième disque
cryptsetup luksAddKey /dev/vdb /root/luks/fichier_clef.luks
Récupération de l'UUID de vdb
export UUID_LUKS=$(blkid -s UUID -o value /dev/vdb)
Ajout d'une entrée dans le fichier de déchiffrement
echo "vbd_luks UUID=${UUID_LUKS} /root/luks/fichier_clef.luks luks,discard" >> /etc/crypttab
Note : le paramètre discard
permet d'autoriser les commandes TRIM pour les SSD. Cela n'a pas de sens si vous utilisez des disques durs.
INFORMATION
Le fichier/etc/crypttab
va initier un déchiffrement des volumes qui y sont indiqués au démarrage. Si le volume demande un mot de passe, un prompt sera proposé à l'utilisateur (c'est ce que fait la première ligne du fichier pour votre disque principal). Si la méthode d'accès est un fichier de clef, Cryptsetup va le soumettre au volume et si il correspond à celui de sa bibliothèque, il se déchiffre.À ce stade, le volume se déchiffrera automatiquement au démarrage.
Il est également possible d’enchaîner avec un montage automatique du système de fichier via le /etc/fstab
.
Déchiffrer manuellement le volume LUKS
cryptsetup luksOpen /dev/vdb vbd_luks
Formater la partition
mkfs.btrfs -n 32K /dev/mapper/vbd_luks
Ajouter une une entrée dans le fstab
echo "/dev/mapper/vbd_luks /mnt btrfs rw,relatime,space_cache,subvolid=5,subvol=/ 0 0" >> /etc/fstab
Au redémarrage, le volume sera automatiquement déchiffré et monté dans /mnt/
.