LUKS (Linux Unified Key Setup) chiffre un disque entier au niveau bloc : sans la passphrase, les données sont illisibles, même si le disque est volé. L'outil standard est cryptsetup. Ce guide montre comment chiffrer un volume avec LUKS2, gérer plusieurs passphrases, sauvegarder l'en-tête (vital), et déverrouiller au démarrage via /etc/crypttab ou un serveur réseau (NBDE). Pour administrateurs intermédiaires à avancés, sur Debian, Ubuntu ou RHEL. Commandes testées sur AlmaLinux 10.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Chiffrer un volume avec
cryptsetup luksFormat(LUKS2) - Ouvrir, formater et monter le volume déchiffré
- Gérer les passphrases et sauvegarder l'en-tête
- Déverrouiller au boot avec
crypttab, et automatiquement avec Clevis/Tang
Prérequis
Section intitulée « Prérequis »- Un serveur Linux avec
sudoet le paquetcryptsetup - Un disque, une partition ou un fichier conteneur dédié (le chiffrement écrase son contenu)
- Savoir identifier un disque et le monter
LUKS1 ou LUKS2
Section intitulée « LUKS1 ou LUKS2 »Depuis cryptsetup 2.1, le format par défaut est LUKS2, et c'est celui à utiliser. Il apporte un en-tête redondant (stocké en double, donc plus résistant à la corruption) et la dérivation de clé Argon2id, conçue pour résister au cassage par GPU, là où LUKS1 se limite à PBKDF2. LUKS2 porte aussi jusqu'à 32 emplacements de clé (key slots) contre 8 pour LUKS1.
Chiffrer un volume
Section intitulée « Chiffrer un volume »L'ordre est immuable : formater, ouvrir, créer le système de fichiers sur le mapping, monter. Le système de fichiers se met toujours sur /dev/mapper/..., jamais sur le disque brut.
-
Formater le volume en LUKS2. L'opération demande une confirmation (
YES) et la passphrase.Fenêtre de terminal sudo cryptsetup luksFormat --type luks2 /dev/sdXLes valeurs par défaut sont sûres et confirmées par
luksDumpci-dessous : chiffrementaes-xts-plain64, clé de 512 bits (soit AES-256, la clé XTS étant doublée), dérivation Argon2id. -
Inspecter l'en-tête pour vérifier le format.
Fenêtre de terminal sudo cryptsetup luksDump /dev/sdXVersion: 2Keyslots:0: luks2Cipher: aes-xts-plain64Cipher key: 512 bitsPBKDF: argon2id -
Ouvrir le volume : il apparaît sous
/dev/mapper/.Fenêtre de terminal sudo cryptsetup open /dev/sdX coffre -
Créer le système de fichiers et monter le mapping.
Fenêtre de terminal sudo mkfs.ext4 /dev/mapper/coffresudo mkdir -p /mnt/coffresudo mount /dev/mapper/coffre /mnt/coffre
Pour fermer le volume après démontage : sudo umount /mnt/coffre && sudo cryptsetup close coffre. Les données redeviennent illisibles sans la passphrase.
Gérer les passphrases
Section intitulée « Gérer les passphrases »LUKS2 stocke jusqu'à 32 passphrases indépendantes dans des key slots : pratique pour donner un accès personnel à plusieurs administrateurs, puis révoquer l'un d'eux sans changer les autres.
sudo cryptsetup luksAddKey /dev/sdX # ajouter une passphrase (une passphrase valide est demandée)sudo cryptsetup luksChangeKey /dev/sdX # remplacer une passphrasesudo cryptsetup luksRemoveKey /dev/sdX # supprimer la passphrase saisiesudo cryptsetup luksKillSlot /dev/sdX 2 # supprimer le slot numéro 2 (autre passphrase requise)sudo cryptsetup luksDump /dev/sdX # voir les slots occupésPour un déverrouillage automatisé, on peut enrôler un fichier-clé plutôt qu'une passphrase :
sudo dd if=/dev/urandom of=/root/luks.key bs=512 count=4sudo chmod 0400 /root/luks.keysudo cryptsetup luksAddKey /dev/sdX /root/luks.keySauvegarder l'en-tête (vital)
Section intitulée « Sauvegarder l'en-tête (vital) »L'en-tête LUKS contient les clés chiffrées : s'il est corrompu, toutes les données sont perdues, même avec la bonne passphrase. Une écriture accidentelle sur le début du disque (un mkfs malheureux) suffit. Sauvegardez-le hors-ligne :
sudo cryptsetup luksHeaderBackup /dev/sdX --header-backup-file /secours/header.imgSur LUKS2, ce fichier fait 16 Mio. Restauration : cryptsetup luksHeaderRestore.
Déverrouiller au démarrage : /etc/crypttab
Section intitulée « Déverrouiller au démarrage : /etc/crypttab »Pour qu'un volume chiffré soit disponible au boot, déclarez-le dans /etc/crypttab, qui crée le mapping /dev/mapper/, puis montez ce mapping via /etc/fstab (jamais le disque brut).
Récupérez l'UUID du volume chiffré, puis ajoutez la ligne (quatre champs : nom, périphérique, clé, options) :
sudo cryptsetup luksUUID /dev/sdXcoffre UUID=5cda3d09-88cd-4c5e-941f-347749dd8025 none luksLa clé none demande la passphrase interactivement au démarrage ; remplacez-la par un chemin de fichier-clé pour un déverrouillage sans saisie. Le côté /etc/fstab monte ensuite le mapping :
/dev/mapper/coffre /mnt/coffre ext4 defaults,nofail 0 2Après modification, régénérez l'initramfs pour que le déverrouillage fonctionne tôt au boot :
sudo update-initramfs -usudo dracut --forceDéverrouillage réseau automatique (NBDE)
Section intitulée « Déverrouillage réseau automatique (NBDE) »Saisir une passphrase à chaque démarrage est impraticable sur un parc de serveurs. Le NBDE (Network-Bound Disk Encryption) déverrouille automatiquement un volume tant que la machine atteint un serveur Tang sur le réseau, sans jamais transmettre la clé. Le client est Clevis, le serveur Tang ; l'état est stocké dans l'en-tête LUKS2.
Sur le serveur, Tang s'active comme un service :
sudo systemctl enable tangd.socket --nowSur la machine à chiffrer, liez le volume au Tang. Au prochain boot, il s'ouvrira seul s'il joint le serveur :
sudo clevis luks bind -d /dev/sdX tang '{"url":"http://tang.interne.lan"}'sudo clevis luks list -d /dev/sdXVariante sans réseau : lier le volume à la puce TPM2 de la machine (clevis luks bind -d /dev/sdX tpm2 '{"pcr_ids":"7"}'). On peut même exiger Tang ET TPM2 simultanément via la pin sss. La sécurité du NBDE repose sur le fait qu'un attaquant a besoin du disque physique et de l'accès au réseau du Tang.
Performance et TRIM
Section intitulée « Performance et TRIM »Avec l'accélération AES-NI présente sur tout CPU moderne, le surcoût du chiffrement est négligeable devant la vitesse d'un disque. Mesurez-le sur votre matériel :
cryptsetup benchmarkPar défaut, le TRIM/discard est désactivé sur les volumes chiffrés. L'activer (cryptsetup open --allow-discards ou l'option discard dans crypttab) améliore les performances et la longévité d'un SSD, mais révèle au niveau physique quels blocs sont utilisés (type de système de fichiers, espace occupé). Sur un système sensible, laissez-le désactivé ; activez-le en connaissance de cause.
Pièges à éviter
Section intitulée « Pièges à éviter »- Perte de l'en-tête = perte totale : sauvegardez-le hors-ligne, c'est non négociable.
- LUKS protège au repos seulement : une fois le volume déverrouillé et monté, les fichiers sont en clair pour tout processus autorisé. LUKS protège contre le vol du disque, pas contre un accès au système en marche.
- Système de fichiers sur le mauvais device : toujours
mkfssur/dev/mapper/..., jamais sur le disque chiffré brut (cela détruirait l'en-tête). - Bloc contre fichier : LUKS chiffre tout le volume (idéal disque, partition, swap). Pour chiffrer un sous-dossier synchronisé dans un cloud, un outil par fichier comme
gocryptfsest plus adapté. ÉvitezeCryptfs, déprécié. /bootchiffré et GRUB : un ancien GRUB ne gère pas Argon2id ; pour une racine chiffrée, validez le couple bootloader / version sur votre distribution.
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
No key available with this passphrase | Mauvaise passphrase ou mauvais slot | Essayer une autre passphrase, vérifier luksDump |
| Volume non déverrouillé au boot | crypttab/initramfs non régénéré | Corriger crypttab, update-initramfs/dracut |
Device coffre already exists | Mapping déjà ouvert | cryptsetup close coffre avant de réouvrir |
| Données illisibles après incident | En-tête corrompu | cryptsetup luksHeaderRestore depuis la sauvegarde |
| Lenteur à l'ouverture | Argon2id consomme RAM/CPU | Normal (anti-brute-force) ; ajuster --pbkdf-memory à la création |
À retenir
Section intitulée « À retenir »- LUKS2 est le format par défaut (Argon2id, en-tête redondant, 32 slots) : utilisez-le.
- L'ordre est format → open → mkfs sur le mapping → mount → close.
- Les défauts sont sûrs : aes-xts-plain64, clé 512 bits (AES-256), Argon2id.
- Sauvegardez l'en-tête (
luksHeaderBackup, 16 Mio) hors-ligne : sa perte = perte totale. - Déverrouillage au boot via
/etc/crypttab(par UUID) +fstab+ initramfs ; automatique avec Clevis/Tang (NBDE) ou TPM2. - LUKS protège au repos : une fois monté, les données sont en clair pour le système.