eCryptfs est un système de fichiers cryptographiques empilés de classe entreprise conforme à POSIX pour Linux. Vous pouvez l'utiliser pour chiffrer des partitions ainsi que des répertoires qui n'utilisent pas de partition propre, quel que soit le système de fichiers sous-jacent, le type de partition, etc. Ce tutoriel montre comment utiliser eCryptfs pour chiffrer un répertoire sur Debian Squeeze.
Je n'émets aucune garantie que cela fonctionnera pour vous !
1 Remarque préliminaire
Dans ce didacticiel, je chiffrerai mon répertoire personnel, /home/falko/, qui se trouve sur la partition / (c'est-à-dire que /home/falko/ est un répertoire ordinaire et n'utilise pas sa propre partition).
2 Installer eCryptfs
eCryptfs peut facilement être installé comme suit :
apt-get install ecryptfs-utils
3 Chiffrer un répertoire
Je vais maintenant chiffrer mon répertoire personnel /home/falko/. Comme il y a déjà des fichiers (non cryptés) dans ce répertoire, je dois en faire une sauvegarde afin de pouvoir les restaurer ultérieurement dans le répertoire /home/falko/ alors crypté (sinon ces fichiers ne peuvent pas être consultés/lus tant que le répertoire est crypté):
cp -pfr /home/falko/ /tmp/
Je peux maintenant chiffrer le répertoire /home/falko/ en le montant avec le type de système de fichiers ecryptfs :
mount -t ecryptfs /home/falko /home/falko
Lorsque vous faites cela pour la première fois, vous devrez répondre à quelques questions :
[email protected] :~# mount -t ecryptfs /home/falko /home/falko
Passphrase : <-- some_passphrase
Sélectionnez cipher :
1) aes : blocksize = 16 ; taille de clé minimale = 16 ; max keysize = 32 (non chargé)
2) blowfish : blocksize = 16 ; taille de clé minimale = 16 ; max keysize = 56 (non chargé)
3) des3_ede : blocksize = 8 ; taille de clé minimale = 24 ; max keysize = 24 (non chargé)
4) twofish : blocksize = 16 ; taille de clé minimale = 16 ; max keysize = 32 (non chargé)
5) cast6 : blocksize = 16 ; taille de clé minimale = 16 ; max keysize = 32 (non chargé)
6) cast5 : blocksize = 8 ; taille de clé minimale = 5 ; max keysize = 16 (non chargé)
Sélection [aes] : <-- ENTER
Sélectionnez key bytes :
1) 16
2) 32
3) 24
Sélection [16] : <-- ENTER
Activer le passthrough en texte clair (y/n) [n] : <-- ENTER
Enable filename encryption (y/n) [n] : <-- ENTER
Tentative de montage avec les options suivantes :
ecryptfs_unlink_sigs
ecryptfs_key_bytes=16
ecryptfs_cipher=aes
ecryptfs_sig=bd28c38da9fc938b
AVERTISSEMENT : Selon la contenu de [/root/.ecryptfs/sig-cache.txt],
il semble que vous n'avez jamais monté avec cette clé
avant. Cela pourrait signifier que vous avez saisi votre
phrase de passe mal .
Souhaitez-vous continuer avec le montage (oui/non) ? : <-- oui
Souhaitez-vous ajouter sig [bd28c38da9fc938b] à
[/root/.ecryptfs/sig-cache.txt]
afin d'éviter cet avertissement à l'avenir ( Oui Non)? : <-- oui
Nouvelle signature ajoutée au fichier cache de signature utilisateur
eCryptfs montés
[email protected] :~#
Jetez un oeil à la sortie de
monter
et vous devriez voir que /home/falko/ est maintenant crypté :
[email protected] :~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid ,mode=0755)
proc sur /proc type proc (rw,noexec,nosuid,nodev)
sysfs sur /sys type sysfs (rw,noexec,nosuid,nodev)
udev sur / dev type tmpfs (rw,mode=0755)
tmpfs sur /dev/shm type tmpfs (rw,nosuid,nodev)
devpts sur /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/home/falko sur /home/falko type ecryptfs (rw,ecryptfs_sig=bd28c38da9fc938b,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs)
[email protected] :~#Restaurons notre sauvegarde dans le répertoire désormais chiffré /home/falko/ et supprimons ensuite la sauvegarde :
cp -pfr /tmp/falko/ /home/
rm -fr /tmp/falko/À des fins de test, copions un autre fichier, par ex. /etc/hosts, vers /home/falko/ pour vérifier s'il est vraiment crypté :
cp /etc/hosts /home/falkoAlors que /home/falko/ est monté avec le type de système de fichiers ecryptfs, il devrait être possible de lire le contenu de /home/falko/hosts :
cat /home/falko/hostsDémontez maintenant /home/falko/...
umount /home/falko... et réessayez de lire /home/falko/hosts, et vous devriez obtenir des informations cryptées :
cat /home/falko/hosts
?æËÊÀû5)í}Ó`§wʽ.ÂçµÔyiIezz°Ñd¦R,`Ëi,0ñ*úÐ%^-']YÑj÷#6 ÷¨Y-]«é²ùô |
4 Comment monter automatiquement une partition chiffrée au démarrage
Bien sûr, nous ne voulons pas monter /home/falko/ manuellement à chaque fois - ce serait mieux s'il pouvait être monté automatiquement au démarrage. Pour ce faire, nous avons besoin d'un fichier de phrase secrète, et pour des raisons de sécurité, je souhaite que ce fichier de phrase secrète soit situé sur une clé USB.
Branchez une clé USB et lancez
fdisk -l
pour connaître son nom d'appareil et son type de système de fichiers :
[email protected] :~# fdisk -l
Disque /dev/sda : 32,2 Go, 32212254720 octets
255 têtes, 63 secteurs/piste, 3 916 cylindres
Unités = cylindres de 16 065 * 512 = 8225 280 octets
Taille de secteur (logique/physique) : 512 octets / 512 octets
Taille d'E/S (minimale/optimale) : 512 octets / 512 octets
Identificateur de disque:0x00035e35
Démarrage du périphérique Blocs de fin des blocs ID
/ dev / sda1 * 1 3793 30461952 83 Linux
/ dev / sda2 3793 3917 992257 5 étendu
/dev/sda5 3793 3917 992256 82 Linux swap / Solaris
Disque /dev/sdb : 8086 Mo, 8086617600 octets
255 têtes, 63 93 secteurs/piste = cylindres de 16 065 * 512 = 8225 280 octets
Taille de secteur (logique/physique) : 512 octets / 512 octets
Taille d'E/S (minimale/optimale) : 512 octets / 512 octets
Disque identifiant : 0x000e439f
Démarrage de l'appareil Démarrer Fin Blocs I d Système
/dev/sdb1 1 983 7895916 b W95 FAT32
[email protected] :~#
Dans mon cas, le nom du périphérique est /dev/sdb1, et il utilise un système de fichiers FAT32.
Montons la clé USB sur /mnt/usb :
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
Jetez un oeil à la sortie de
monter
... et vous devriez voir qu'il a été monté avec le type de système de fichiers vfat (FAT32) - nous aurons besoin de ces informations plus tard pour notre fichier /etc/fstab :
[email protected] :~# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid ,mode=0755)
proc sur /proc type proc (rw,noexec,nosuid,nodev)
sysfs sur /sys type sysfs (rw,noexec,nosuid,nodev)
udev sur / dev type tmpfs (rw,mode=0755)
tmpfs sur /dev/shm type tmpfs (rw,nosuid,nodev)
devpts sur /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sdb1 sur /mnt/usb type vfat (rw)
[email protected] :~#
Examinez maintenant le contenu de /root/.ecryptfs/sig-cache.txt :
cat /root/.ecryptfs/sig-cache.txt
bd28c38da9fc938b |
Nous avons besoin de cette signature pour le fichier /root/.ecryptfsrc que nous créons comme suit :
vi /root/.ecryptfsrc
Assurez-vous d'utiliser la signature du fichier /root/.ecryptfs/sig-cache.txt dans la ligne ecryptfs_sig :
key=passphrase:passphrase_passwd_file=/mnt/usb/passwd_file.txtecryptfs_sig=bd28c38da9fc938becryptfs_cipher=aesecryptfs_key_bytes=16ecryptfs_passthrough=necryptfs_enable_filename_crypto=n |
Nous créons maintenant le fichier de phrase secrète sur notre clé USB :
vi /mnt/usb/passwd_file.txt
passphrase_passwd=some_passphrase |
Assurez-vous d'utiliser la phrase secrète correcte, c'est-à-dire la phrase secrète que vous utiliseriez si vous montiez le répertoire manuellement.
Ouvrez ensuite /etc/fstab...
vi /etc/fstab
... et ajoutez les deux lignes suivantes (assurez-vous d'utiliser le bon type de système de fichiers pour votre clé USB - vfat dans mon cas) :
[...]/dev/sdb1 /mnt/usb vfat ro 0 0/home/falko /home/falko ecryptfs defaults 0 0 |
(Il est important que la ligne de la clé USB vienne avant la ligne de la partition chiffrée car la clé USB doit être montée avant que la partition chiffrée ne puisse être montée !)
Redémarrez ensuite le système :
redémarrer
Si tout se passe bien, votre partition cryptée devrait être automatiquement montée après le redémarrage. Cependant, il est possible que votre système ne puisse pas monter votre clé USB lors du démarrage, ce qui signifie que votre partition chiffrée ne peut pas non plus être montée. Si cela se produit, éditez /etc/rc.local (ce script est exécuté à la fin du processus de démarrage)...
vi /etc/rc.local
... et ajoutez la ligne /bin/mount -a avant la ligne exit 0 :
#!/bin/sh -e## rc.local## Ce script est exécuté à la fin de chaque niveau d'exécution multi-utilisateur.# Assurez-vous que le le script "exit 0" en cas de succès ou toute autre valeur# en cas d'erreur.## Pour activer ou désactiver ce script, modifiez simplement les bits d'exécution#.## Par défaut, ce script ne fait rien./bin/mount -aexit 0 |
Cela (re-)montera toutes les partitions (y compris votre clé USB et la partition chiffrée) à la fin du processus de démarrage.
5 liens
- eCryptfs :https://launchpad.net/ecryptfs
- Debian :http://www.debian.org/