Voilà quelques notes prises lors de la création d'une partition cryptée avec le nouveau dispositif dm-crypt. En espérant que cela servira à d'autres (une version HTML se trouve sur http://arbornet.org/~fluor/misc/fluor-dmcrypt_micro_howto.html - ainsi que d'éventuelles mises à jour).
Si réactions, merci de me Cc:, car je ne suis pas (plus) abonné à debian-user-french. MICRO-HOWTO: CRYPTER UN SYSTÈME DE FICHIERS AVEC DM-CRYPT AUTEUR mike dentifrice [EMAIL PROTECTED] http://arbornet.org/~fluor/ DOCUMENT Version: 0.1 Date: 2004-03-28 Licence: Creative Commons NonCommercial-ShareAlike 1.0 http://creativecommons.org/licenses/nc-sa/1.0/ BLAH A partir du noyau 2.6.4 apparaît dm-crypt, qui sonne le glas de cryptoloop. Pour celleux qui veulent se mettre à la page (et en auront été préalablement convaincu-e-s par la lecture assidue des divers documents théoriques et techniques dispos sur le sujet, que je ne vais pas paraphraser ici), voici comment procéder, en trois coups de cuiller à pot. Il s'agit ici de crypter une partition /home chiffrée avec l'algorithme AES, sous Debian GNU/Linux en version testing (sarge). Testé sur powerpc (idem pour i386). C'est facile, et ça marche parfaitement. HOWTO - réserver une partition pour /home lors du partitionnement du disque dur. Par la suite, il est plus simple de ne pas la monter avant d'avoir mis en place le mécanisme de crypto, et d'utiliser un /home temporaire situé sur la partition racine. - télécharger les sources du noyau Linux 2.6.4 sur kernel.org (`wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.4.tar.bz2`). - configurer le noyau (`make menuconfig`), en prenant soin d'intégrer le support de device-mapper et dm-crypt, ainsi que l'algorithme de chiffrement AES, en dur (pas en modules): dans "Device Drivers" -> "Multi-device support (RAID and LVM)", sélectionner "Device mapper support" puis "Crypt target support"; dans "Cryptographic Options", sélectionner "AES cipher algorithms". - compiler le noyau (`make-kpkg kernel_image`) et l'installer (`dpkg -i ../kernel-image-2.6.4_10.00.Custom_powerpc.deb` dans mon cas). - installer l'outil de pilotage du device-mapper en userspace (`apt-get install dmsetup`). Si le système n'utilise ni devfs ni udev, en télécharger aussi les sources sur ftp://sources.redhat.com/pub/dm/, les désarchiver (`tar xvvfj device-mapper.1.00.08.tgz`), et exécuter le script "device-mapper.1.00.08/scripts/devmap_mknod.sh" (pour créer le périphérique /dev/mapper/control). - télécharger les sources de cryptsetup (`wget http://www.saout.de/misc/dm-crypt/cryptsetup-0.1.tar.bz2`), le compiler et l'installer (`./configure ; make ; sudo make install`). Le script 'configure' indiquera probablement des librairies manquantes. Dans ce cas, installer les paquetages correspondants (libgcrypt7-dev, libcppopt-dev, notamment). - télécharger les sources de hashalot (sur http://www.paranoiacs.org/~sluskyb/hacks/hashalot/), le compiler et l'installer (là encore, avec le trio classique `./configure ; make ; sudo make install`). - adapter lilo ou grub, et rebooter sur le noyau 2.6.4. - vérifier que le périphérique de contrôle de device-mapper existe (`ls -l /dev/mapper/control`), et que l'algo de chiffrement AES est supporté (`cat /proc/crypto`). - créer un volume 'home' associé à la partition à crypter (dans mon cas, '/dev/hda4'): `sudo cryptsetup -y create home /dev/hda4`. Entrer une phrase de passe, et la confirmer (confirmation demandée par le paramètre -y). Si tout se passe bien, '/dev/mapper/home' permet désormais d'écrire/crypter et lire/décrypter sur '/dev/hda4', avec l'algorithme AES (sélectionné par défaut, -c pour changer), une clef de 256 bit (taille par défaut, -s pour changer) hashée avec ripemd160 (par défaut si hashalot est installé, -h pour changer). - créer un système de fichiers sur '/dev/mapper/home' (`sudo mkfs.ext3 /dev/mapper/home`), puis le monter (`sudo mount /dev/mapper/home /mnt`). Un répertoire 'lost&found' devrait apparaître dans '/mnt'. - copier le contenu éventuel de '/home' sur la partition cryptée (`cp -ax /home/* /mnt/`), puis la démonter (`sudo umount /mnt`), pour la remonter à son emplacement final (`sudo mount /dev/mapper/home /home`). - éditer '/etc/fstab' pour que cette partition soit automatiquement montée sur '/home' au prochain démarrage, en ajoutant la ligne '/dev/mapper/home /home ext3 defaults,user,exec,suid 0 1'. - pour que son contenu soit accessible, il faut au préalable, à chaque démarrage, recréer le mapping avec cryptsetup. Pour ce faire, créer un petit script 'cryptinit' dans '/etc/init.d', contenant ces lignes (en changeant le chemin vers l'exécutable 'cryptsetup', si différent): #!/bin/bash if [ -b /dev/mapper/home ] ; then /usr/bin/cryptsetup remove home fi /usr/bin/cryptsetup -h ripemd160 create home /dev/hda4 - rendre le script exécutable (`chmod +x /etc/init.d/cryptinit`) et s'assurer que celui-ci sera lancé suffisamment tôt dans la procédure d'initialisation (avant que les partitions listées dans '/etc/fstab' ne soient montées), mais après la configuration du clavier (à moins de vouloir taper sa phrase de passe en qwerty :P). Pour ce faire, établir un lien symbolique de '/etc/rcS.d/S08cryptinit' vers '/etc/init.d/cryptinit' (`cd /etc/rcS.d ; ln -s ../init.d/cryptinit S08cryptinit`). - redémarrer, taper sa phrase de passe, et voilà, c'est la joie! VRAC - bien entendu, si vous n'utilisez pas 'sudo' (mais franchement, vous devriez :P), exécutez les lignes de commandes précédées par `sudo` en tant que root. - si vous entrez une mauvaise phrase de passe, cryptsetup ne bronchera pas et affichera "/dev/mapper/home is active" si vous l'interrogez avec `sudo cryptsetup status home`, mais vous ne pourrez pas monter la partition et accéder à vos données. Dans ce cas, il faut supprimer le mapping erronné, et recommencer (`sudo cryptsetup remove home`, puis `sudo cryptsetup create home /dev/hda4`). Pas de panique, donc, seul le mapping change, ce qui ne suppose aucune perte de données. LIENS http://www.saout.de/misc/dm-crypt/ http://www.saout.de/tikiwiki/ http://kerneltrap.org/node/view/2433 -- mike dentifrice <[EMAIL PROTECTED]>