1. Introduction
Pour des raisons évidentes de
sécurité je
chiffre les disques de mes machines. Certaines de ces machines sont utilisées par plusieurs personnes, et le partage des
passphrases n'est pas toujours aisé. Pour éviter de les partager j'utilise
LUKS qui va stocker plusieurs passphrases possibles pour déchiffrer le disque.
Voici comment j'ai procédé pour une Ubuntu Lucid Lynx 10.04.
2. Première phase : préparation et initialisation des partitions à chiffrer.
Il faut tout d'abord booter en mode "LiveCD" et ne pas lancer une installation directement.
Une fois le "LiveCD/USB" booté, lancez un terminal et passez en root
sudo su -
2.1 Partitionnement des disques
Il faut dans un premier temps partionner le disque, dans mon cas je fais 3 partitions :
- sda1 : une partition en NTFS pour Windows 7 (nul n'est parfait ;)
- sda2 : la partition pour /boot (seule partition de mon système qui ne sera pas chiffrée et on comprend pourquoi : cela constitue le principal talon d'Achile de ce système, il possible de mettre le /boot sur une clé USB par exemple)
- sda3 : la partition qui va contenir mon volume LVM chiffré.
Pour ça vous pouvez utiliser l'utilitaire
cfdisk :
2.2 Mise en place du chiffrement
Il faut initialiser la partition qui va recevoir le LVM chiffré avec des données aléatoires. Cela prend pas mal de temps, mais si vous avez une machine multi-core, on peut réduire le temps d'initialisation.
Pour initialiser (ici on a deux cores) :
PROC=2; (for((i=0;i<$PROC;i++)); do echo "process $i" >&2 ; cat /dev/urandom & done; cat /dev/random & ) |dd of=/dev/sda3 bs=1024
Quelques heures plus tard, on peut lancer l'installation ...
On commence par charger les modules kernel relatifs au chiffrement des disques :
modprobe aes
modprobe dm-crypt
Après on formate la partition chiffrée au format LUKS, il faut taper YES (en majuscule) et entrer votre passphrase (deux fois) :
cryptsetup luksFormat --cipher=aes --key-size=256 --hash=sha256 /dev/sda3
résultat de la commande :
WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
Il faut maintenant créer un "device" qui va faire le lien entre LVM et le système chiffré.
cryptsetup luksOpen /dev/sda3 diskcrypt
Entrez la passphrase cela donne :
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.
2.3 Mise en place de LVM
Le CD d'installation de la Lucid (l'officiel) ne contient pas LVM, il faut donc installer lvm2.
apt-get install lvm2
Nous allons créer respectivement un "physical volume" (PV), un "volume group" (VG) dans ce dernier et 3 "logical volumes" (LV) dans ce volume group.
Les trois LV sont nommés root pour "/" (taille 10 Go), swap pour le "swap" (2 Go) et home pour "/home" (la taille restante)
pvcreate /dev/mapper/diskcrypt
vgcreate vg-pc /dev/mapper/diskcrypt
lvcreate -n root -L 10000 vg-pc
lvcreate -n swap -L 2000 vg-pc
lvcreate -n home -l 100%FREE vg-pc
pour voir les tailles de chaque LV :
lvdisplay -C
résultat de la commande :
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
home vg-pc -wi-a- 28.69g
root vg-pc -wi-a- 9.77g
swap vg-pc -wi-a- 1.95g
On va initialiser les partitions pour présenter correctement à l'installer d'Ubuntu chaque LV.
Voici les 3 commandes à taper (à noter que j'utilise de l'EXT4) :
mkswap /dev/mapper/vg--pc-swap
mkfs.ext4 /dev/mapper/vg--pc-home
mkfs.ext4 /dev/mapper/vg--pc-root
Tout est prêt pour l'installation de la distribution.
3. Installation de la distribution
Lancez l'installation en cliquant sur l'icône située sur le bureau.
voici les 3 premières étapes :
Lorsque vous arrivez à l'étape 4 il faut sélectionner l'option qui permet de spécifier les partition manuellement :
et ensuite il faut pour la partition de boot et les LV choisir le point de montage, le type de partition (ici EXT4) et cocher le formatage.
Vous devez obtenir quelque chose comme ça :
Et vous pouvez terminer l'installation, mais surtout à la fin ne pas redémarrer la machine, car il faudra effectuer une dernière opération pour finaliser l'installation et permettre au système de démarrer avec le disque chiffré.
Fin de l'installation :
/!\ Attention bien choisir de continuer et non pas redémarrer /!\ :
4. Finir l'installation
Pour commencer on va se "chrooter" dans la distribution fraichement installée
Pour ça il faut taper dans le terminal sous l'utilisateur
root :
cd /mnt
mkdir root
mount -t ext4 /dev/mapper/vg--pc-root /mnt/root
mount -t ext3 /dev/sda2 /mnt/root/boot
mount -t ext4 /dev/mapper/vg--pc-home /mnt/root/home
chroot /mnt/root
mount -t proc proc /proc
mount -t sysfs sys /sys
Ensuite il faut installer les packages cryptsetup et lvms :
apt-get update
apt-get install cryptsetup lvm2
Après on éditer le fichier /etc/crypttab comme suit :
# <target name> <source device> <key file> <options>
diskcrypt /dev/sda3 none luks,retry=1,lvm=vg-pc
Il faut ajouter les modules pour l'initrd, on edite le fichier
/etc/initramfs-tools/modules et on ajoute les 3 modules essentiels pour le déchiffrement du disque.
aes
dm-crypt
sha256
Ensuite on régénère le fichier d'initrd :
update-initramfs -k all -c
Enfin on vérifie que les données sont bien prises en compte :
cd /tmp
mkdir verif
cd verif
zcat /boot/initrd.img-$(uname -r)|cpio -iv
cat /tmp/verif/conf/conf.d/cryptroot
le résultat est le suivant :
target=diskcrypt,source=/dev/sda3,key=none,rootdev,lvm=vg--pc-root,lvm=vg-pc
On peut désormais terminer :
umount /proc
umount /sys
sync
exit
umount /mnt/root/boot
umount /mnt/root/home
umount /mnt/root
Et vous pouvez redémarrer ...
Au boot le système vous demande la passphrase :
Et le système démarre pour avoir enfin la mire de login :