J'ai découvert récemment le service Dropbox qui permet de synchroniser des fichiers entre plusieurs machines. Mais mon goût de la liberté me pousse à chaque fois à fuir ce genre de services commerciaux, bien que gratuits, qui ne me garantissent pas la sécurité de mes données ni le respect de ma vie privée.
J'ai donc cherché une solution pour pouvoir stocker des données sur un serveur distant sur lequel j'ai un accès ssh afin de pouvoir y accéder depuis mes différentes machines (y compris depuis le boulot). En parcourant le net et notamment le site doc.ubuntu-fr.org j'ai réalisé que la combinaison de deux technologies basées sur Fuse répondait parfaitement à mon attente.
Le principe
On monte tout d'abord un dossier du serveur distant dans un dossier local grâce à sshfs. De cette manière, tout ce que l'on écrit dans ce dossier se trouve stocké sur le serveur.
On monte ensuite un système d'encryptage de ce dossier dans un nouveau dossier. Là, tout ce qui sera écrit dans ce nouveau dossier sera crypté par le système encfs puis stocké sur le serveur au travers de sshfs.
Si on empile les couches utilisées avec les noms de dossier utilisés dans l'exemple ci-après, on obtient ceci :
machine locale : ~/SecuredBox/
encfs
machine locale : ~/.remotesshfs/.cryptedfolder/
sshfs
serveurDistant.fr : /home/loginSurServeurDistant/.cryptedfolder/
En résumé, tout ce qui sera écrit en local dans le dossier ~/SecuredBox/ sera en réalité stocké de manière cryptée dans le dossier /home/loginSurServeurDistant/.cryptedfolder/ de la machine distante.
Installation
Les paquets nécessaires
On installe tout d'abord les paquets sshfs, encfs, fuse-utils
sudo apt-get install sshfs encfs fuse-utils
Configuration de Fuse
On active fuse pour les prochains démarrage
sudo sh -c "echo fuse >> /etc/modules"
On charge le module fuse pour cette session, cela évite de rebooter.
sudo modprobe fuse
On ajoute son compte au groupe fuse
sudo adduser $(whoami) fuse
On réouvre une session pour prendre en compte l'ajout au groupe
su - $(whoami)
Création du système encfs over sshfs
On crée un dossier local qui va servir de point de montage au dossier distant
mkdir ~/.remotesshfs
On monte le dossier distant par sshfs
sshfs loginSurServeurDistant@serveurDistant.fr: ~/.remotesshfs -o uid=$UID,gid=$(id -g)
Désormais .remotesshfs correspond au dossier home de l'utilisateur sur le serveur distant
On crée un dossier distant qui va contenir les fichiers cryptés
mkdir ~/.remotesshfs/.cryptedfolder
On crée un dossier local qui va servir de point de montage pour la version claire des fichiers
mkdir ~/SecuredBox
On monte le système de cryptage
encfs /SecuredBox -- -o uid=$UID,gid=$(id -g)
On choisit p pour le mode parano de base et on saisie le mot de passe de cryptage. Attention, ce mot de passe sera nécessaire pour accéder de nouveau aux données cryptées.
Voilà, tout ce qui va être mis dans le dossier ~/SecuredBox va en fait être crypté dans le dossier distant .cryptedfolder
Après utilisation, on démonte le système de cryptage
fusermount -u ~/SecuredBox
puis le système sshfs
fusermount -u ~/.remotesshfs
Utilisation courante
Depuis la même machine
Pour utiliser de nouveau le dossier SecureBox
sshfs loginSurServeurDistant@serveurDistant.fr: ~/.remotesshfs -o uid=$UID,gid=$(id -g) encfs /SecuredBox -- -o uid=$UID,gid=$(id -g)
On ressaisie le mot de passe qui a servi au cryptage
Depuis une nouvelle machine
Il est alors nécessaire de répéter les mêmes opérations que dans la phase d'installation.
Démontage du système encfs over sshfs après utilisation du dossier ~/SecuredBox/
fusermount -u ~/SecuredBox fusermount -u ~/.remotesshfs
En cas de soucis, consultez la documentation plutôt claire de sshfs et de encfs.
Le système ssh et ses différentes utilisations m'impressionnera toujours autant !