Chiffrage de partitions avec dm-crypt et luks Sous Gentoo Linux
Cet article présente la configuration d´une partition chiffrée sous Linux et particulièrement Gentoo.
Nous utiliserons LUKS avec dm-crypt.
Configuration du noyau
Le noyau doit être, ou avoir été, compilé avec les options suivantes.
Pour le noyau 2.6.27, ces deux options se trouvent dans la rubrique Device drivers –> Multiple devices driver support (RAID and LVM). Elles peuvent être légèrement renommées ou déplacées en fonction des versions du noyau Linux.
- CONFIG_BLK_DEV_DM (Device mapper support)
- CONFIG_DM_CRYPT (Crypt target support)
Pour le noyau 2.6.27, ces trois options se trouvent dans la rubrique Cryptographic API.
- CONFIG_CRYPTO_SHA256 (SHA224 and SHA256 digest algorithm)
- CONFIG_CRYPTO_SHA512 (SHA384 and SHA512 digest algorithms)
- CONFIG_CRYPTO_AES (AES cipher algorithms)
Installation du programme
Sous Gentoo, vous devez installer le programme cryptsetup qui dépend des programmes suivants :
- sys-fs/device-mapper
- dev-libs/libgcrypt
- dev-libs/libgpg-error
- sys-fs/udev
- sys-fs/cryptsetup-luks
- virtual/linux-sources
emerge -av sys-fs/cryptsetup
Effacement de la partition
Si la partition que vous souhaitez chiffrer contient des données personnelles, il est recommandé de l´effacer afin d´y laisser le moins de traces possibles des anciennes données.
En admettant que vous choisissiez de chiffrer la partition /dev/sda6, voici la commande qu´il vous faut entrer avec les droits root.
# dd if=/dev/zero of=/dev/sda6 count=979933
L´option count correspond ici au nombre de blocs de la partition. La commande fdisk peut vous l´indiquer.
# fdisk -l Device Boot Start End Blocks Id System /dev/sda6 19336 19457 979933+ 83 Linux
En cas de doute vous pouvez l´enlever mais alors dd tournera dans le vide après avoir affiché
dd: writing `/dev/sda6´: No space left on device
Vous devrez alors manuellement arrêter dd en faisant CTRL+C.
Chiffrement de la partition
En admettant que vous choisissiez de chiffrer la partition /dev/sda6, voici la commande qu´il vous faut entrer avec les droits root.
# cryptsetup luksFormat /dev/sda6 WARNING! ======== This will overwrite data on /dev/sda6 irrevocably. Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: Verify passphrase: Command successful.
Le programme exige de confirmer la commande en tapant « YES » et vous demande ensuite le mot de passe qui permet de débloquer la clé de chiffrement. Attention à ne pas l´oublier !
Ouverture de la partition chiffrée
Il faut débloquer la partition chiffrée pour pouvoir la faire apparaître en tant que partition classique. Ici, perso_jean est le nom que cette partition aura pour le système.
# cryptsetup luksOpen /dev/sda6 perso_jean Enter LUKS passphrase: key slot 0 unlocked. Command successful.
Nous pouvons vérifier que la partition a bien été débloquée.
# ls -l /dev/mapper/ total 0 lrwxrwxrwx 1 root root 16 Mar 6 2009 control -> ../device-mapper brw-r----- 1 root disk 254, 0 Mar 6 09:51 perso_jean
Création d´un système de fichiers sur la partition chiffrée
Une partition brute n´étant guère utile, il faut créer un système de fichiers sur cette dernière afin de pouvoir y déposer des données. Il a été choisi ici de l´ext3 mais on peut y mettre n´importe quel système de fichiers.
# mkfs.ext3 /dev/mapper/perso_jean
mke2fs 1.40.8 (13-Mar-2008)
Warning: 256-byte inodes not usable on older systems
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
61312 inodes, 244854 blocks
12242 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=251658240
8 block groups
32768 blocks per group, 32768 fragments per group
7664 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
Le système de fichiers a bien été créé.
Montage et utilisation du système de fichiers
Nous pouvons dès à présent monter le système de fichiers et l´utiliser.
Créons le point de montage qu´utilisera ce dernier. Nous n´avons pas besoin d´être root pour ce faire si nous ne le souhaitons pas vraiment. Entrons cette commande en tant que simple utilisateur, ici jean, si ce système de fichiers lui est destiné. Ce nouveau répertoire aura ainsi automatiquement le bon propriétaire.
jean $ mkdir /home/jean/perso
Pour le moment seul root a le droit de monter ce système de fichiers mais nous verrons plus tard comment faire autrement.
# mount /dev/mapper/perso_jean /home/jean/perso
Le système de fichiers est bien monté.
jean $ mount|grep perso_jean /dev/mapper/perso_jean on /home/jean/perso type ext3 (rw)
Nous pouvons voir sa capacité.
jean $ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/perso_jean
942M 18M 877M 2% /home/jean/perso
Et y placer des données.
jean $ cd /home/jean/perso jean $ echo "essai" > fichier_test jean $ cat fichier_test essai
Autoriser un simple utilisateur à monter le système de fichiers
Par défaut, seul le super-utilisateur root a le droit de monter un système de fichiers. Si nous souhaitons que l´utilisateur jean puisse le faire, il faut modifier le fichier /etc/fstab.
Placez-y une ligne telle que
/dev/mapper/perso_jean /home/jean/perso ext3 noauto,user 0 2
Il suffit alors à jean de taper
jean $ mount ~/perso
Simplifier le déverrouillage de la partition chiffrée
Sous Gentoo, on peut utiliser le fichier /etc/conf.d/dmcrypt afin d´automatiser le déverrouillage des partitions chiffrées.
Ce fichier contient de nombreux exemples commentés.
On peut par exemple insérer les deux lignes suivantes :
target=perso_jean source=/dev/sda6
Le système d´exploitation demandera le mot de passe lors du démarrage et la partition sera déverrouillée automatiquement.
On peut alors enlever l´option noauto de la ligne d´exemple du fichier /etc/fstab citée un peu plus haut afin que l´utilisateur jean n´ait rien à faire.
Remarques diverses
LUKS possède de nombreuses fonctionnalités qui ne peuvent entrer dans le cadre de cette courte présentation. Citons néanmoins :
- La possibilité de chiffrer la partition Swap (mémoire virtuelle)
- La possibilité de chiffrer la partition système. Il faut dans ce cas créer un Initrd, une image système minimale, mais attention, vous ne pourrez alors amorcer le système d´exploitation de votre serveur dédié si vous n´avez pas un accès physique à ce dernier, sauf en utilisant un système de contrôle graphique à distance (KVM).
Références et liens utiles
- DM-Crypt wiki : Encrypted Devices Using LUKS
- Gentoo Wiki : DM-Crypt with LUKS
- Gentoo Wiki : Root filesystem over LVM2, DM-Crypt and RAID
- Chiffrement d’un disque amovible (dm-crypt)
- Chiffrement du filesystem complet (dm-crypt, luks)
