Un dossier chiffré distant avec EncFS et SSHFS
Aujourd'hui nous allons répondre à une problématique concernant la sécurité et le travail en équipe. Lorsque le travail requiert des besoins importants en terme sécurité, il arrive de devoir mettre en place des dossiers chiffrés pour protéger des documents confidentiels. Pour cela, la solution idéale est TrueCrypt : le volume sécurisé est monté et seul l'utilisateur peut y accéder (pas de montage réseau possible). Mais quand on travaille à plusieurs sur les mêmes documents, il faut créer un TrueCrypt par machine et synchroniser les fichiers "à la main"...
Bref, ce temps est révolu. En combinant SSHFS et EncFS on peut créer des dossiers chiffrés et y accéder à distance de façon sécurisée (à tous les niveaux). Il faut mettre en place un "serveur" qui va centraliser les dossiers et une installation sur chaque client comme suit
Sur le serveur
Installer encfs
sudo apt-get install enfs
Éditer le fichier /etc/fuse.conf pour autoriser les utilisateur non root à utiliser fuse
Décommenter "user_allow_other"
La commande "ls -l /dev/fuse" devrait donner le résultat suivant
crw-rw---- 1 root fuse 10, 229 Jan 24 12:05 /dev/fuse
Si le groupe "fuse" n'a toujours pas accès à /dev/fuse, il faut redémarrer la machine (c'est le cas notamment sous Debian).
Créer un utilisateur spécifique pour le projet
sudo adduser PROJET
Ajouter l'utilisateur au groupe fuse
sudo adduser PROJET fuse
Démarrer un shell avec l'utilisateur PROJET
su PROJET cd
Créer le dossier qui sera chiffré
mkdir projet_enc
Faire le montage du dossier encfs dans le dossier "projet_enc_out"
encfs /home/PROJET/projet_enc /home/PROJET/projet_enc_out
Quitter
exit
Sur chaque client
Installer sshfs
sudo apt-get install sshfs
Éditer le fichier /etc/fuse.conf pour autoriser les utilisateur non root à utiliser fuse
Décommenter "user_allow_other"
La commande "ls -l /dev/fuse" devrait donner le résultat suivant
crw-rw---- 1 root fuse 10, 229 Jan 24 12:05 /dev/fuse
Si le groupe "fuse" n'a toujours pas accès à /dev/fuse, il faut redémarrer la machine (c'est le cas notamment sous Debian).
Ajouter courant l'utilisateur au groupe fuse
sudo adduser USER fuse
Créer le point de montage
mkdir projet_secret
Monter le dossier chiffré distant
sshfs -o uid=$UID gid=$GID PROJET@IP:/home/PROJET/projet_enc_out projet_secret
Démonter le dossier
Que ce soit sur le serveur ou sur le client, il n'y a qu'une seule commande
fusermount -u <point_de_montage>
Conclusion
À l'intérieur de ce dossier on peut ensuite créer un dépôt git et faire un clone : ça donne un git distant sécurisé (même si on a l'impression d'y accéder en local). On peut aussi inscrire les clés publiques pour l'utilisateur PROJET et donc restreindre l'accès à certaines machines uniquement, ce qui a pour effet de bord d'avoir un mot de passe différent pour chaque utilisateur et non un mot de passe commun !