====== Utiliser une partition cryptée sous Debian ======
{{tag> debian crypto}}
//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
#
/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~~