Chiffrement de son répertoire personnel

J'ai récupéré un vieux Dell sur lequel j'ai installé ma distribution et mon environnement graphique habituels (Archlinux / Openbox). L'idée est d'en faire un PC à emmener partout. Hum... et à oublier partout ! Donc il faut pour le moins protéger ses données, pour que son éventuelle perte ne permette à quiconque d'explorer nos documents et/ou mots de passe Internet. La solution est évidement le chiffrement, et tout est expliqué sur cette page du wiki d'Archlinux. Mais comme c'est en anglais et que tout ne m'était pas aussi évident que je l'espérais voici un compte rendu de cette opération.

État des lieux :

Archlinux à jour, utilisateur(s) créé(s), mots de passes définis (et solides, il serviront au chiffrement), répertoires personnels créés (et non vides, pour pouvoir tester), suffisamment de place dans la partition dans laquelle est monté /home (environ 2,5 fois plus que la taille du plus gros répertoire à chiffrer). Une bonne sauvegarde ne peut pas nuire. Même si une copie du répertoire sera faite par l'outil de migration (sous la forme /home/USERNAME.xxxxxxx) avant chiffrement, pourquoi ne pas essayer clonezilla ?

Programmes à installer :

# pacman -S ecryptfs-utils rsync lsof pam_mount

Programmes à installer :

# pacman -S ecryptfs-utils rsync lsof pam_mount

Préalable pour pouvoir se relogger facilement :

l'idée est évidement que le répertoire personnel soit monté en clair dès le login. Pour cela nous allons utiliser pam_mount :

1) éditer le fichier /etc/security/pam_mount.conf.xml

rajouter la ligne
<volume user="USERNAME" fstype="ecryptfs" path="/dev/sdXY" mountpoint="/home" options="fsck,noatime" />
un peu avant la fin, juste avant
<mkmountpoint enable="1" remove="true" />
</pam_mount>

2) éditer le fichier etc/pam.d/system-auth

après la ligne contenant 'auth required pam_unix.so' ajouter :
auth    required    pam_ecryptfs.so unwrap

Ensuite, avant la ligne contenant 'password required pam_unix.so' insérer :
password    optional    pam_ecryptfs.so

Et finalement, après la ligne contenant 'session required pam_unix.so' ajouter :
session    optional    pam_ecryptfs.so unwrap

Chiffrement proprement dit :

Démarrer le système sans se logger en tant qu'utilisateur. Depuis le gestionnaire de connexion (lightdm chez moi) passer en console (Alt Ctrl F2) et ouvrir une session root. On peut aussi se logger sur le compte d'un autre utilisateur et passer root dans une console, ce qui permet de profiter de l'environnement graphique et du copier/coller.

Monter le module ecryptfs puis lancer la commande de chiffrement

# modprobe encryptfs
# ecryptfs-migrate-home -u username
INFO: Checking disk space, this may take a few moments. Please be patient.
INFO: Checking for open files in /home/USERNAME
Enter your login passphrase [USERNAME]:

../.. (défilé des fichiers en cours de chiffrement)
Some Important Notes! 1. The file encryption appears to have completed successfully, however, USERNAME MUST LOGIN IMMEDIATELY, _BEFORE_THE_NEXT_REBOOT_ TO COMPLETE THE MIGRATION!!!
2. If USERNAME can log in and read and write their files, then the migration is complete,
and you should remove /home/USERNAME.5ZJvW3ds.
Otherwise, restore /home/USERNAME.5ZJvW3ds back to /home/USERNAME.
3. USERNAME should also run 'ecryptfs-unwrap-passphrase' and record their randomly generated
mount passphrase as soon as possible. 4. To ensure the integrity of all encrypted data on this system, you should also encrypt swap space
with 'ecryptfs-setup-swap'.

Attention :

le  mot de passe (passphrase) à indiquer ici est bien celui utilisé par l'utilisateur pour se logger. Sinon il vous faudra monter le répertoire à la main. Ensuite, comme indiqué ci-dessus, il est essentiel de se logger et de faire des essais de lecture et d'écriture dès que la migration sera terminée, en tous cas avant de redémarrer le système. Enfin lancez la commande
$ ecryptfs-unwrap-passphrase
et notez dans en endroit secret et sûr le nombre de 32 chiffres en hexadécimal qui aura été généré de façon aléatoire et qui vous servira de mot de passe de secours en cas de problème. Le moyen le plus simple est de l'envoyer à vous-même un e-mail chiffré (voir enigmail si vous utilisez Thunderbird) ou, à défaut, de l'enregistrer dans un fichier chiffré (avec GnuPG par exemple)  avant de vous l'envoyer en pièce jointe.

Considérations sur l'ordre de la procédure

Si vous suivez le wiki d'Archlinux vous noterez que contrairement à ce tuto la partie montage automatique au login est traitée dans un second temps. Cela a un avantage didactique évident mais oblige à monter la partition chiffrée "à la main", en ligne de commande. N'essayez donc pas de vous logger en mode graphique, cela ne fonctionnera pas, faites le en console.

En cas de problème

Si rien ne se passe comme prévu, si vous ne retrouvez pas vos données, pas de panique ! Il suffit de vous logger en root sur une console, de supprimer votre répertoire /home/USERNAME ainsi que le répertoire /home/.ecryptfs et enfin de renommer le répertoire de sauvegarde
rm -rf /home/USERNAME 
rm -rf /home/.ecryptfs
mv /home/USERNAME.xxxxxxxx /home/USERNAME

Si tout va bien

au bout de quelques jours (on ne sait jamais) pensez à supprimer la copie non chiffrée de votre répertoire personnel (/home/USERNAME.xxxxxxxx)

Changement de mot de passe

Si pour une raison ou une autre vous souhaitiez changer de mot de passe il faut le faire évidement à la fois pour le login et pour le déchiffrage du dossier.
#changer le mot de passe du login
passwd
#changer le mot de passe de chiffrement
ecryptfs-rewrap-passphrase ~/.ecryptfs/wrapped-passphrase
Dans les 2 cas l'ancien mot de passe sera demandé avant le nouveau.

Autres documentations

wiki.archlinux.fr - doc-ubuntu-fr
Vus : 876
Publié par Vincent Gay : 38