chiffrer son dossier home

Partagez ici vos Trucs et vos Astuces.
Répondre
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

16 sept. 2016, 09:03

Salut,

J'aimerai tester un système de chiffrement des répertoires utilisateurs. Voici les contraintes que j'ai :
- chaque users est chiffré de façon indépendantes
- la connexion à la session (que ce soit en ssh ou graphique) débloque automatiquement le dossier.

Après quelques recherches il semble que ce ne soit faisable qu'avec ecryptfs. Vous auriez d'autres pistes ?
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

16 sept. 2016, 09:55

Je viens de faire un test avec ecryptfs :

Il est bien possible de faire un déverrouillage automatique, fonctionnel avec ssh.

Le problème arrive lorsqu'on utilise des clefs pour se connecter. Il faut alors déplacer les fichiers authorized_key et ajouter la commande ecryptfs-mount-private dans un fichier .profile présent dans le dossier utilisateur avant montage. Seulement, cette commande demande la passphrase... Ce qui ne pose aucun problème avec une utilisation ssh habituelle, sauf que ça banni toute utilisation automatique...
hybridemoineau
Membre
Membre
Messages : 388
Enregistré le : 24 avr. 2016, 15:34
Status : Hors ligne

16 sept. 2016, 15:17

C'est possible avec cryptsetup, mais en mono-utilisateur avec la technique que je connais (le mot de passe du user est le mot de passe du conteneur luks, qui correspond à la clé de chiffrement de ce conteneur).
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

16 sept. 2016, 15:41

Comment tu fais ça ?
hybridemoineau
Membre
Membre
Messages : 388
Enregistré le : 24 avr. 2016, 15:34
Status : Hors ligne

19 sept. 2016, 16:13

Désolé pour la réponse tardive, je n'avais pas de connexion depuis vendredi.

En fait, ça marche aussi en multi utilisateur, avec une partition par utilisateur. La mot de passe user est aussi le mot de passe du conteneur de la partition cryptée.
1) Chiffrer ses partitions avec crpytoluks
2) Créer les utilisateurs avec les bons mots de passe et les home correspondant à chaque partition
3) Modifier le fichier /etc/security/pam_mount.conf.xml en y entrant les noms d'utilisateurs liés à l'UUID d'origine (pas celle du conteneur en /dev/mapper) des partitions
4) un login en tty ou en graphique déchiffre et monte automatiquement le home pour chaque l'utilisateur qui s'identifie

Je fais comme ça depuis trois ans poour utiliser mon portable avec un /home sur disque dur externe chiffré, ça marche impeccable (pas de mise en veille, et mise en hibernation très périlleuse, y compris pour les données)

Regarde les pages:

Le début de:
https://doc.ubuntu-fr.org/cryptsetup
pour la création des partitions

et surtout
http://www.linuxpedia.fr/doku.php/exper ... cryptsetup
pour le montage automatique. Il y a moyen de sécuriser autrement et plus qu'avec la technique décrite plus haut.
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

19 sept. 2016, 20:47

Cool, c'est surtout la partie sur pam-mount qui m'intéresse. Je vais tester ça demain
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

20 sept. 2016, 11:09

Afin de pouvoir continuer à utiliser mon pc durant les tests, j'aimerai monter de façon automatique le fichier luks /home/user/.secret dans /home/user/secret.

Comment j'ai procédé :
apt-get install libpam-mount
nano /etc/security/pam_mount.conf.xml
J'ai ajouté <volume user="user" fstype="auto" path="/home/user/.secret" mountpoint="/home/user/secret" options="fsck,relatime" /> avant <mkmountpoint enable="1" remove="true" />

Création du fichier luks :
dd if=/dev/zero of=.secret bs=20G (j'utiliserais urandom lorsque ça fonctionnera)
cryptsetup --cipher=aes-xts-plain64:sh512 -s 512 --hash=sha512 luksFormat .secret (avec le même mot de passe que ma session)
cryptsetup luksOpen .secret testcrypt
mkfs.ext4 -L $USER-secret /dev/mapper/testcrypt

montage manuel :
cryptsetup status testcrypt
mount /dev/mapper/testcrypt secret/

Voilà
Avatar du membre
lol
Site Admin
Site Admin
Messages : 3315
Enregistré le : 04 avr. 2016, 12:11
Localisation : Madagascar
Contact :
Status : Hors ligne

20 sept. 2016, 19:28

:023:
Debian stable. XFCE.
C'est curieux chez les marins ce besoin de faire des phrases (Les tontons flingueurs).
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

21 sept. 2016, 11:05

On peut peut-être déplacer dans T&A ?
Avatar du membre
lol
Site Admin
Site Admin
Messages : 3315
Enregistré le : 04 avr. 2016, 12:11
Localisation : Madagascar
Contact :
Status : Hors ligne

21 sept. 2016, 11:48

vohu a écrit :On peut peut-être déplacer dans T&A ?
Oui. Je m'en occupe.
Debian stable. XFCE.
C'est curieux chez les marins ce besoin de faire des phrases (Les tontons flingueurs).
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

06 nov. 2016, 15:25

J'ai remarqué quelque chose qui pose problème avec cette méthode :

Lorsqu'on effectue un transfert rsync (par ssh), le répertoire chiffré est bien monté, le problème se trouve après. Lorsque rsync termine son transfert, la session de l'user n'est pas refermée, et donc le repertoire reste monté. Ce qui est très problématique pour la sécurité, mais encore plus pour l'intégrité des données en question.

J'ai fait le test suivant :
- un transfert rsync assez long
- en même temps, une connexion à l'user avec ssh. J'ai bien 2 montages du répertoire chiffré (un truc genre _mapper_loopX)

Si je vais dans le répertoire actuellement transféré par rsync, je ne vois pas les modifications apportées tant qu'il n'a pas terminé.
Si depuis la session ssh je fais aussi une modification dans le répertoire chiffré. je suis certain de bouziller mon fichier luks. Au prochain montage (s'il n'y avait plus d'occurrence en cours), j'ai droit à une belle erreur m'indiquant que mon fichier est cassé.

Questions :
- y a t'il un moyen d'indiquer à rsync de faire un "exit" lorsqu'il a terminé son transfert ?
- si on ferme le terminal connecté en ssh (au lieu de faire exit), le fichier chiffré n'est pas démonté non plus. Y a t'il un moyen de détecter la fermeture d'un terminal connecté par ssh afin de procéder au démontage du fichier luks par script ?

- je retrouve le même problème avec les dépots mercurial sur ssh
hybridemoineau
Membre
Membre
Messages : 388
Enregistré le : 24 avr. 2016, 15:34
Status : Hors ligne

06 nov. 2016, 17:37

Pour la connexion ssh, je ne l'utilise pas.

Mais pour rsync, un script qui termine par
- démontage de son point de montage du dossier où se fait la sauvegarde
- fermeture de la partition conteneur chiffré qui contient le dossier où se fait la sauvegarde

devrait suffire, soit si je comprends bien ton schéma de montage

Code : Tout sélectionner

umount /secret
cryptsetup luksClose /dev/mapper/testcrypt
Avatar du membre
vohu
Membre
Membre
Messages : 455
Enregistré le : 16 avr. 2016, 12:02
Localisation : Strasbourg
Status : Hors ligne

06 nov. 2016, 19:38

hybridemoineau > tu n'as pas bien saisi le problème

Sur une machine A je lance un rsync (ssh) vers une machine B, qui elle contient le répertoire chiffré. Au moment de l'identification, le répertoire chiffré est monté automatiquement grâce la méthode décrite plus haut dans le topic.
Seulement, quand le script se termine, le répertoire n'est pas démonté.

Lorsqu'on se connecte en ssh directement sur sur ce serveur B, on retrouve le même problème si l'on ferme le terminal avec la croix. Si on tape "exit", la session est fermée proprement, et le dossier chiffré est démonté automatiquement.

Si je dois me connecter à la machine et démonter à la main le répertoire chiffré, cela fait perdre tout l’intérêt du montage automatique.
hybridemoineau
Membre
Membre
Messages : 388
Enregistré le : 24 avr. 2016, 15:34
Status : Hors ligne

06 nov. 2016, 21:47

En fait, j'ai mis ces deux instructions (démontage-fermeture) dans un script et elles s'exécutent à la fin du rsync sans autres indications lorsque je lance le script (il effectue le montage aussi, si j'entre bien les bons mots de passe de partitions à déchiffrer)..

Que je comprenne bien, tu lances une seule commande rsync par ssh ?

Ce n'est pas possible de lancer ssh dans un script puis une suite de commandes (ce qui permettrait de couper ssh aussi avec ce script) , ou un script par ssh (ce qui permettrait au moins de démonter puis de fermer la partition crpytée) ?

---> C'est surtout pour info, vu que je n'ai jamais utilisé ssh, je dis sans doute des âneries...
MicP
Modérateur
Modérateur
Messages : 637
Enregistré le : 16 avr. 2016, 22:14
Status : Hors ligne

07 nov. 2016, 00:09

Bonjour

Je pensais à la commande at qui débuterait et terminerait (en envoyant un rapport par mail ou autre)
Du coup, si le script n'est pas encore sur la cible, par scp on envoie le script à exécuter et on programme l'heure d'exécution avec la commande at par ssh
(ou autre combinaison avec at qui lance un script sur la cible)

=======
Il y a aussi screen qui vous permet de vous déconnecter sans fermer la session screen sur la cible
et même de reprendre la connexion qui est restée active même déconnecté.
Répondre