Utiliser une partition cryptée sous Debian

par julien - mars 2007

Ce petit article décris la mise en place d'une partition cryptée comme répertoire home sur une debian etch. Le système de crypto utilisé est dm_crypt (http://www.saout.de/misc/dm-crypt/). Il s'agit d'un système de pseudo device intégré au noyau qui fait interface entre le device classique (/dev/hda, par exemple) et le système de fichier. Toutes les actions effectuées sur le système de fichier sont ainsi cryptées par le pseudo device avant d'etre écrites sur le device réel.

Config du noyau

Toutes les versions du noyau depuis au moins la 2.6.4 incluent par défaut le support de dm_crypt. DM_CRYPT est souvent compilé comme module par défaut dans les distributions. Vérifiez par vous même :

$ grep DM_CRYPT /boot/config-2.6.17.7
CONFIG_DM_CRYPT=m

Il faut également s'assurer du support de l'algorithme de cryptographie symétrique AES (Advanced Encryption Standard, la référence internationale pour la crypto symétrique). Pour les fana de crypto, rien de tel que le document officiel de spécification :p http://csrc.nist.gov/encryption/aes/rijndael/Rijndael.pdf

modinfo nous confirme le support d'AES dans le noyau

#grep AES /boot/config-2.6.17.7
CONFIG_CRYPTO_AES_586=m

# modinfo /lib/modules/`uname -r`/kernel/arch/i386/crypto/*
filename:       /lib/modules/2.6.17.7/kernel/arch/i386/crypto/aes-i586.ko
alias:          aes
author:         Fruhwirth Clemens, James Morris, Brian Gladman, Adam Richter
license:        Dual BSD/GPL
description:    Rijndael (AES) Cipher Algorithm, i586 asm optimized
depends:
vermagic:       2.6.17.7 preempt mod_unload 386 gcc-4.0

note : attention a l'architecture utilisée dans le chemin, ici i386

Si vous n'avez pas le support de DM_CRYPT ou d'AES, il ne vous reste plus qu'a recompiler votre noyau avec make-kpkg :)

Après, il suffit de charger les modules aes, dm_mod et dm_crypt et de les ajouter dans /etc/sysctl.conf pour qu'ils soit chargés à chaque démarrage.

Quelques packages

DM_CRYPT a besoin de 2 outils majeurs : dmsetup et cryptsetup :

dmsetup permet de manipuler les pseudo device :

 The Linux Kernel Device Mapper is the LVM (Linux Logical Volume Management)
 Team's implementation of a minimalistic kernel-space driver that handles
 volume management, while keeping knowledge of the underlying device layout
 in user-space.  This makes it useful for not only LVM, but EVMS, software
 raid, and other drivers that create "virtual" block devices.

et cryptsetup est une interface pour manipuler le support de la crypto dans le noyau

 Since kernel 2.6.4, encrypted filesystem support is provided by the device
 mapper target dm-crypt. This utility provides a command-line interface for
 configuring this facility. It has integrated support for LUKS.

on fais donc un petit apt-get install dmsetup cryptsetup pour installer les packages.

Une fois ces packages installer, on peut vérifier que la pseudo interface de controle est créée :

# ls -l /dev/mapper/control
crw-rw---- 1 root root 10, 63 2007-03-07 21:51 /dev/mapper/control

Creation de la partition

cryptsetup est donc l'interface qui permet de manipuler les partitions cryptées. La commande create va nous permettre d'initialiser le système :

# cryptsetup -y create home /dev/hda5
Enter passphrase:
Verify passphrase:

Simple ! TROP simple ! l'argument -y nous permet de vérifier la passphrase, le reste est trivial !

La pseudo interface est créé dans /dev/mapper/home, la dernière partie du chemin étant le nom que l'on choisi à la création. On peut donc créer un système de fichier sur cette pseudo interface :

#mkfs.xfs /dev/mapper/home

et l'ajouter dans le fstab

# <file system>         <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/home        /home           xfs     defaults        0       1

Le démarrage

Forcément, la partition ne se montera pas si vous ne fournissez pas le mot de passe ! Il faut donc créer un script dans /etc/rc2.d qui sera lancé avant le lancement du serveur X :

#vim /etc/rc2.d/S50cryptstart
#! /bin/sh
cryptsetup create home /dev/hda5
mount -a

Et oui, c'est la même commande que pour la création. Il demande le mot de passe une fois et créé le pseudo device. Le mount -a permet de charger les partitions par defaults qui ne sont pas encore chargées (attention si vous en avez plusieurs).

Beer time

Youhou, ca marche et c'est crypté ! Un pti test montre des résultats plutôt bons :

# hdparm -tT /dev/mapper/homejulien

/dev/mapper/homejulien:
 Timing cached reads:   282 MB in  2.01 seconds = 140.32 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device
 Timing buffered disk reads:   34 MB in  3.00 seconds =  11.33 MB/sec
HDIO_DRIVE_CMD(null) (wait for flush complete) failed: Inappropriate ioctl for device

J'ai pas creusé le pourquoi des messages ioctl, a mon avis c'est pas méchant mais si quelqu'un à la soluce….

Note : Ca fait maintenant plusieurs mois que j'utilise ce système sur mon home et il marche parfaitement :)

Et pour les sources, merci à cep sur le forum ubuntu-fr pour son article et aussi à Adamgomaa pour ce howto ultra fournit : https://help.ubuntu.com/community/EncryptedFilesystemHowto

~~DISCUSSION~~

fr/ressources/articles/partition_cryptee.txt · Last modified: 2011/03/16 01:41 (external edit)
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0