Adaptation française : Nicolas Provost
Relecture de la version française: Deny
Copyright © 2007 René Pfeiffer
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
Dans certains cas, il est nécessaire de stocker des données de manière
sécurisée. Parfois cela ne signifie pas seulement utiliser des disques
redondants (et avoir une bonne politique de sauvegarde), mais aussi crypter
les données. Par chance, le noyau Linux
offre toutes les caractéristiques
permettant d'utiliser des périphériques en RAID
(Redundant Array of Inexpensive Disks, ou
« matrice redondante de disques pas chers »), de les grouper en
un volume logique et de crypter chaque bloc du système de fichiers.
Evidemment, il ne faut pas oublier la phrase d'authentification !
La première étape concerne la création d'un périphérique Linux de
type RAID logiciel. Pour simplifier, nous nous
limiterons au RAID de niveau 1, c'est à dire la copie
en miroir de deux disques ou de deux partitions. Le
RAID de niveau 1 peut être obtenu à partir de deux (ou
plus) parties d'un périphérique par blocs (block
device) ayant la même taille. Habituellement, on configure
ces partitions lors de l'installation du système. Les installateurs de la
plupart des distributions GNU/Linux
disposent d'un éditeur vous permettant
de réaliser cela. Considérant que nous disposons déjà d'une installation,
nous allons configurer quatre partitions formant deux périphériques
RAID de niveau 1. Il sera simplement nécessaire
d'éditer la table des partitions. Personnellement, j'utilise l'outil
cfdisk
pour cela.
osiris:~# cfdisk /dev/sdc
Préparez vos partitions et marquez les avec le code système
FD
. Ce code marque les
partitions comme partitions Linux Raid
Autodetect (partitions de type RAID à
détection automatique) et permet au système de les activer au démarrage.
Souvenez-vous que toutes ces partitions doivent en principe être de même
taille.
osiris:~# cfdisk /dev/sdd
J'ai choisi /dev/sdc1
et
/dev/sdd1
. Créons maintenant le périphérique
RAID à l'aide de l'outil
mdadm
.
osiris:~# mdadm --create /dev/md6 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1
Une fois cette ligne validée, le noyau crée le périphérique et
commence à synchroniser les blocs. Vous pouvez contrôler l'état
d'avancement de cette opération en listant
/proc/mdstat
. Ce fichier vous donne l'état de tous
les périphériques RAID du système.
osiris:~# cat /proc/mdstat Personalities : [raid1] md1 : active raid1 sdb2[1] sda2[0] 3903680 blocks [2/2] [UU] md5 : active raid1 sdb3[1] sda3[0] 4883648 blocks [2/2] [UU] md2 : active raid1 sdb5[1] sda5[0] 1951744 blocks [2/2] [UU] md4 : active raid1 sdb7[1] sda7[0] 297435328 blocks [2/2] [UU] md6 : active raid1 sdd1[1] sdc1[0] 488383936 blocks [2/2] [UU] md0 : active raid1 sdb1[1] sda1[0] 489856 blocks [2/2] [UU] unused devices: osiris:~#
Si vous voyez quelque chose de ressemblant, alors les périphériques
RAID sont dans un état cohérent. Le paquet
mdadm
fournit des utilitaires pour la
surveillance de l'état des périphériques RAID. C'est
très utile car sinon vous pourriez ne pas vous apercevoir que vos disques
ou périphériques RAID sont défectueux.
Puis créez un autre périphérique RAID. J'utilise
/dev/md4
sur la copie écran ci-dessus comme deuxième
périphérique destiné à être inclu dans notre volume logique crypté.
Pour activer le cryptage de données, j'ai choisi l'outil
cryptsetup
. Avant d'utiliser un périphérique par
blocs comme espace de stockage crypté, il est recommandé d'y écrire des
motifs de bits aléatoires. La façon la plus simple de procéder est
d'utiliser la commande dd
.
osiris:~# dd if=/dev/urandom of=/dev/md4
osiris:~# dd if=/dev/urandom of=/dev/md6
Selon votre configuration matérielle, ces opérations peuvent prendre
plusieurs heures. Prenez garde de ne pas utiliser
/dev/random
, sinon ces opérations dureront plusieurs
jours ou semaines. Cette étape n'est pas obligatoire. Cependant, si vous
laissez un motif identifiable sur votre périphérique, il est plus facile
de repérer les blocs cryptés, et donc de focaliser les attaques visant à
les décrypter sur ceux-ci.
Une fois que des données aléatoires ont été écrites sur vos disques, vous pouvez les crypter.
osiris:~# cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/md4
osiris:~# cryptsetup -c aes-cbc-essiv:sha256 -y -s 256 luksFormat /dev/md6
Faites bien attention de ne pas perdre votre phrase d'authentification ! Si vous l'oubliez, vos données seront assurement sécurisées et impossible à retrouver. Gardez à l'esprit que crypter des données et se débarrasser des clés de cryptage est la méthode industrielle courante pour détruire des données (si bien entendu de meilleurs méthodes de cryptage que ROT13 ou XOR sont utilisées). Nos périphériques par blocs sont maintenant prêts pour le cryptage.
Les commandes précédentes configurent les périphériques pour utiliser l'algorithme AES. La longueur de la clef est 256 bits, et nous utilisons une méthode appelée ESSIV ou encore E(Sector|Salt) * pour éviter des failles lors du choix des valeurs initiales de l'algorithme de cryptage.
* [Note du traducteur] Ce qui signifie cryptage de blocs du type (données+sel) où « sel » (salt) désigne une suite de bits choisie pour une session de cryptage, que l'on agrège aux données pour « pimenter » (ou « saler », au choix) le cryptage afin de le rendre encore plus sûr.
Chaque fois que vous souhaitez accéder à des périphériques par blocs
cryptés vous devez les déverrouiller. Ce déverrouillage peut également
être réalisé avec cryptsetup
.
osiris:~# cryptsetup luksOpen /dev/md4 crypt1
osiris:~# cryptsetup luksOpen /dev/md6 crypt2
La phrase d'authentification va vous être demandée. Après
déverrouillage, on peut accéder aux périphériques en utilisant
/dev/mapper/crypt1
et
/dev/mapper/crypt2
. Remarquez que nous n'utilisons
plus les périphériques RAID directement. Nous accédons
à l'espace de stockage via une couche de cryptage. Les données contenues
dans les blocs du périphérique RAID sont
cryptées.
Le gestionnaire de volumes logiques (LVM) est un outil pour regrouper plusieurs périphériques physiques par blocs en groupes de volumes, et pour créer des volumes logiques parmi eux. Un guide pratique (« HOWTO ») est disponible pour LVM2, dans lequel tout est expliqué en détails. Il est simplement nécessaire de savoir comment les espaces de stockage sont organisés. La hiérarchie est la suivante :
Espaces physiques (périphériques par blocs, partitions)
Groupes de volumes (constitués d'espaces physiques)
Volumes logiques (combinant des parties de groupes de volumes)
Les périphériques RAID correspondent à la plus basse couche de LVM2. Nous devons encore créer les espaces physiques, les assigner à des groupes de volumes et créer un volume logique. Un système de fichiers est uniquement affecté à un volume logique. La figure suivante montre comment les différentes couches du système de stockage sont organisées.
Marquons donc nos périphériques cryptés RAID1 comme espaces physiques et créons un groupe de volumes.
osiris:~# pvcreate /dev/mapper/crypt1
osiris:~# pvcreate /dev/mapper/crypt2
osiris:~# vgcreate -v cryptvg /dev/mapper/crypt1 /dev/mapper/crypt2
Les commandes vgscan et
vgdisplay vous montrent le résultat des commandes
ci-dessus. vgdisplay est particulièrement utile
puisqu'elle vous donne le nombre d'espaces physiques disponibles dans un
groupe de volumes. Nous souhaitons maintenant utiliser tout le groupe de
volumes cryptvg
en tant que volume logique. Pour cela
nous précisons à lvcreate l'étendue à utiliser.
osiris:~# lvcreate -l 191849 -n backuplv cryptvg
On peut à présent accéder à notre nouveau volume logique en
utilisant le fichier de périphérique
/dev/backup/backuplv
. Nous formatons ce périphérique
avec un système de fichiers XFS (bien entendu vous
pouvez utiliser le système de fichiers de votre choix,
XFS est simplement un exemple).
osiris:~# mkfs.xfs -d agcount=48 -L backup /dev/backup/backuplv
Nous pouvons dés lors monter ce volume et l'utiliser à notre guise.
N'oubliez pas d'ajouter une entrée dans votre fichier
/etc/fstab
pour que les options de montage soient
correctes. Une configuration possible pourrait être :
/dev/backup/backuplv /backup xfs ikeep,noatime 0 0
Il y a plusieurs étapes à respecter pour activer et désactiver votre
nouveau volume crypté. Le noyau Linux
prend en charge la plupart des
opérations (comme l'autodétection des périphériques
RAID et leur démarrage). D'autres opérations ne peuvent
pas être prises en charge automatiquement. Un simple script fera le
nécessaire :
#!/bin/sh echo "Déverrouillage de /dev/md4" cryptsetup luksOpen /dev/md4 crypt1 echo "Déverrouillage de /dev/md6" cryptsetup luksOpen /dev/md6 crypt2 echo "Recherche des groupes de volumes" vgscan --mknodes vgchange -ay echo "Montage de /backup" mount /backup
cryptsetup
vous demandera votre (vos)
phrase(s) d'authentification (une par périphérique
RAID). La séquence d'extinction se présente dans
l'ordre inverse :
#!/bin/sh umount /backup lvremove backuplv vgremove cryptvg cryptsetup remove crypt1 cryptsetup remove crypt2
La plupart des distributions GNU/Linux
incluent des scripts qui prennent en
charge les séquences de démarrage et d'extinction. Néanmoins il est bon de
connaître comment cela se déroule (ne serait-ce que pour le cas où le
système n'est plus disponible).
Maintenant que votre tout nouveau volume crypté est vide, vous avez
pour une fois dans votre vie la chance de pouvoir tester le mécanisme de
stockage. Ne ratez pas cette occasion ! Simulez une
panne de disque. Coupez le courant et redémarrez. Lancez un contrôle du
système de fichiers. Créez des milliers de fichiers puis détruisez-les.
Copiez un tas de grosses images ISO. Essayez de faire
tout ce que doit supporter votre système de fichiers et regardez si les
données persistent. La commande
XFS mkfs a une option
-p
qui vous permet de remplir un nouveau système de
fichiers XFS avec des fichiers et répertoires en
suivant une répartition prédéfinie. C'est une option très utile à des fins
de test. Une fois que votre batterie de tests est achevée de manière
satisfaisante, installez vos véritables données sur le système de
fichiers. Et conservez toujours des sauvegardes.
Atari® et de la sortie du jeu Pong. Depuis tout petit, il a toujours cherché à démonter les objets pour savoir comment ils marchaient. A tel point qu'il ne pouvait pas passer devant un chantier sans regarder si les câbles électriques pouvaient être intéressants. Son intérêt pour l'informatique remonte à l'époque où son grand-père lui offrit un micro-ordinateur 4 bits avec 256 octets de mémoire vive et un système d'exploitation occupant 4 096 octets, l'obligeant ainsi à apprendre l'assembleur avant tout autre langage.
est né l'année de la fondation d'Après ses études secondaires, il entra à l'Université pour y étudier la physique. Il put ainsi mener des expériences avec un C64 et un C128, deux Amiga®, DEC®
Ultrix
,OpenVMS
et finalement GNU/Linux
sur un PC en 1997. Il utiliseLinux
depuis ce jour et aime toujours autant démonter et remonter les choses. Son amour de la liberté de pensée le rapprocha du mouvement pour le Logiciel Libre où il s'investit afin de promouvoir le droit à comprendre comment les logiciels fonctionnent. Il est également actif au sein de groupements pour la liberté civile, oeuvrant notamment dans le domaine des droits numériques.Depuis 1999, il offre ses compétences en freelance. Ses activités principales sont l'administration système et réseaux, la programmation et le conseil. En 2001, il commença une série de conférences sur la sécurité au Technikum de Vienne. En dehors du travail sur écran, de la maintenance du matériel et de la configuration des équipements réseaux, il est passionné de plongée sous-marine, de littérature et de photographie numérique. Il espère également pouvoir de nouveau conter des histoires ou jouer à des jeux de rôles dés qu'il aura un peu plus de loisirs.
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.