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

Mots-clefs :, , , , ,