Vous êtes ici : Accueil > Astuces ubuntu > Sécuriser Filezilla avec EncFS

Sécuriser Filezilla avec EncFS

Suite à la lecture d'un article, j'ai découvert que filezilla stocké les mots de passe des sites ftp enregistrés en clair sous windows dans un fichier xml :s ....

Je me suis donc logiquement demandé s'il en était de même pour la version Linux...

Direction mon dossier filezilla (/home/user/.filezilla) et là, comme je m'en doutais, le fichier site-manager.xml contient toutes mes adresses ftp avec leur login + mot de passe associés et tout cela en clair !!! Sans vouloir être trop parano, je penses que de garder des informations aussi sensibles dans un fichier en clair est pour moi une faille de sécurité importante !!! On peut être en droit de se demander, pourquoi un client FTP aussi connu que Filezilla continue de stocker de telles informations sans un minimum de sécurité ....

Je me suis donc demander comment faire en sorte que ces informations ne soient pas accessibles par n'importe qui ? Pour répondre a cette question, je me suis penché sur le chiffrement des données avec le logiciel encfs.

Ce tutoriel a été vaildé sur Ubuntu 10.10 mais doit surement être adaptables aux autres distribution.

Présentation de EncFS:

Encfs permet de chiffrer vos données sensibles et/ou privées, mais sans chiffrer tout votre disque dur. Idéalement, vous voudriez pouvoir restreindre l'accès à certains répertoires seulement, par mot de passe. Les données stockées dans ce ou ces répertoire(s) seraient chiffrées et accessibles uniquement après authentification.

EncFS permet de réaliser cela très simplement. Pour ce faire, EncFS utilise deux répertoires :

  1. un premier répertoire dans lequel seront stockées les données chiffrées ("source directory") ;
  2. un second répertoire dans lequel vous pourrez créer des données en clair, après authentification ("mount directory").

L'idée est la suivante : vous donnez temporairement accès au second répertoire en fournissant un mot de passe (initialement choisi par vous), et créez vos données en clair dans ce répertoire. Ensuite, vous refermez l'accès à ce répertoire. EncFS s'occupe de "copier" les données du second répertoire (accès temporaire) vers le premier (stockage permanent), tout en les chiffrant. Après avoir fermé l'accès au second répertoire, ce dernier apparaît vide, tandis que le premier répertoire contient les fichiers chiffrés, donc inaccessibles. Pour pouvoir de nouveau modifier les données conservées dans le répertoire de stockage, il faut redonner accès par mot de passe au second répertoire, qui sert donc de répertoire de travail.

Note : 

EncFS gère donc des couples de fichiers « en clair / chiffré ». Dans le répertoire de stockage, les noms de fichiers sont par ailleurs chiffrés. Les avantages d'EncFS par rapport aux autres programmes de chiffrement de données sont principalement sa simplicité et sa souplesse d'utilisation.

Installation d'EncFS :

Pour installer EncFS rien de plus simple, ouvrez le terminal et éxécutez la commande suivante :

sudo apt-get install fuse-utils encfs

Une fois EncFS installé, nous allons maintenant voir comment sécuriser filezilla.

Sécurisation de Filezilla :

Comme expliqué dans la première partie, nous aurons besoin de deux répertoires, un répertoire où seront stockés les données chiffrées et un autre répertoire qui sera monté avec les données en clair (faut bien que filezilla puisse lire ses fichiers quand même 🙂 )

Nous allons donc dans un premier temps faire une copie du répertoire de filezilla dans un répertoire de backup (cela nous servira plus tard ...) :

mkdir/home/$USER /.filezilla-backup
cp /home/$USER/.filezilla/* /home/$USER /.filezilla-backup/

Une fois la copie terminée, et s'il n'y a pas eu d'erreurs lors de la copie (sa serait bête de devoir réinstaller filezilla ... ! ), nous allons supprimer le dossier /home/$USER/.filezilla !! Oui oui vous avez bien lu ! Mais ne vous inquiétez pas, il sera recréé par EncFS par la suite 🙂

rm -rf /home/$USER/.filezilla

Une fois le dossier .filezilla supprimé, nous allons pouvori nous attaquer à la partie chiffrement des données.

Chiffrement des données :

Nous allons donc maintenant demander à EncFS de créer deux répertoires (le répertoire crypté et le répertoire qui sera monté avec les données en clair). La syntaxe de la commande est la suivante :  encfs /chemin/vers/ledossier/crypté/ /chemin/vers/ledossier/avec/lesdonnées/enclair/. Ce qui dans notre cas donnera :

encfs /home/$USER/.filezilla-crypt/ /home/$USER/.filezilla/

Attention, la commande encfs attend des chemins complets : écrivez donc /home/$USER/ et pas le raccourci ~/ !

Comme les répertoires cités ci dessus n'existent pas EncFS propose de les créer :

 ced@ced-desktop:~$ encfs /home/$USER/.filezilla-crypt/ /home/$USER/.filezilla
  The directory "/home/ced/.filezilla-crypt/" does not exist. Should it be created? (y,n) y
  The directory "/home/ced/.filezilla/" does not exist. Should it be created? (y,n) y

EncFS nous propose ensuite de mode de chiffrement :

Veuillez choisir au moins une des options suivantes :
  entrez "x" pour le mode de configuration expert,
  entrez "p" pour un mode pré-configuré paranoïaque,
  n'importe quoi d'autre ou une ligne vide sélectionnera le mode standard.
  ?> p

  Configuration paranoïaque sélectionnée.

Un mode expert et un mode paranoïaque nous est proposé, vous pouvez choisir le mode "paranoïaque" en tapant "p" puis [Entrée]. Ce mode est le plus sécurisé.

Vous devriez obtenir ceci :

 Configuration terminée. Le système de fichiers sur le
  point d'être créé a les caractéristiques suivantes :
  Chiffrement de système de fichiers "ssl/aes", version 2:1:1
  Encodage du nom de fichier : "nameio/block", version 3:0:1
  Taille de clé : 256 bits
  Taille de bloc : 512 octets, y compris 8 octets d'en-tête MAC
  Chaque fichier comprend un en-tête de 8 octets avec des données IV uniques.
  Nom de fichiers chiffrés en utilisant le mode de chaînage IV.
  L'IV des données du fichier est chaînée à l'IV du nom de fichier.

  -------------------------- AVERTISSEMENT --------------------------
    The external initialization-vector chaining option has been
    enabled.  This option disables the use of hard links on the
    filesystem. Without hard links, some programs may not work.
    The programs 'mutt' and 'procmail' are known to fail.  For
    more information, please see the encfs mailing list.
    If you would like to choose another configuration setting,
    please press CTRL-C now to abort and start over.

    Vous devez entrer un mot de passe pour votre système de fichiers.
    Vous devez vous en souvenir, car il n'existe aucun mécanisme de récupération.
    Toutefois, le mot de passe peut être changé plus tard à l'aide d'encfsctl.

EncFs vous demande ensuite de rentrez un mot de passe. C'est ce mot de passe qui sera utilisé pour déchiffrer le dossier .filezilla-crypt dans le dossier .filezilla

Une fois votre mot de passe rentré, vous pouvez vérifier le montage du répertoire chiffré avec la commande :

cat /proc/mounts

Vous devriez obtenir une ligne de ce type :

encfs /home/ced/.filezilla fuse.encfs rw,nosuid,nodev,relatime,user_id=1000,group_id=1000,default_permissions 0 0

Si vous avez cette ligne, le répertoire .filezilla est bien "lié" au répertoire .filezilla-crypt !! 🙂

Nous allons maintenant rapatrier les données de Filezilla qui ont été sauvegardées dans le répertoire .filezilla-backup (je vous avez bien dit que ce répertoire aller nous servir ... 🙂 )

cp /home/$USER /.filezilla-backup/* /home/$USER/.filezilla

Normalement toutes les données contenues auparavant dans le dossier /home/$USER/.filezilla sont de nouveaux présentes !

Pour démonter le répertoire /home/$USER/.filezilla et ainsi chiffrer les données de Filezilla vers le répertoire home/$USER/.filezilla-crypt, il faut utiliser la commande suivante :

fusermount -u /home/$USER/.filezilla

Utilisation :

L'utilisation d'EncFS est des plus simples. Elle peut être comparé à un bouton de type ON/OFF :

1. ON Pour accéder aux données en clair, il suffit de réutiliser la même commande qu'au début, à savoir :

encfs /home/$USER/.filezilla-crypt/ /home/$USER/.filezilla/

Contrairement à la première fois, EncFS détecte qu'une initialisation a déja été faite sur ces deux répertoires et se contente de demander le mot de passe pour débloquer l'accès au répertoire « de travail » (qu'il montera pour vous avec la commande fusermount).

Toute donnée crée/copiée/déplacée en clair dans le répertoire de travail (ici, ~/.filezilla) sera automatiquement stockée sous forme chiffrée dans le répertoire de stockage (ici, ~/.filezilla-crypt).

2. OFF Pour ne plus pouvoir accéder aux données en clair, il suffit de démonter le répertoire « de travail » :

fusermount -u /home/$USER/.filezilla

Voilà vos données sont maintenant bien à l'abris des personnes mal intentionnées ! Mais je dois reconnaitre que lancer ces commandes avec un script c'est nettement plus agréable à l'utilisation.

Lancement de Filezilla avec un script :

Je me suis donc fait un petit script qui va déchiffrer le dossier .filezilla-crypt dans le dossier .filezilla, puis lancer notre client FTP et ensuite rechiffrer le tout une fois Filezilla fermé. Voici ce script :

#!/bin/bash
#
# ced-info.com
# 13/11/2010
#

##### Décryptage du dossier de filezilla ######
OPENFOLDER=/home/ced/.filezilla
CRYPTEDFOLDER=/home/ced/.filezilla-crypt

gksudo -p -m "Top secret - Filezilla" | encfs  $CRYPTEDFOLDER $OPENFOLDER

##### Lancement de filezilla + recryptage du dossier une fois filezilla fermé #####
/usr/bin/filezilla && fusermount -u $OPENFOLDER
zenity --info --text="Filezilla is now secure ;) !"

Enregistrez ce script dans un fichier filezilla.sh et rendez ce fichier éxécutable avec la commande suivante :

chmod +x /chemin/vers/votre/script.sh

Personnellement, j'utilise cairo-dock pour lancer mon Filezilla. J'ai donc changer la commande a éxécuter au clic en remplaçant la commande filezilla par l'éxécution de mon script sh /home/ced/scripts/filezilla.sh.

Après avoir bien vérifier que tout fonctionne correctement, vous pouvez supprimer le dossier /home/$USER/.filezilla-backup car cela ne sert a rien de chiffrer les données de Filezilla et de laisser les anciennes en clair 🙂

rm -rf /home/$USER/.filezilla-backup

J'espère que cet article vous aura été utile. N'hésitez pas à laisser vos remarques ou vos suggestions 😀

  • sam

    Merci pour votre article intéressant
    mais pourquoi continuer à utiliser filezilla puisque qu'il n'est pas sécurisé ?
    c'est le problème des logiciels open source en générale
    Pour ma part j'ai tout simplement décider de ne pas mémoriser les mots de passe sur fillezilla
    trop dangereux. des centaines de site wordpress se sont fait hacker de cette manière
    bonne journée

    • ced

      Personnellement, je n'utilise Filezilla que pour de très rare occasions et sans mémoriser les identifiants. Depuis que j'ai mon serveur personnel, j'effectue tous mes transferts via SCP.
      Mais je penses que cet article est quand même utile pour justement sécuriser un minimum ce logiciel, pour les personnes qui n'ont pas forcement de serveur personnel à leur disposition (par exemple celles qui utilisent un hébergement mutualisé) et qui n'ont donc que le transfert FTP à leur disposition pour déposer des fichiers.