Adaptation française : Nicolas Provost
Relecture de la version française: Deny
Copyright © 2007 Kapil Hari Paranjape
Copyright © 2007 Nicolas Provost
Copyright © 2007 Deny
Article paru dans le n°140 de la Gazette Linux de juillet 2007.
Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Table des matières
Il est dorénavant possible de mettre en place un cryptage de données avec le gestionnaire de volumes (LVM) durant l'installation de la nouvelle version de Debian « etch ». Étant donné les derniers faits divers relatant des vols d'ordinateurs portables et donc de données personnelles, il n'est probablement pas trop paranoïaque de vouloir crypter ses disques. Et si quelqu'un me dit le contraire, c'est peut-être qu'il s'intéresse à mes données personnelles !
Une méthode serait de réinstaller Debian
sur
mon portable à partir d'un cédérom d'installation et après avoir sauvegardé
toutes mes données. Mais il est vrai que la manoeuvre manquerait d'intérêt
si je devais reconfigurer mon portable totalement. Voici donc une autre
méthode.
Voici la configuration proposée, peut-être un peu inhabituelle.
Depuis que je connais dmsetup
et le gestionnaire
de volumes logiques de Linux
(Device Mapper), mon disque n'a que deux
partitions :
/dev/hda1
qui est une
petite partition /boot
(50-100
Mo)
/dev/hda2
, partition
occupant tout le reste du disque gérée par le gestionnaire de
volumes
Cela permet de redimensionner le système de fichiers au besoin.
Depuis Debian « Sarge » j'utilise le
gestionnaire de volumes logiques Linux
(LVM) à la place de
dmsetup
pour gérer cet espace. Il est plus facile
avec LVM d'éviter les erreurs pendant la configuration
des disques.
Si votre système est plus « standard » avec plusieurs partitions dédiées à des utilisations bien définies, ne vous inquiétez pas, votre machine pourra être configurée de la même façon.
Pour continuer, je dois supposer que vous disposez d'un disque capable de stocker une copie de votre système entier. Ce n'est pas le cas ? Alors utilisez une partition de votre disque pouvant contenir une copie de tout votre système.
Si vous utilisez tout votre disque et que vous n'avez pas de sauvegarde alors arrêtez de lire cet article, allez acheter un disque et revenez lorsque vous êtes prêt à sauvegarder votre système !
Supposons donc que /dev/sda
contienne suffisamment d'espace libre pour stocker une copie entière de
votre système. Probablement, par exemple, un disque externe
USB qui demande une configuration un peu particulière
pour pouvoir s'amorcer sur ce disque.
La première étape pour créer une sauvegarde amorçable est d'installer les outils utiles après le redémarrage de la machine :
apt-get install cryptsetup lvm2 initramfs-tools grub
apt-get install linux-image-2.6-686
En particulier, nous utiliserons sur cette sauvegarde le noyau et le
système d'amorçage Debian
(grub et initrd). L'ordre de ces
commandes d'installation est important pour être certain que les scripts
qui gèrent les disques cryptés et/ou supervisés par LVM
soient installés dans initrd
. Si le
noyau Debian d'origine est déjà installé,
exécutez la commande suivante à la place de la deuxième ligne
ci-dessus :
update-initramfs -u
Ensuite, on partitionne /dev/sda
comme expliqué au début de cet
article :
/dev/sda1
est une
partition suffisamment grande pour contenir /boot
.
/dev/sda2
pour le reste
de l'espace.
On crée un système de fichiers standard
ext2 sur /dev/sda1
:
mke2fs -L Boot /dev/sda1
puis on prépare l'autre partition comme partition LVM cryptée :
crypsetup luksFormat /dev/sda2
Une phrase d'authentification est demandée pour pouvoir créer une partition LUKS (Linux Unified Key Setup =cryptage de volumes pour systèmes Linux). L'en-tête d'une partition LUKS contient des informations indiquant comment la partition peut être décryptée à l'aide de la clef générée par cette phrase d'authentification.
Cette phrase d'authentification est très importante. Si vous l'oubliez, vous pouvez perdre toutes les données de votre partition ! Si quelqu'un d'autre la connait, cette personne aura accès à toutes les données de cette partition.
Ainsi, la marquer sur un « post-it » collé sur l'écran serait certainement utile... pour d'autres ! ou bien la sauvegarder sur la partition cryptée en question serait encore mieux. Si vous décidez de ne pas suivre ces conseils stupides, alors il faut conserver cette phrase de protection dans plusieurs endroits sécurisés pour éviter de la perdre.
On peut maintenant utiliser cette partition à l'aide de la commande :
cryptsetup luksOpen /dev/sda2 backup
On crée ainsi /dev/mapper/backup
en tant que
block device (périphérique par blocs)
permettant l'accès transparent à la partition cryptée. Nous allons le
préparer avec LVM2. Les commandes :
pvcreate /dev/mapper/backup
vgcreate vgb /dev/mapper/backup
génèrent un groupe de volumes LVM appelé vgb qui contiendra les différents systèmes de fichiers. Les commandes comme :
lvcreate -n root -L 3G vgb
lvcreate -n swap -L 2G vgb
lvcreate -n home -L 10G vgb
peuvent être utilisées pour créer les périphériques bloc /dev/vgb/root
, que l'on peut préparer comme
d'habitude :
mkswap -L Swap /dev/vgb/swap
mke2fs -j -L Root /dev/vgb/root
mke2fs -j -L Home /dev/vgb/home
La suite des opérations est connue mais la voici néanmoins. On crée d'abord l'arborescence destination avec des commandes comme :
mkdir /tmp/target
mount /dev/vgb/root /tmp/target
mkdir /tmp/target/{boot,home}
mount /dev/vgb/home /tmp/target/home
mount /dev/sda1 /tmp/target/boot
puis on copie les fichiers (sans boucle) :
find . -wholename '/tmp/target' -prune -o -print | cpio -pdum /tmp/target
Pendant ce temps vous pouvez allez chercher votre tasse de café. A moins que vous ne préfériez remplacer -pdum par -pdumv pour tout voir et rester devant votre écran !
Une fois la copie achevée, vérifiez que /tmp/target
contient bien
tous les fichiers souhaités. La copie cryptée de
votre système est terminée.
La première étape consiste à installer grub dans
le secteur de démarrage de /dev/sda
:
grub-install --root-directory /tmp/target /dev/sda
Vous devrez probablement modifier le fichier
device.map
créé par grub :
echo '(hd0) /dev/sda' > /tmp/target/boot/grub/device.map
Il faut également que /etc/fstab
corresponde à la nouvelle
arborescence de fichiers :
pushd /tmp/target/etc mv fstab fstab.orig cat > fstab <<EOF LABEL=Root / ext3 defaults,errors=remount-ro 0 1 LABEL=Swap swap swap defaults 0 0 LABEL=Boot /boot ext2 defaults 0 1 LABEL=Home /home ext3 defaults 0 2 EOF popd
Puis précisez la façon dont le disque est crypté :
cat >> /tmp/target/etc/crypttab <<EOF
backup /dev/sda2 none luks
EOF
et enfin modifiez les instructions de démarrage de
grub. Pour cela éditez d'abord le fichier /tmp/target/boot/grub/menu.lst
, en
particulier la ligne commençant par # kopt= qui doit
être complétée ainsi :
# kopt=ro root=/dev/mapper/vgb-root cryptopts=source=/dev/sda2,target=backup,lvm=vgb-root rootdelay=10
Ici, des sauts de ligne ont été ajoutés pour la lisibilité, mais
toutes ces options doivent être sur la même ligne.
L'option rootdelay=10
donne 10 secondes au gestionnaire
de boot Debian pour reconnaître le disque
USB, ce peut être plus ou moins selon votre
système.
Vous pouvez également ajouter d'autres options comme
vga=791
pour activer l'affichage VESA,
etc., mais toujours sur la même ligne.
Ensuite notifiez ces changements de configuration au processus de démarrage grub :
chroot /tmp/target update-grub
puis démontez les disques :
umount /tmp/target/home
umount /tmp/target/boot
umount /tmp/target
et désactivez LVM :
vgchange -an vgb
ainsi que l'accès à la partition cryptée :
cryptsetup remove backup
Vous pouvez maintenant débrancher le disque USB.
Vous disposez à présent d'une sauvegarde amorçable cryptée de votre système. Il est possible que votre portable ne puisse pas amorcer sur un périphérique USB ; dans ce cas vous devrez créer une « disquette de démarrage grub » si vous voulez pouvoir amorcer sur votre sauvegarde cryptée.
C'est assez facile à réaliser en utilisant rsync que l'on installe ainsi :
apt-get install rsync
La commande à utiliser pour synchroniser la sauvegarde est du type :
rsync -aW --exclude=/tmp/target \
--exclude=/boot \
--exclude=/etc/fstab \
/. /tmp/target/.
Vous devez également éxécuter la commande
grub-install si vous n'excluez pas /boot
de la mise à jour. Vous pouvez enfin
créer un script pour monter la sauvegarde, lancer
rsync
puis démonter la sauvegarde.
Bien entendu, tout cela ne vous met pas à l'abri d'une perte de
données personnelles si votre portable est volé. Vous devez donc
maintenant redémarrer votre machine et booter sur votre sauvegarde
cryptée ; de toute façon il faut bien que vous testiez votre sauvegarde !
Puis suivez à nouveau les étapes ci-dessus en remplaçant
/dev/sda
par /dev/hda
. Durant le
processus, vous pouvez également remplacer les mots
backup
par laptop
et
vgb
par vg
pour éviter les
confusions. Dans le cas d'un disque dur interne, l'option
rootdelay
peut être supprimée.
L'utilisation de LVM a notamment comme avantage de permettre des sauvegardes plus fidèles en réalisant une « image » (snapshot) de votre système plutôt qu'une copie alors que le système est en activité.
Il est vraiment nécessaire de remercier les programmeurs qui ont développé les logiciels permettant de réaliser ces opérations. Dans la plupart des cas, le code source, très lisible, peut être considéré comme une véritable documentation. Merci également au lecteur qui testera ce qui précède.
Kapil Hari Paranjape a l'âme d'un « hacker » depuis l'époque des cartes perforées. Plus précisément, cela veut dire qu'il n'a jamais écrit de « véritable » programme. Il s'est contenté d'expérimenter des programmes écrits par d'autres. Après avoir joué avec
Minix
en 1990-91, il a pensé écrire son premier logiciel — un « authentique » noyau*nix
pour la classe d'ordinateurs x86. Heureusement pour lui, un certain Linus Torvalds l'a devancé — lui évitant ainsi la peine (une fois de plus) d'écrire effectivement du code. En signe de gratitude éternelle, il a passé beaucoup de temps à expérimenter et promouvoir le systèmeLinux
et le projet GNU depuis lors, au grand dam de la plupart de son entourage, qui pense qu'il devrait se concentrer sur la recherche en mathématiques — qui est son gagne-pain. L'interaction entre les programmes s'exécutant réellement, ce qui peut être calculé en théorie et ce dont on peut prouver l'existence, continuent de le fasciner.
L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.
Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.
Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.