LUKS
| Fiche express | |
|---|---|
| Domaine | Chiffrement de disque (dm-crypt) |
| Commande | cryptsetup
|
| Contexte | Chiffrer une partition ou un disque externe (ex. support de sauvegarde amovible) — lisible depuis n'importe quel Linux disposant des paquets requis et du mot de passe |
| Voir aussi | Iptables (autre brique de sécurisation système) |
LUKS (Linux Unified Key Setup) est le format standard de chiffrement de disque sous
Linux, géré via la commande cryptsetup (basée sur dm-crypt). Il permet de chiffrer
l'accès à un système de fichiers entier : la partition n'est lisible qu'après déverrouillage avec
un mot de passe (ou une clé), ce qui en fait un choix courant pour un disque de sauvegarde externe
destiné à être externalisé.
Installation
apt-get install cryptsetup # Debian/Ubuntu
yum install cryptsetup-luks # RHEL/CentOS
modprobe aes
modprobe dm_crypt
modprobe dm_mod
Créer un volume chiffré
Chiffrement de la partition /dev/sdb1 :
cryptsetup luksFormat /dev/sdb1
La commande demande de taper YES (en majuscules) pour confirmer, puis de saisir la
phrase de passe :
WARNING!
========
Cette action écrasera définitivement les données sur /dev/sdb1.
Are you sure? (Type uppercase yes): YES
Entrez la phrase de passe LUKS :
Verify passphrase:
⚠️ luksFormat écrase l'en-tête existant — toute donnée déjà présente sur la
partition devient irrécupérable. Si la partition contenait des données sensibles avant
chiffrement et que le disque doit être réutilisé/revendu, un shred préalable
permet de forcer l'écrasement effectif :
shred -v -n1 /dev/sdb1
Note : un volume LUKS peut stocker jusqu'à 8 clés (« key slots ») — voir Gestion des clés pour en ajouter une (utile notamment pour le montage automatique).
Ouvrir et fermer un volume chiffré
cryptsetup luksOpen /dev/sdb1 usbdisk # déverrouille, demande la phrase de passe
mkfs.ext3 -L usbdisk /dev/mapper/usbdisk # à faire une seule fois, juste après le premier luksFormat
cryptsetup -v status usbdisk # état du mapping
cryptsetup luksClose usbdisk # reverrouille et supprime le device mapper
luksOpen crée un périphérique dans /dev/mapper/ (ici
/dev/mapper/usbdisk) : c'est ce périphérique qu'il faut monter, pas la partition
brute :
mount -t ext3 /dev/mapper/usbdisk /mnt/usbdisk
Pour visualiser l'en-tête et les caractéristiques du volume (algorithme, key slots utilisés, UUID…) :
cryptsetup luksDump /dev/sdb1
cryptsetup luksUUID /dev/sdb1
Montage automatique au démarrage
Générer un fichier de clé à partir de données aléatoires, accessible uniquement à root, puis l'ajouter comme clé LUKS :
dd if=/dev/urandom of=/root/keyfile bs=1024 count=4
chmod 400 /root/keyfile
cryptsetup luksAddKey /dev/sdb1 /root/keyfile
La phrase de passe existante est demandée pour autoriser l'ajout de cette nouvelle clé dans un key slot libre.
Éditer /etc/crypttab pour que le volume soit déverrouillé automatiquement au boot :
# <target name> <source device> <key file> <options> usbdisk /dev/sdb1 /root/keyfile luks,checkargs=ext2
Puis /etc/fstab, comme pour un montage classique, en pointant vers le périphérique
mappé :
/dev/mapper/usbdisk /mnt/usbdisk ext3 defaults 0 0
Gestion des clés
Changer la phrase de passe d'un key slot existant :
cryptsetup luksChangeKey /dev/mapper/volgroup1_vg-vol01_lv
Ajouter une seconde clé dans un slot précis (après avoir vérifié les slots déjà occupés avec
luksDump) :
cryptsetup luksDump /dev/mapper/volgroup1_vg-vol01_lv
cryptsetup luksAddKey --key-slot 1 /dev/mapper/volgroup1_vg-vol01_lv
Sauvegarde et restauration de l'en-tête LUKS
cryptsetup luksHeaderBackup /dev/mapper/volgroup1_vg-vol01_lv --header-backup-file /backup/vol01_lv-luks.backup
cryptsetup luksHeaderRestore /dev/mapper/volgroup1_vg-vol01_lv --header-backup-file /backup/vol01_lv-luks.backup
⚠️ L'en-tête LUKS (algorithme, salt, et les key slots chiffrés) est indispensable au
déverrouillage : s'il est corrompu ou écrasé, les données restent inaccessibles **même avec la
bonne phrase de passe**. Il est donc recommandé de faire une sauvegarde de l'en-tête juste après
le luksFormat initial (et de la stocker à part, sur un support différent de celui
qu'elle protège) — c'est le seul filet de sécurité en cas de corruption de l'en-tête ou de
key slot effacé par erreur.
Voir aussi
- Iptables — autre commande à la frontière sécurité/système