Ecryptfs : Chiffrer son /home ou créer un dossier privé chiffré

Ecryptfs est un outil pour créer un dossier privé (~/Private), chiffré et inaccessible aux autres utilisateurs, il est destiné à contenir tous les fichiers "sensibles" que vous pourriez avoir : vos fichiers contenant des mots de passe, les données confidentielles relatives à vos comptes bancaires, vos emails…

Cette nouvelle caractéristique de sécurité est disponible depuis Ubuntu Intrepid Ibex

Installation

Il suffit d'installer le paquet ecryptfs-utils.

ou en mode console :

sudo apt-get install ecryptfs-utils

Configuration

ecryptfs-setup-private 

A l'invite

Enter your login passphrase:

Entrez le mot de passe que vous utilisez pour vous connecter.

Enter your mount passphrase [leave blank to generate one]:

Choisissez une phrase secrète ou laissez vide pour en générer une.

Enter your mount passphrase (again): 

Reconfirmez votre phrase secrète.

Enregistrez votre phrase secrète dans un lieu sûr, elle sera requise pour récupérer vos données ultérieurement.

Ne perdez pas votre passphrase ! Soyez sûr de la retenir ou bien notez-la.
Vous allez avoir une fenêtre qui va s'ouvrir avec comme message :
Record your encryption passphrase

To encrypt your home directory or "Private" folder, a strong passphrase has been autogenerated. Usually your directory is unlocked with your user password, but if you ever need to manually recover this directory, you will need this passphrase. Please print or write it down and store it in a safe location.
You can run the "ecryptfs-unwrap-passphrase" command now to do this. Enter your user password at the "Passphrase" prompt.

La commande ecryptfs-unwrap-passphrase citée permet de retrouver la passphrase de montage (à condition de connaître le mot de passe d'ouverture de session). Voir le paragraphe 5.2 pour plus de détails.

Utilisation

Une fois l'installation faite, vous devrez vous rendre dans le dossier "~/.Private" dans lequel vous trouverez un lanceur "Access-Your-Private-Data" afin de monter votre espace privé. Vous pouvez le copier/coller sur votre Bureau pour plus de facilité.
Malheureusement, pour le moment, ce lanceur n'a pas l'attribut exécutable et refuse de se lancer. Il faut pallier ce souci en lançant :

sudo chmod +x /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop

Sinon :

Monter le répertoire :

  ecryptfs-mount-private

Démonter le répertoire :

  ecryptfs-umount-private

Chiffrer son /home

Si vous n'avez pas chiffré votre dossier personnel "/home" lors de l'installation d'Ubuntu, il est encore possible de le faire. Pour cela, il faut utiliser la commande

sudo ecryptfs-migrate-home -u "user"

en remplaçant "user" par le login du compte à crypter.

Il n'est pas possible d'utiliser cette commande depuis le compte user du dossier /home à crypter. Il faut donc créer un utilisateur temporaire sur votre système, lui donner les droits sudo en l'associant au groupe "admin" puis se logger sur un console avec cet utilisateur temporaire pour executer la commande ci-dessus.
Avant de lancer le processus, il est recommandé de faire un backup de son /home en utilisant par exemple Clonezilla

Pour créer un nouvel utilisateur "temporaire" en lui donnant les droits d'admin, tapez :

sudo adduser --ingroup adm temporaire
sudo adduser temporaire sudo

Faite ensuite un clone de votre partition avec Clonezilla ou une copie de sauvegarde de votre dossier /home, si possible vers une autre partition:

sudo rsync -a /home/user /backup/user.old

Faite ensuite du ménage dans votre dossier /home : la migration vers un /home crypté nécessite que la partition sur laquelle est votre /home ait un espace disque libre de 2,5x la taille du /home à chiffrer !

Passez ensuite en mode console avec CTRL+ALT+F1 en ayant fermé votre session graphique (il faut s'assurer que le /home de l'utilisateur à chiffrer n'aura pas d'accès en écriture pendant l’opération) et loggez vous avec votre nouvel utilisateur.
Vous pouvez vérifier si il y a encore des processus qui tournent sous votre user à chiffrer avec la commande

top

Vous pouvez alors lancer la migration du dossier /home de votre utilisateur "user"

sudo ecryptfs-migrate-home -u "user"

Si il y a assez de place sur le disque, le programme vous demandera le password de l'utilisateur "user" et la migration commencera. Après quelques minutes, vous devriez voir un message indiquant que tout s'est bien passé et il faudra suivre les indications données pour finaliser la migration :

  1. Avant de rebooter, loguez vous avec l'utilisateur qui vient d'être migré
    su "user"

    et naviguez dans votre dossier /home. Si vous retrouvez vos fichiers et pouvez les lire, c'est que tout c'est bien passé.

  2. La migration a crée un dossier /home/user.XXXXXXXX. Si tout s'est bien passé, vous pouvez le supprimer (à faire après quelque jours d'utilisation, une fois que l'on est vraiment sur que tout s'est bien passé.) Si non, utilisez le pour restaurer votre /home
  3. Utilisez la commande
    ecryptfs-unwrap-passphrase

    pour connaitre votre clé de chiffrement. Notez là et gardez là précieusement, cela pourra vous être utile pour déchiffrer votre home en cas de problème.

  4. Criptez votre swap avec la commande
    ecryptfs-setup-swap

Vous pourrez enfin supprimer votre utilisateur temporaire avec la commande

sudo deluser --remove-all-files temporaire

Préalable pour pouvoir se relogger facilement avec le gestionnaire de connexion et l'authentification PAM :

L'idée étant évidement que le répertoire personnel soit monté en clair dès le login. Pour cela nous allons utiliser pam_mount, il faudra d'abord installer le paquet en question "libpam_mount" et "rsync" et "lsof" :

sudo apt-get install libpam_mount rsync lsof

É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

Attention à bien utiliser la même passphrase pour chiffrer votre repertoire personnel, que le mot de passe de connexion.

Désinstallation

Pour supprimer cette application, il suffit de supprimer son paquet. La configuration de l'application sera conservée ou supprimée selon la méthode de désinstallation que vous choisirez.

ATTENTION : supprimer le paquet et sa configuration et/ou le dossier .ecryptf/ aurait pour résultat de rendre toutes vos données illisibles, et ce à jamais !

Assurez-vous d'avoir déplacé toutes vos données ailleurs que dans le dossier ~/Private

1. Démonter le répertoire crypté :

   ecryptfs-umount-private  

2. Rendre ~/Private accessible en écriture :

   chmod 700 ~/Private  

3. Effacer ~/Private, ~/.Private, ~/.ecryptfs (Note: EFFACEMENT DÉFINITIF) :

   rm -rf ~/Private ~/.Private ~/.ecryptfs  

4. Désinstaller les paquets :

   sudo apt-get remove ecryptfs-utils libecryptfs0

Si vous n'arrivez pas à désinstaller normalement : (source : https://help.ubuntu.com/community/EncryptedPrivateDirectory#How_to_Remove_an_Encrypted_Private_Directory_Setup)

Problèmes

Mot de passe modifié

Si vous avez modifié votre mot de passe depuis la ligne de commande à l'aide "passwd", le système ecryptfs ne vous autorisera plus à accéder aux données chiffrées. Votre dossier chiffré est devenu illisible et non-déchiffrable parce que le montage du dossier ecryptfs est basé sur votre ancien mot de passe.
Vous pouvez vous en tirer si vous connaissez la passphrase mais vous n'avez aucune solution dans le cas contraire.

Solution 1 : accéder temporairement aux données

Pour accéder à vos données, il vous suffira de monter le dossier chiffré vous-même manuellement et le tour sera joué :

sudo mount -t ecryptfs ~/.Private ~/Private -o key=passphrase,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n

La passphrase vous sera demandée et le dossier Private sera monté correctement.

Solution 2 : rétablir un fonctionnement normal

Si vous avez modifié votre mot de passe depuis la ligne de commande, vous remarquerez que la passphrase utilisée pour monter votre dossier personnel chiffré n'est PAS mise à jour. Ceci évite qu'un super utilisateur (ex. : root) puisse accéder à vos données simplement en modifiant votre mot de passe d'utilisateur et en se connectant avec votre identifiant.

Afin de modifier votre passphrase Ecryptfs (pour qu'elle coïncide avec votre nouveau mot de passe), utilisez cette commande :

ecryptfs-rewrap-passphrase ~/.ecryptfs/wrapped-passphrase

Vous devrez saisir votre ancienne passphrase, puis la nouvelle.

Vous pourrez alors utiliser votre répertoire crypté normalement.
NB: Solution proposée sur ce tutoriel Ecryptfs, dans le chapitre «Change your passphrase to mount your encrypted private directory or home»

Récupération du contenu d'un répertoire "/home" chiffré

Methode automatique

Pour récupérer très simplement vos données, il est possible d'utiliser l'outil ecryptfs-recover-private

sudo ecryptfs-recover-private

Il va scanner vos disques à la recherche des dossiers chiffrés .Private. Comme indiqué, cette opération peut prendre du temps. Une fois la recherche terminée, il vous proposera de monter votre(vos) dossier(s) .Private comme par exemple :

INFO: Found [/media/<UUID>/home/.ecryptfs/<username>/.Private]
Try to recover this directory? [Y/n]:

Répondez alors Y et il vous montera votre dossier automatiquement. Vous n'aurez plus qu'à parcourir le point de montage avec nautilus par exemple.

sudo nautilus &
Vous pouvez indiquer en paramètre de ecryptfs-recover-private le répertoire à déchiffrer, ce qui vous évitera l'attente parfois longue (It may take a while !) de recherche du répertoire chiffré
sudo ecryptfs-recover-private /home/.ecryptfs/toto/.Private/
L'option –rw ouvre les droits en écriture à l'intérieur de la partition chiffrée
sudo ecryptfs-recover-private --rw /home/.ecryptfs/toto/.Private/

Méthode manuelle

Si par exemple, pour une raison quelconque votre Ubuntu ne démarre plus ou que vous souhaitez récupérer les données d'un ordi tombé en panne, il va falloir déchiffrer votre répertoire /home. Il est difficile de trouver de la documentation sur la façon de faire, alors après avoir galéré plusieurs heures, et jonglé avec différentes clés, je vous donne la solution.

Etape 1 : obtenir la passphrase

Tout d'abord, il faut monter le Ubuntu planté pour qu'il soit accessible dans "/media"

sudo ecryptfs-unwrap-passphrase /media/Ubuntu/home/.ecryptfs/stephane/.ecryptfs/wrapped-passphrase

(le mot de passe demandé est celui de la session utilisateur)

("/media/Ubuntu/home/.ecryptfs/stephane" est le répertoire "/home" de mon Ubuntu planté)

Vérifier bien que cette passphrase n'est pas celle du système actuellement démarré, la passphrase doit être différente de celle-ci:

sudo ecryptfs-unwrap-passphrase
Etape 2 : obtenir les 2 clés "fnek"
ecryptfs-add-passphrase --fnek

(lorsque l'on vous demande la passphrase, il ne faut pas confondre avec votre mot de passe session, mettez la passphrase obtenue ci-dessus) On vous donne 2 clés, il faut copier l

Récupération du contenu d'un répertoire "Private" chiffré

Dans le cas où vous auriez suivi l'installation d'ecryptfs au début de cette documentation, vous avez un répertoire nommé par défaut Private dans votre /home.

Si un problème survient et que vous voulez rapidement rapatrier tout le contenu crypté sur une nouvelle machine ou sur une autre installation fraîche d'Ubuntu, vous pouvez vous contenter de copier les répertoires .Private, Private et .ecryptfs dans votre nouveau /home (testé avec même nom d'utilisateur / mot de passe de session que la première machine). Il vous suffira alors d'utiliser votre passphrase comme à votre habitude, tout simplement.

Fil de discussion associé

  • ecryptfs.txt
  • Dernière modification: Le 28/04/2018, 11:13
  • (modification externe)