jeudi 25 juin 2009

Chiffrage & Partitions IV

Source: Forum Ubuntu

Ce tuto se compose de quatre parties :

  • crypter une partition, sur ce poste #1.
  • crypter une partition en utilisant les LUKS, ICI
  • crypter une partition déjà utilisée tout en conservant les données présentes : ICI
  • Crypter un fichier créé pour la circonstance. Ce fichier crypté sera ensuite utilisé comme une partition, y compris sur une clé usb ou un autre pc disposant de cryptsetup : ICI

Lien

Voir aussi le poste de traaf qui a ajouté une règle udev pour régler un problème de changement de position du disque crypté.
----------
Lien
J'ai réduit au maximum les commentaires.
Pour plus de détails, voir Le Wiki Ubuntu

On va utiliser dm-crypt et donc cryptsetup pour crypter une partition avec AES.

On s'assure que l'on a les moyens de contrôler le device-mapper, où tout sera "fait à la volée" :

cep@casa:~$ ls -l /dev/mapper/control
crw-rw---- 1 root root 10, 63 2005-12-08 14:23 /dev/mapper/control

On regarde quelles sont les possibilités d'encryption inclues dans le kernel d'ubuntu :

cep@casa:~$ /sbin/modinfo /lib/modules/`uname -r`/kernel/crypto/* |grep description
description: Anubis Cryptographic Algorithm
description: ARC4 Cipher Algorithm
description: Blowfish Cipher Algorithm
description: Cast5 Cipher Algorithm
description: Cast6 Cipher Algorithm
description: CRC32c (Castagnoli) calculations wrapper for lib/crc32c
description: Null Cryptographic Algorithms
description: Deflate Compression Algorithm for IPCOMP
description: DES & Triple DES EDE Cipher Algorithms
description: Khazad Cryptographic Algorithm
description: MD4 Message Digest Algorithm
description: Michael MIC
description: Serpent and tnepres (kerneli compatible serpent reversed) Cipher Algorithm
description: SHA1 Secure Hash Algorithm
description: SHA256 Secure Hash Algorithm
description: SHA-512 and SHA-384 Secure Hash Algorithms
description: Quick & dirty crypto testing module
description: TEA & XTEA Cryptographic Algorithms
description: Tiger Message Digest Algorithm
description: Twofish Cipher Algorithm
description: Whirlpool Message Digest Algorithm

cep@casa:~$ /sbin/modinfo /lib/modules/`uname -r`/kernel/arch/i386/crypto/* |grep description
description: Rijndael (AES) Cipher Algorithm, i586 asm optimized

On se donne les droits root pour ne pas avoir à entrer sudo à chaque ligne :
cep@casa:~$ sudo -s
Password:

On installe cryptsetup, qui est l'interface de chiffrement :

root@casa:~# apt-get install cryptsetup
Lecture des listes de paquets... Fait
...
...etc.etc.
puis le processus d'installation se termine par:
Paramétrage de cryptsetup (1.0.1-0ubuntu4) ...
Adding system startup for /etc/init.d/cryptdisks ...
/etc/rc0.d/S48cryptdisks -> ../init.d/cryptdisks
/etc/rc6.d/S48cryptdisks -> ../init.d/cryptdisks
/etc/rcS.d/S28cryptdisks -> ../init.d/cryptdisks

On ajoute aes, dm_mod et dm_crypt dans /etc/modules (vérifiez s'ils n'y sont pas déjà) :

root@casa:~# echo aes >> /etc/modules
root@casa:~# echo dm_mod >> /etc/modules
root@casa:~# echo dm_crypt >> /etc/modules

On vérifie :
root@casa:~# cat /etc/modules
lp
mousedev
psmouse
aes
dm_crypt
dm_mod

On vérifie que la partition sur laquelle on va travailler n'est pas montée :

root@casa:~# mount
...

J'ai choisi de crypter la partition hdb7 et de nommer le volume "crypt".
On crée donc le volume "crypt"

root@casa:~# cryptsetup -y create crypt /dev/hdb7
Enter passphrase:
Verify passphrase:

On a entré le mot de passe ou la phrase secrète.

On ajoute "crypt /dev/hdb7" dans /etc/crypttab

root@casa:~# echo "crypt /dev/hdb7" >> /etc/crypttab

On modifie /etc/fstab afin d'y ajouter /dev/mapper/crypt pour qu'il soit monté au boot dans /crypt :

root@casa:~# echo "/dev/mapper/crypt /crypt ext2 defaults 0 1" >> /etc/fstab

On vérifie :

root@casa:~# cat /etc/fstab
# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/hda1 / ext3 defaults,errors=remount-ro 0 1
...
/dev/mapper/crypt /mnt/crypt ext2 defaults 0 1

On crée le système de fichiers sur /dev/mapper/crypt. En ce qui me concerne, j'ai choisi ext2 :

root@casa:~# mkfs.ext2 /dev/mapper/crypt
mke2fs 1.38 (30-Jun-2005)
Étiquette de système de fichiers=
Type de système d'exploitation: Linux
Taille de bloc=1024 (log=0)
Taille de fragment=1024 (log=0)
26104 inodes, 104388 blocs
5219 blocs (5.00%) réservé pour le super usager
Premier bloc de données=1
13 bloc de groupes
8192 blocs par groupe, 8192 fragments par groupe
2008 inodes par groupe
Archive du superbloc stockée sur les blocs:
8193, 24577, 40961, 57345, 73729

Écriture des tables d'inodes: complété
Écriture des superblocs et de l'information de comptabilité du système de fichiers: complété

Le système de fichiers sera automatiquement vérifié tous les 32 montages ou après
180 jours, selon la première éventualité. Utiliser tune2fs -c ou -i pour écraser la valeur.

On crée le point de mount /crypt :

root@casa:~# mkdir /crypt

Pensez à attribuer le répertoire à votre user et à lui donner les droits 700 par exemple.

On monte tout :

root@casa:~# mount -a

On vérifie :

root@casa:~# mount
/dev/hda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
usbfs on /proc/bus/usb type usbfs (rw)
tmpfs on /lib/modules/2.6.12-10-386/volatile type tmpfs (rw,mode=0755)
tmpfs on /dev type tmpfs (rw,size=10M,mode=0755)
/dev/mapper/crypt on /crypt type ext2 (rw)

/dev/mapper/crypt est bien monté sur /crypt.

root@casa:~# exit
exit
cep@casa:~$

Maintenant on redémarre la machine pour voir comment tout se déroule.

Àu moment de lancer le processus de cryptographie et de mount de la partition, le usplash s'interrompt et il est demandé d'entrer le mot de passe. D'ou la nécessité d'être devant sa machine.
Si vous entrez le mot de passe, tout se déroule normalement, la partition est montée et décryptée / encryptée à la volée.
Par contre, si vous n'entrez pas le mot de passe, le lancement de la machine s'interrompt avec un message de mauvais filesystème et fsck failed. Normal.
On vous propose de lancer un fsck manuel. Inutil d'accepter, il ne servira à rien. Taper simplement : exit et le processus reprend et votre système démarre.
Par contre, lorsque vous essayerez de monter la partition cryptée par un : sudo mount -a ou un : sudo mount -a -o remount, cela n'aboutira pas et vous aurez le message :

mount: wrong fs type, bad option, bad superblock on /dev/mapper/crypt,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

ce qui encore une fois est normal.
Pour pouvoir monter la partiton, il faudra refaire le "mapping" avec les deux commandes suivantes :

cep@casa:~$ sudo cryptsetup remove crypt
cep@casa:~$ sudo cryptsetup create crypt /dev/hdb7
Enter passphrase:

Et vous entrerez votre mot de passe choisi initialement.
À ce stade, n'essayez pas de mettre un autre mot de passe, ou penser utiliser cette commande pour monter une partition dont vous n'auriez pas le mot de passe, ça ne parchera pas :-)

Ensuite vous pourrez monter votre partition :

cep@casa:~$ sudo mount /dev/mapper/crypt -t ext2 /crypt

Une autre solution serait de commenter ou supprimer la ligne de /dev/mapper/ dans fstab. Ainsi, si vous avez d'autres users sur la machine, mais qui ne doivent pas accéder à cette partition, le boot pourra se faire normalement. Il suffira qu'ils tapent sur la touche Enter lorsqu'on demande un mot de passe. Et vous ferez la procédure décrite plus haut pour monter la partition.

Certains conseillent de crypter le /home, et parfois tout le système.
N'oubliez pas que si vous avez un jour un problème et que votre système ne se lance pas, il vous sera difficile de réparer avec un live cd ou autre. Il faudra utiliser d'autres moyens.

Il me reste maintenant à pousser un peu plus l'utilisation de cette partition et à étudier les systèmes de sauvegarde restauration sur une partition cryptée.
Mais, surtout, à appliquer cela sur un disque usb (udev et compagnie), ce qui est l'interêt principal.

Pour cette page, je me suis inspiré de :
https://wiki.ubuntu.com//EncryptedFilesystemHowto
Vous pourrez le consulter pour tous les détails techniques et un usage plus poussé.

cep

Dernière modification par cep (Le 05/11/2007, à 15:12)


Quelques tutos et astuces :

http://www.cepcasa.info/divers/

Aucun commentaire:

Enregistrer un commentaire