{{tag>Xenial fichier chiffrement sécurité}} ---- ====== 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 [[intrepid|Ubuntu Intrepid Ibex]] Cette [[https://wiki.ubuntu.com/BionicBeaver/ReleaseNotes|fonctionnalité ]] n'est pas disponible lors de l'installation de la version [[https://bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/1756840|18.04.0]] ===== Installation ===== ==== Contrôle préalable. ==== Ecryptfs assure une sécurité des données basée sur le mot de passe. Il est donc nécessaire que le mot de passe ne soit pas très aisément récupérable. S'il est récupérable en dix secondes, il semble inutile de chiffrer les données. sudo apt install john sudo john --show /etc/passwd /etc/shadow S'il est déchiffrable en moins de 24 heures. le risque reste important. sudo john --incremental /etc/passwd /etc/shadow S'il est nécessaire de passer plus de temps, il est probable que les particuliers seront découragés mais pas les professionnels quitte à utiliser un réseau de 1000 machines afin de diminuer la durée de décryptage, mais ils décrypteront le mot de passe. ==== Acquisition du logiciel. ==== Il suffit [[:tutoriel:comment_installer_un_paquet#paquet_present_dans_les_depots|d'installer le paquet]] **[[apt>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. Puis, avant d'utiliser, il faut absolument suivre cette directive, sinon ce que vous allez écrire sera perdu **Logout, and log back in to begin using your encrypted directory.** 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 ===== ==== correctif pour version antérieure à la version 17.10 ==== 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 ==== Monter le répertoire ==== ecryptfs-mount-private ==== Utilisation du répertoire ==== cd /home/$USER/Private echo "écrire dans fichier">Fic mkdir Toto echo "écrire dans sous-répertoire">Toto/Fic cd ==== Démonter le répertoire ==== ecryptfs-umount-private La réponse sous ubuntu1710 est Sessions still open, not unmounting Il suffit de faire une seconde fois ecryptfs-umount-private Ne pas chiffrer un répertoire d'un utilisateur si ultérieurement vous pensez que vous allez chiffrer tout l'utilisateur. Il y aura refus car détection d'un chiffrement déjà installé! ===== Chiffrer son /home ===== Si vous n'avez pas chiffré votre dossier personnel "/home" lors de l'installation d'Ubuntu et si vous n'avez pas déjà créé un répertoire chiffré, 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 à chiffrer **qui ne doit pas être celui sur lequel on est connecté**. Il n'est pas possible d'utiliser cette commande depuis le compte user du dossier /home à chiffrer. 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 une console avec cet utilisateur temporaire pour exécuter la commande ci-dessus. Avant de lancer le processus, il est recommandé de faire une sauvegarde de son répertoire /home en utilisant par exemple [[clonezilla|Clonezilla]] Cette migration emporte aussi les données de l'utilisateur montées dans d'autres partitions et reliées par un lien logique aux dossiers Documents, Images, téléchargements, musique et Vidéos et nécessite 2,5 fois la taille de cet ensemble 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|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 chiffré 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 : - **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é. - 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 - Utilisez la commande ecryptfs-unwrap-passphrase pour connaître votre clé de chiffrement. Notez-la et gardez-la précieusement, cela pourra vous être utile pour déchiffrer votre home en cas de problème. - Chiffrez 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 : ===== Le montage est automatique en version 16.04, Le paquet peut aussi s'appeler libpam-mount et les deux autres paquets peuvent déjà être installés. 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. ===== Création d'un nouvel utilisateur sécurisé : ===== (Réalisation en version 16.04) L'installation standard ne génère le répertoire /home/$USER que d'un seul utilisateur pouvant être chiffré ou pas. il peut être nécessaire de créer d'autres utilisateurs. * Créer l'utilisateur nouveau grâce à la commande **sudo adduser NouveauNom** * Initialiser immédiatement le chiffrage de cet utilisateur grâce à la commande. **sudo ecryptfs-migrate-home -u NouveauNom** * Demander à **NouveauNom** de se connecter afin qu'il fabrique la phrase de sécurité de montage de son répertoire * Patienter quelque minutes le temps que la grille proposant d'enregistrer ce choix soit affichée. * Valider la grille afin d'automatiser * Se déconnecter et se reconnecter immédiatement avant l'arrêt de l'ordinateur. Constat; Le répertoire de cet utilisateur est bien monté automatiquement. il accède à ses propres données qui sont protégées des autres sessions **lorsque l'utilisateur n'est pas connecté**.. root@u16041:/mnt/home/cryptage# ls -las total 8 4 dr-x------ 2 1002 1002 4096 déc. 29 11:47 . 4 drwxr-xr-x 7 root root 4096 déc. 29 11:47 .. 0 lrwxrwxrwx 1 1002 1002 56 déc. 29 11:47 Access-Your-Private-Data.desktop -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop 0 lrwxrwxrwx 1 1002 1002 34 déc. 29 11:47 .ecryptfs -> /home/.ecryptfs/cryptage/.ecryptfs 0 lrwxrwxrwx 1 1002 1002 33 déc. 29 11:47 .Private -> /home/.ecryptfs/cryptage/.Private 0 lrwxrwxrwx 1 1002 1002 52 déc. 29 11:47 README.txt -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.txt root@u16041:/mnt/home/cryptage root@u16042:/home/cryptage# ls -ls total 0 0 lrwxrwxrwx 1 cryptage cryptage 56 déc. 29 11:47 Access-Your-Private-Data.desktop -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop 0 lrwxrwxrwx 1 cryptage cryptage 52 déc. 29 11:47 README.txt -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.txt root@u16042:/home/cryptage# . ===== Désinstallation ===== Pour supprimer cette application, il suffit de [[:tutoriel:comment_supprimer_un_paquet|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 ou sudo apt purge ecryptfs-utils libecryptfs1 Si vous n'arrivez pas à désinstaller normalement : (source : https://help.ubuntu.com/community/EncryptedPrivateDirectory#How_to_Remove_an_Encrypted_Private_Directory_Setup) ===== Récupération du contenu d'un répertoire "/home" chiffré ===== ==== Methode automatique ==== === Si tout se passe bien === Pour récupérer très simplement **vos données personnelles**, 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//home/.ecryptfs//.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/ === Si vous obtenez l'erreur « échec de l’appel système mount(2) » === Il peut arriver que la méthode automatique échoue sans qu'il soit nécessaire de passer par la méthode manuelle, voire que la méthode manuelle échoue elle aussi avec une erreur « échec de l’appel système mount(2) : Aucun fichier ou dossier de ce type.» (mount: mount(2) failed: No such file or directory) usr@pc:~$ sudo ecryptfs-recover-private --rw /home/.ecryptfs/usr/.Private [sudo] Mot de passe de usr : INFO: Found [/home/.ecryptfs/usr/.Private]. Try to recover this directory? [Y/n]: INFO: Found your wrapped-passphrase Do you know your LOGIN passphrase? [Y/n] INFO: Enter your LOGIN passphrase... Passphrase: Inserted auth tok with sig [a425d547696d4f7b] into the user session keyring mount: /tmp/ecryptfs.a2GHrSDE: échec de l’appel système mount(2) : Aucun fichier ou dossier de ce type. ERROR: Failed to mount private data at [/tmp/ecryptfs.a2GHrSDE]. Dans ce cas, il peut être nécessaire d'initialiser les clés ecryptfs de la manière suivante : usr@pc:~$ sudo keyctl link @u @s puis, tout simplement : usr@pc:~$ sudo ecryptfs-recover-private --rw /home/.ecryptfs/usr/.Private INFO: Found [/home/.ecryptfs/usr/.Private]. Try to recover this directory? [Y/n]: INFO: Found your wrapped-passphrase Do you know your LOGIN passphrase? [Y/n] INFO: Enter your LOGIN passphrase... Passphrase: Inserted auth tok with sig [a425d547696d4f7b] into the user session keyring INFO: Success! Private data mounted at [/tmp/ecryptfs.sD45Yfu58]. ==== 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 ordinateur tombé en panne, il va falloir déchiffrer le répertoire /home de l'utilisateur qui a un problème. 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 la partition /home dont on veut s'approprier le contenu planté pour qu'il soit accessible dans "/media". Puis usr@pc:~$ sudo ecryptfs-unwrap-passphrase /media/$USER/PointDeMontage/home/NomDeCeluiDontOnRécupèreLesDonnées/.ecryptfs/wrapped-passphrase (le mot de passe demandé est celui de la personne dont on souhaite récupérer les données. Il peut être nécessaire de négocier pour obtenir ce mot de passe!) (" /media/$USER/pointDeMontage/home/NomDeCeluiDontOnRécupèrerLesDonnées/" est le répertoire "/home" de l'utilisateur qu'on traite). 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" === usr@pc:~$ sudo 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 les copier dans la commande suivante avant de la lancer. === Etape 3 : effectuer le montage du répertoire === usr@pc:~$ sudo mount -i -t ecryptfs -o rw,ecryptfs_sig=premier_keyring,ecryptfs_fnek_sig=deuxième_keyring,ecryptfs_cipher=aes,ecryptfs_key_bytes=16 /media/$USER/PointDeMontage/home/NomDeCeluiDontOnRécupèreLesDonnées/.Private /media Vérifier alors que les noms des fichiers sont bien lisibles! Si ce n'est pas le cas et que leur taille est indiquée avec les ??????, vous vous êtes trompés dans les jetons. Notez qu'aussitôt qu'une commande de montage a été réalisée (avec succès ou pas) les jetons sont éliminés. Il est donc nécessaire de rejouer ce trio de commandes. Ne pas oublier que la commande **ecrypt2fs-recover-private,** fait cette action mais en imposant le point de montage dans un répertoire aléatoire de /tmp... ==== Démonter le répertoire ==== Après avoir monté le répertoire, récupéré ou modifié vos données, vous pouvez souhaiter démonter le répertoire chiffré. Le moyen le plus simple est de quitter la session ou d'éteindre la machine mais vous pouvez souhaiter maintenir la session active. Dans cette hypothèse, vous pouvez recourir à la commande ** umount.ecryptfs** suivie du chemin complet vers le répertoire temporaire de montage de la partition chiffrée. usr@pc:~$ sudo umount.ecryptfs /tmp/ecryptfs.aQhg2lM4/ Could not unlink the key(s) from your keying. Please use `keyctl unlink` if you wish to remove the key(s). Proceeding with umount. ===== 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 [[http://bodhizazen.net/Tutorials/Ecryptfs/|Ecryptfs]], dans le chapitre «Change your passphrase to mount your encrypted private directory or home»// ===== Fil de discussion associé ===== [[https://forum.ubuntu-fr.org/viewtopic.php?id=619641]] ---- * **(en)** [[https://help.ubuntu.com/community/EncryptedPrivateDirectory]] * **(en)** [[https://wiki.ubuntu.com/EncryptedPrivateDirectory]] * **(en)** [[http://bodhizazen.net/Tutorials/Ecryptfs/]] * **(fr)** [[https://blog.rom1v.com/2010/05/chiffrer-son-dossier-personnel-home-sous-ubuntu/|Chiffrer son dossier personnel (/home) sous Ubuntu (®om's blog)]] * **(en)** [[https://bugs.launchpad.net/ecryptfs|Anomalies connues]] * **(fr)** [[https://kb-fr.sandisk.com/app/answers/detail/a_id/8251/~/page-dinformations-et-de-t%C3%A9l%C3%A9chargement-de-secureaccess-3.0|Ubuntu encore oublié par un grand fabriquant de matériel ]] * **(en)** [[https://askubuntu.com/questions/659242/problem-with-ecryptfs-recover-private-mount2-failed~|Erreur mount avec ecryptfs-recover-private]] * **(en)** [[https://bugs.launchpad.net/ubuntu/+source/ecryptfs-utils/+bug/1718658|La commande ecryptfs-mount-private échoue à initialiser les clés ecryptfs]]