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]>

Répondre à