[lfs-fr] r1076 - trunk/astuces

jmengual at linuxfromscratch.org jmengual at linuxfromscratch.org
Mar 29 Déc 11:27:28 PST 2009


Author: jmengual
Date: 2009-12-29 20:27:28 +0100 (Tue, 29 Dec 2009)
New Revision: 1076

Added:
   trunk/astuces/crypt-rootfs-fr.txt
Log:
Traduction non relue de l'astuce, 1ere version


Added: trunk/astuces/crypt-rootfs-fr.txt
===================================================================
--- trunk/astuces/crypt-rootfs-fr.txt	                        (rev 0)
+++ trunk/astuces/crypt-rootfs-fr.txt	2009-12-29 19:27:28 UTC (rev 1076)
@@ -0,0 +1,457 @@
+AUTEUR : Lars Bamberger <Lars.Bamberger at gmx dot de>
+
+TRADUCTEUR : Emmanuel Trillaud <etrillaud at gmail dot com>
+
+DATE : 2009-11-20
+
+LICENCE : GNU Free Documentation License Version 1.2
+
+SYNOPSIS : Comment chiffrer un système de fichier y compris rootfs.
+
+DESCRIPTION :
+Ce document décrit un moyen de chiffrer votre disque dur, y compris le système
+de fichier racine. Il est destiné aux utilisateurs expérimentés et tente
+d'éviter les difficultés du chiffrement du système de fichier racine de façon
+direct.
+
+
+PREREQUIS :
+Cette astuce nécessite une connaissance suffisante de BeyongLinuxFromScratch
+ainsi que des logiciels assez à jour. Vous devez être à l'aise pour
+construire un logiciel, trouver, lire et comprendre toute autre documentation
+pertinente. Vous devez savoir comment configurer un initramfs. (Voir
+'filesystems/ramfs-rootfs-initramfs.txt' dans la documentation du kernel.)
+Vous devez être au courant de pourquoi vous voudriez un système de fichier
+chiffré et vous devez comprendre les menaces contre lesquelles vous essayer de
+vous protéger. Vous devez aussi comprendre les insuffisances et les problèmes
+de sécurité si vous suivez les instructions contenues dans cette astuce.
+
+Vous devez avoir une sauvegarde de votre système dans un endroit sûr! Ceci
+inclus un périphérique de démarrage alternatif.
+
+Vous DEVEZ ABSOLUMENT LIRE ET COMPRENDRE CETTE ASTUCE AVANT DE MODIFIER VOTRE
+SYSTÈME.
+
+
+ASTUCE :
+
+1. À Propos
+===========
+
+Cette astuce parle du chiffrement de toutes les partitions de votre disque dur
+sauf une en utilisant LUKS pour dm-crypt. Nous démarrerons à partir d'une
+petite partition non chiffrée en utilisant initramfs pour déchiffrer rootfs
+(système de fichier racine).  Cette astuce suppose la présence d'un petite
+partition disponible servant à démarrer (10 MB devraient être suffisants.)
+
+
+2. Logiciels nécessaires et dépendances
+=======================================
+
+2.1 Logiciels présents dans BLFS
+
+Vous avez besoin d'installer 'Popt', car 'cryptsetup' en dépend.Vous aurez
+également besoin de 'uuencode' pour créer les fichiers contenant les clefs.
+'uuencode' est inclus dans 'GMime' qui a d'autres dépendances listées dans le
+livre BLFS.
+
+2.2 Logiciels absents du livre BLFS
+
+2.2.1 devmapper
+
+Obtenez-le sur http://packages.debian.org/stable/source/devmapper 
+Compilez et installez-le. Nécessaire à 'cryptsetup'.
+
+
+2.2.2 cryptsetup avec l'extension LUKS 
+
+Obtenez-le sur http://code.google.com/p/cryptsetup/ 
+Compilez et installez-le. Nécessaire pour gérer les partitions chiffrées.
+
+
+2.2.3 busybox
+
+Obtenez-le sur http://www.busybox.net/
+La configuration minimum requise comprend :
+* cp
+* hush (shell interactif non requis)
+* mount (avec le support pour de nombreux drapeaux -o ) et
+* switch_root.
+
+Compilez-le, mais NE L'INSTALLEZ PAS. Conservez l'exécutable et nommez-le
+"busybox-minimum". Ensuite, Re-configurez busybox pour un environnement de
+bureau complet. Vous aurez besoin de tous les outils et utilitaires standards
+pour le chiffrement initial de votre partition racine et pour cibler les
+problèmes éventuels. Nommez cet exécutable "busybox-large" ou quelque chose
+d'approchant. De même, il n'est pas nécessaire de l'installer.
+
+
+3. Recompilez le noyau
+======================
+
+Choisissez l'algorithme que vous voudriez utiliser pour chiffrer votre disque
+dur. Notez que c'est une décision cruciale et vous devriez vous renseignez
+plus avant. (Voir la section REMERCIEMENTS). Les modules appropriés doivent
+être compilés (en dur, pas comme modules) dans le noyau. Par exemple, vous
+pouvez utilisé la méthode "twofish-cbc-essiv:sha256".
+
+Également, sélectionnez l'option 'Device mapper support' du menu 'Multiple
+devices driver support' dans la configuration du noyau, ainsi que l'option
+'crypto target'.
+
+Sélectionnez 'Initial RAM filesystem and RAM disk' sous la section 'general
+setup' et 'RAM block device support' sous 'Block devices'.
+
+NOTE : vous devez démarrer ce nouveau noyau avant d'aller plus loin.
+
+
+4. Chiffrer les partitions autres que rootfs et autre que swap
+==============================================================
+
+Vous devez modifier votre système pour qu'il puisse gérer les partitions
+chiffrées. Dans un premier temps, nous modifions le système pour qu'il puisse
+gérer les partitions AUTRES que le rootfs. Il est fortement recommandé que
+vous conserviez une sauvegarde de tous les fichiers que vous modifierez par la
+suite.
+
+4.1 Chiffrer les partitions
+
+NOTE :	Ce document décrit comment chiffrer chaque partition séparément. Si
+        vous avez plus d'un disque dur dans votre système, vous pourriez
+        vouloir chiffrer tout le périphérique, y compris la table des
+        partitions. Utiliser la méthode décrite dans ce document laissera la
+        table des partitions en clair, vous exposant à une attaque. Considérez
+        ceci comme un risque potentiel pour votre sécurité.
+
+*** PIÈGE ***
+Si /usr est une partition séparée, cryptsetup et toutes les bibliothèques
+nécessaires à son exécution doivent être placé sur la partition racine.
+Utilisez 'ldd cryptsetup' pour les trouver. Il peut être nécessaire de changer
+le niveau d'exécution à 1 pour pouvoir démonter /usr. Assurez-vous également
+que le shell de root n'utilise pas de bibliothèques sur cette partition. Si
+nécessaire, compilez un shell statique à l'usage de root.
+
+La procédure pour chaque partition est la suivante :
+
+1) Créez autant de clefs que vous voulez pour la partition, par exemple :
+   head -c 2880 /dev/urandom | uuencode -m - | head -n-1 | tail -n+2 > keyfile
+   ou utiliser une phrase de passe facile à retenir.
+
+2) Faites une sauvegarde sécurisée de votre clef et sécurisez le fichier de
+   la clef par 'chmod 0400' ou autre. Votre clef de sauvegarde doit être
+   sécurisée (i.e. pas sur votre ordinateur). Souvenez-vous, si vous perdez
+   votre clé, vous ne serez définitivement PLUS capable d'accéder à vos
+   données.
+
+3) Faites une sauvegarde des données présentes sur la partition.
+
+4) Démontez la partition.
+
+5) Créez une partition chiffrée (Toutes les données présentes sur cette
+   partition seront perdues). Lancez
+   cryptsetup -c $algorithme-chiffrement luksFormat /dev/sd?? $keyfile
+   Remplacez '$algorithme-chiffrement', '/dev/sd??' and '$keyfile' avec les
+   valeur correspondantes.
+
+6) Optionnellement, ajoutez d'autres clefs à la partition. Lancez
+   cryptsetup -y -d $keyfile luksAddKey /dev/sd??
+   Remplacez '$keyfile' de la même façon que plus haut et '/dev/sd??' par la
+   partition correspondante.
+
+7) Ouvrez la partition. Lancez
+   cryptsetup -d $keyfile luksOpen /dev/sd?? sd??
+   Remplacez '$keyfile' et '/dev/sd??' par les valeurs correspondantes.
+   Remplacez 'sd??' par un nom ayant du sens. Si tout c'est bien passé, la
+   partition apparaîtra comme '/dev/mapper/sd??' où 'sd??' est le nom que vous
+   avez choisi.
+
+8) Créez un système de fichier sur la partition. Lancez 
+   mkefs.$WHATEVER /dev/mapper/sd??  
+   Remplacez '$WHATEVER' par le type de système de fichier que vous voulez
+   utiliser (e.g. ext2) et '/dev/mapper/sd??' par la partition correspondante.
+
+9) Modifier /etc/fstab
+   Puisque le point de montage de la partition chiffrée a changé, vous devez
+   dire au système de fichier où la trouver. Modifiez le point de montage en
+   insérant "mapper/" dans le champ du périphérique.
+
+   Exemple :
+   /dev/sda4         /home ext2 defaults 1 2
+   devient
+   /dev/mapper/sda4  /home ext2 defaults 1 2
+
+10) Monter le système de fichier avec 'mount /dev/mapper/sd??'
+    
+11) Copier les données sur la partition.
+
+
+4.2 Configurer le système pour qu'il monte et déchiffre automatiquement le(s)
+    partition(s)
+
+Créez un script de démarrage qui déchiffrera automatiquement vos partitions
+chiffrées. On suppose que les phrases des passes sont stockées dans /etc/crypt
+par exemple. Notez que conserver des phrases de passes sur le disque peut
+poser des problèmes de sécurité. Utilisez le modèle pour les scripts de
+démarrages qui est inclus dans BLFS et faites le exécuter :
+
+/sbin/cryptsetup -d /etc/crypt/$PARTITION.key luksOpen \
+   /dev/$PARTITION $PARTITION
+
+pour chaque partition chiffrée autre que la partition racine et le(s)
+partition(s) swap.
+
+Exemple :
+
+#!/bin/sh
+########################################################################
+# Début $rc_base/init.d/cryptsetup
+#
+# Description : Rends disponible les système de fichiers chiffrés pour être
+#				monter et nettoyer après
+#
+# Auteur      : Lars Bamberger
+#
+# Version     : 00.01
+#
+# Notes       : Il ne devrait pas être exécuter automatiquement avec un autre
+#				argument que "start". Durant l'arrêt et le redémarrage, il est
+#				suffisant de démonter les systèmes de fichier. /dev/mapper/*
+#				disparaît quand le noyau s'arrête ou redémarre.
+#
+########################################################################
+
+. /etc/sysconfig/rc
+. ${rc_functions}
+PROC=/sbin/cryptsetup
+
+case "${1}" in
+	start)
+		boot_mesg "luksOpen Home..."
+		$PROC -d /etc/crypt/home.key luksOpen /dev/sda4 sda4
+		evaluate_retval
+	stop)
+		boot_mesg "luksClose Home..."
+		$PROC luksClose sda4
+		evaluate_retval
+		;;
+	reload)
+		boot_mesg "Reloading home..."
+		$PROC reload sda4
+		evaluate_retval
+		;;
+	restart)
+		${0} stop
+		sleep 1
+		${0} start
+		;;
+	status)
+		$PROC status sda4
+		;;
+	*)
+		echo "Usage: ${0} {start|stop|reload|restart|status}"
+		exit 1
+		;;
+esac
+# Fin $rc_base/init.d/cryptsetup
+
+Tout d'abord, avant de procéder, assurez-vous que tout ce qui a été fait
+jusqu'à présent fonctionne comme prévu. Familiarisez-vous avec cette manière
+de chiffrer vos partitions.
+Créez un lien symbolique pour que le script soit lancé au démarrage :
+
+# cd /etc/rc.d/rcsysinit.d
+# ln -s ../init.d/cryptsetup S19cryptsetup
+
+Vérifiez une nouvelle fois que le démarrage, le redémarrage, l'arrêt etc
+fonctionnent normalement.
+
+
+5. Un mot sur le chiffrement de(s) partition(s) de swap
+=======================================================
+
+N'oubliez pas de chiffrer vos partitions swap. Beaucoup de données
+intéressantes se trouvent sur ces partitions. Ne considérez pas que vos
+données sont en sûreté si vous n'utilisez pas des espaces swap chiffrés. 
+
+En théorie, les données présentent sur le(s) partition(s) swap n'ont pas
+besoin d'être conservé entre les redémarrages. Cela signifie que nous
+pourrions créer un nouvelle espace de swap au démarrage en utilisant une clé
+de chiffrement aléatoire (donc différente) à chaque démarrage. De cette façon
+vous n'avez pas à vous soucier de la gestion des clefs de chiffrement pour
+l'espace de swap et vous n'avez pas à la stocker (sauf en mémoire). On pourrai
+considérer cela comme une sécurité supplémentaire.
+Néanmoins, si vous suspendez votre système (en RAM ou sur disque), les
+données de l'espace de swap doit rester consistantes. Vous devrez donc traiter
+le(s) partition(s) swap comme si c'était des partitions standards. Dans ce
+cas, vous devrez les chiffrer comme expliqué plus haut.
+
+
+6. Chiffrer rootfs
+==================
+
+Il n'est pas possible de chiffrer rootfs comme les autres partitions, car le
+système s'exécute dessus. L'idée est de créer un initramfs contenant tous
+le nécessaire pour chiffrer (et déchiffrer) rootfs (Voir la documentation du
+noyau pour les détails : 'filesystems/ramfs-rootfs-initramfs.txt').
+
+Vous aurez besoin de tous les répertoires standards (bin, sbin,
+usr/{bin,sbin}, proc, sys, dev, lib). Dans bin, nous mettons busybox-large
+(renommé en busybox), ainsi qu'un lien symbolique vers busybox appelé hush.
+Copiez cryptsetup vers sbin.  Placez quelques périphérique utiles dans dev :
+console, null, sd??, ainsi qu'un répertoire 'mapper' contenant 'control'. Puis
+faites une copie de dev :
+cp -a dev init-dev
+Dans lib (et dev) placez tout ce qui est nécessaire à l'exécution de busybox
+et cryptsetup.
+
+Le script d'initialisation est le suivant :
+#!/bin/hush
+/bin/busybox mount -t proc proc /proc
+/bin/busybox mount -t sysfs sysfs /sys
+/bin/busybox mount -t tmpfs tmpfs /dev
+/bin/busybox cp -a /init-dev/* /dev
+/bin/busybox --install -s
+exec /bin/busybox hush
+
+Placez tout cela dans un répertoire (init y sera et non pas dans sbin), puis
+créez l'image avec : 
+find . | cpio --quiet -H newc -o | gzip -9 -n > /boot/imagefile.img 
+Transmettez l'argument initrd approprié au noyau lors du démarrage et vous
+atterrirez dans un shell hush après le démarrage du système.
+
+*** PIÈGES ***
+cryptsetup a besoin que proc et sys soient monté. Il requiert aussi le
+répertoire dev. Puisque nous voulons sauvegarder dev quand nous lançons
+switch_root dans a suite, nous le montons comme tmpfs. Cela signifie que les
+périphériques de dev seront absent, il faut qu'on les copier dans dev. Notez
+bien que vous avez besoin que 'null' et 'console' soient présent dans dev
+avant de monter tmpfs sur dev.
+
+Une fois le shell a disposition, chiffrez votre rootfs comme n'importe qu'elle
+autre partitions comme décrit plus haut. N'oubliez pas la sauvegarde!
+Assurez-vous ABSOLUMENT d'être capable À COUP SÛR de monter et d'accéder à
+la sauvegarde non chiffrée de rootfs depuis le shell hush!
+
+Ensuite, créez la partition racine chiffrée. Notez que la phrase de passe ne
+sera stockée nul part que le disk, donc lancez :
+
+cryptsetup -y -c $cipher-algorithm luksFormat /dev/sd??
+
+pour créer le rootfs chiffré. Remplacez '$cipher-algorithm' et '/dev/sd??' par
+leur valeurs respectives. Ensuite, ouvrez la partition, formatez là, et
+restaurez la sauvegarde :
+
+cryptsetup luksOpen /dev/sd?? sd??
+$BAKUROOTFS/mkefs.$TYPE /dev/mapper/sd??
+mkdir /new-root
+mount -t $FSTYPE /dev/mapper/sd?? /new-root
+cp -a $BACKUPROOTFS /new-root
+
+*** PIÈGE ***
+Puique votre ancien rootfs n'est pas monté, vous ne devriez pas être capable
+d'exécuter mkefs à cause de bibliothèques manquantes. Soit copiez ce qui est
+nécessaire à un emplacement accessible à l'éditeur de lien, soit utilisez la
+version de mkfs fourni avec busybox. Assurez vous que busybox est configuré en
+conséquence.
+
+Ensuite, modifier /etc/fstab (sur /new-root) pour prendre en compte le nouveau
+périphérique de rootfs. Modifiez aussi le script cryptsetup comme décrit plus
+bas (7. PIÈGE).
+
+
+7. Déchiffrer rootfs lors des démarrages suivants
+=================================================
+
+Comme dans 6., créez un initramfs. La différence est que nous utiliserons
+l'exécutable "busybox-minimum" et que vous aurez besoin du répertoire
+supplémentaire new-root. N'oubliez pas le lien symbolique 'hush'.
+L'initialisation est comme suit : (remplacez 'sd??' par le périphérique racine
+et ajustez le type de système de fichier).
+
+#!/bin/hush
+/bin/busybox mount -t proc proc /proc
+/bin/busybox mount -t sysfs sysfs /sys
+/bin/busybox mount -t tmpfs tmpfs /dev
+/bin/busybox cp -a /init-dev/* /dev
+/sbin/cryptsetup luksOpen /dev/sd?? sd??
+/bin/busybox mount -r -t ext2 /dev/mapper/sd?? /new-root
+/bin/busybox mount --move /proc /new-root/proc
+/bin/busybox mount --move /sys /new-root/sys
+/bin/busybox mount --move /dev /new-root/dev 
+exec /bin/busybox switch_root /new-root /sbin/init $@
+
+*** PIÈGE ***
+Vous voulez conserver /proc /sys and /dev après switch_root car cryptsetup les
+utilise. D'où la commande 'mount --move'. Notez que /dev/mapper/sd?? (le
+périphérique racine) ne sera plus là quand vous aurez monté la vrai partition
+racine, exécuter switch_root et que rootfs aura démarré udev. C'est pour cela
+que ce périphérique doit être recréé. Modifiez donc le script d'initialisation
+cryptsetup en ajoutant :
+
+		if [[ ! -b /dev/mapper/sd?? ]];
+		then
+			boot_mesg "Making device for rootfs..."
+			/bin/mknod -m 0600 /dev/mapper/sd?? b 254 0
+			evaluate_retval;
+		fi
+
+à la section 'start' du script
+
+
+8. S'assurer que la sécurité n'est pas compromise
+=================================================
+
+Une fois que tout marche comme il le devrait, supprimez la sauvegarde non
+chiffrée de votre rootfs. Protégez votre chargeur de démarrage par un mot de
+passe pour supprimer la possibilité de modifier les paramètres de démarrage
+sans autorisation.
+Créez un script de démarrage (checkbootfs) qui s'assure que la partition non
+chiffrée utilisée pour démarrer n'est pas compromise. Utilisez quelque-chose
+comme :
+
+		boot_mesg "Checking integrity of boot FS..."
+		if
+		[[ $(/bin/md5sum -b /dev/sd??) == \
+		"$whatevermd5sum */dev/sd??" ]] \
+			&& \
+		[[ $(/bin/sha1sum -b /dev/sd??) == \
+		"$whatevensha1sum */dev/sd??" ]];
+		then
+			echo_ok;
+		else
+			echo_failure
+boot_mesg -n "FAILURE:\n\nThe boot file system seems to have been
+altered!\n\n" ${FAILURE}
+        boot_mesg -n " DO NOT TRUST THIS SYSTEM!\n\n"
+        boot_mesg_flush
+
+*** PIÈGE ***
+Assurez-vous que c'est la dernière chose que vous implémenterez, car les
+sommes de contrôle changerons lors de la mise en œuvre. Les sommes de
+contrôle changerons aussi si vous exécutez fsck sur la partition de démarrage.
+
+
+REMERCIEMENTS :
+  * Various pour les pages de wiki 
+    http://de.gentoo-wiki.com/Cryptsetup-luks_initramfs
+    et
+    http://en.gentoo-wiki.com/wiki/SECURITY_System_Encryption_DM-Crypt_with_LUKS
+  * Clemens Fruhwirth (http://clemens.endorphin.org/) 
+    pour LUKS et dm-crypt: http://luks.endorphin.org/dm-crypt
+
+HISTORIQUE DES CHANGEMENTS :
+[2009-11-23]
+  * lister les dépendances du livre BLFS
+[2009-11-20]
+  * cryptsetup a besoin de /dev/urandom
+  * mkefs pourrai ne pas fonctionner dans initramfs
+  * mise à jour de certaines URLs
+  * changements mineurs
+[2009-02-15]
+  * Réécriture basique.
+[2008-02-17]
+  * Astuce initiale.
+
+HISTORIQUE DE LA TRADUCTION :
+[2009-12-16]
+  * traduction de la version du [2009-11-23]




More information about the lfs-traducfr mailing list