KeePass2 et la synchronisation SSH/SFTP entre Windows, Linux et Android.

KeePass2 et la synchronisation SSH/SFTP

Salut à tous, je vous avait parlé, il y déjà quelques temps, de la bonne gestion des mots de passe.  J’avais ouvert l’article sur LastPass qui permet une gestion plutôt réussi et sécurisée de vos mots de passe. Aujourd’hui on va plutôt se pencher sur KeePass2 et la synchronisation SSH/SFTP de sa base. Une bonne alternative « non-cloud » à LastPass et qui a, en plus, le bon goût d’avoir une certification CSPN par l’ANSSI.

Un des problèmes de LastPass et de ses concurrents dans le Cloud pour un usage en entreprise c’est que la société mère du produit est américaine. Avec les lois du type Patriot Act qui s’appliquent autant vous dire que la NSA peut demander l’accès aux mots de passe stockés par ce service dès qu’elle pense que c’est nécessaire. Donc autant pour un particulier, je ne pense pas que ça pose de gros problème : peu probable que la NSA en ai après vos photos de vacances et vos factures internet… Par contre pour une entreprise et à fortiori un organisme d’état c’est bien moins top de leur donner gratuitement tous les secrets d’authentification !

Donc aujourd’hui on va voir comment on peut installer KeePass et surtout le synchroniser la base de mot de passe entre différentes machines avec un serveur accessible en SSH.

KeePass

KeePass est donc un gestionnaire de mots de passe sous licence Open Source et qui protège votre base de mot de mot de passe en la stockant dans un fichier chiffré (.kdbx). Pour accéder à la base de mots de passe vous devez fournir un mot de passe maître. L’intérêt et l’inconvénient de KeePass par rapport à des version Cloud c’est que vous devez gérer vous-même ce fichier kdbx : accessibilité, sauvegarde restauration, corruption ne sont plus gérés par le fournisseur de service. Si vous avez foiré ou perdu votre base, Il n’y aura pas moyen de la récupérer… Vous ne pourrez pas dire que je ne vous ai pas prévenu. Du coup on va regarder comment un peut utiliser KeePass2 et la synchronisation SSH/SFTP entre Windows, Linux et Android.

Installer KeePass

Windows

On va utiliser la V2 dans cette article. Vous pouvez la télécharger sur le site officiel de KeePass pour Windows, KeePass s’installe sans  difficultés particulières sur les versions récentes de Windows.

Linux Ubuntu

Pour Linux les distributions fournissent en général un paquet keepass2 dans les repos officiels mais le plus souvent pas à jour, une alternative simple est le ppa de Julian Taylor (à priori il s’agit d’un acteur du projet Debian, à vous de voir si vous lui faite confiance) qui fournit les dernières version du Soft. On l’utilise sans trop de difficulté :

sudo add-apt-repository ppa:jtaylor/keepass
sudo apt-get update
sudo apt-get install keepass2

Concernant l’utilisation, Si vous n’en avez pas déjà un, il faudra créer un nouveau fichier coffre-fort de mot de passe (kdbx) et définir son mot de passe maître. Notez que si vous utilisez déjà un autre gestionnaire de mot de passe, KeePass supporte l’import d’une bonne partie des gestionnaires existant, la bascule vers KeePass se fait donc sans douleur.

KeePass2 et l'import de fichier externePlugins et KeePass.

Un des intérêts de KeePass c’est sa modularité, en effet le soft dispose d’un bon paquets de plugins communautaires, que vous trouverez donc ici. Ces plugins permettent d’ajouter tout un tas de fonctionnalités à KeePass allant de la sauvegarde de votre base sur Dropbox, à l’intégration d’un agent SSH pour gérer vos clés privées, en passant par la sauvegarde automatique.

« Les plugins ne sont pas forcément développés par l’équipe de développement et peuvent donc contenir du code hostile. Il est donc conseillé d’utiliser de manière précautionneuse ces plugins. » – Cible de Sécurité CSPN KEEPASS v2.10 portable

Comme ça, c’est dit : si KeePass bénéficie de la certification CSPN, ce n’est pas le cas de ses plugins. A vous de voir si vous faites assez confiance aux développeurs de ces plugins et à la communauté pour utiliser ces fonctionnalités supplémentaires.

A part ça, les plugins s’installent facilement, il suffit de copier les fichiers plgx associés dans le dossier « plugins » de KeePass et de redémarrer le logiciel.

  • Sous Windows par défaut dans : C:\Program Files (x86)\KeePass Password Safe 2\Plugins
  • Et sous Linux Ubuntu 16.04 : /usr/lib/keepass2/plugins

Un certain nombre d’extensions Firefox et Chrome fonctionne de concert avec ces plugins pour fournir un accès à la base de mot de passe directement dans le navigateur. Dans les couples de plugins extension intéressants on notera :

Il existe déjà plein de tutoriels sur le net qui expliquent comment mettre en place ces extensions donc je ne vais pas m’attarder là-dessus.

KeePass2 et la synchronisation SSH/SFTP du fichier KDBX

Comme je l’ai dit une limitation de KeePass c’est l’utilisation d’un fichier « traditionnel » pour stocker les données. Résultats : si vous changer de PC, vous perdez l’accès à votre base de mot de passe. Si vous égarer le fichier ou le supprimer par erreur (sans avoir de sauvegarde) vous perdez définitivement ces données.  Dans un environnement de plus en plus nomade, mobile ou nous sommes connecté 24h sur 24, c’est un peu embêtant…

Du coup, je vous propose de mettre en place une synchro via SSH de votre base sur un serveur distant (une Dedibox d’Online.net, un Raspberry Pi derrière votre Box ADSL, un serveur au boulot, etc.).

KeePass synchronisation SSH Sous Windows

Le plus simple, il vous suffit d’installer le plugin IOProtocolExt et d’ouvrir/synchroniser une URL avec la syntaxe suivante (en renseignant les champs d’authentifications) :

sftp://server.fq.dn/Path/To/keepass.kdbx

Et KeePass utilisera et synchronisera ce fichier distant plutôt qu’une base locale.

KeePass synchronisation SSH sous Linux

Paradoxalement on pourrait s’attendre à ce que la synchro SSH sous linux se fasse presque toute seule, mais non. KeePass étant un soft prévu pour Windows, il a des difficultés à utiliser SSH depuis ce système. Par contre, il est assez simple de contourner cette limitation à l’aide d’un SSHFS qui va monter localement notre base distante. A l’aide de la commande suivante :

mkdir /mnt/keepass
sshfs user@sserver.fq.dn:/Path/To/keepasskxdbDir /mnt/keepass

Ou directement en ajoutant une ligne dans votre fichier fstab :

sshfs#user@sserver.fq.dn:/Path/To/keepasskxdbDir /mnt/keepass fuse _netdev,user,idmap=user,transform_symlinks,identityfile=/home/intra/user/.ssh/.id_rsa_keepass,allow_other,default_permissions 0 0

Méfiez-vous des droits « file system » sur le dossier monté, celui-ci remonte avec les UID/GID positionné sur le système distant, donc il faut parfois bricoler un peu pour y avoir accès localement. Soyez aussi vigilant aux droits sur la clé SSH utilisé pour la connexion, cette dernière fourni un accès direct à votre serveur si vous avez utilisé un clé non-chiffrée et n’importe qui mettant la main de dessus aura la main sur votre machine. Donc chrootez un utilisateur dédié sur SSH, éventuellement verrouillez ce user en SFTP, mettez des droits 600 sur ce fichier de clé ; enfin bref couvrez un peu le truc.

Ouvrez ensuite KeePass et faite le travailler sur le fichier /mnt/keepass/keepass.kdbx et le tour est joué, vos deux KeePass sur Linux et Windows utiliserons le même fichier de base de mot de passe.

KeePass synchronisation SSH sous Android.

Bon et Android alors? et bien l’application KeePass2Android supporte nativement le protocole SSH.

Keepass2Android et t la synchronisation SSH/SFTP

Sélectionner l’accès SFTP et renseignez les informations sur l’emplacement de votre base de mot de passe :

IP : sserver.fq.dn
Chemin : /Full/Path/To/keepass/dbfile.kxdb
user
password

Et c’est plié, vous aurez accès à votre base de mot de passe depuis votre téléphone.

Conclusion

Voilà, avec cette configuration de KeePass2 et la synchronisation SSH/SFTP entre Windows, Linux et Android, vous obtiendrez un fonctionnement assez proche de celui d’un gestionnaire de mot de passe Cloud comme LastPass ou Dashlane mais en conservant la main sur vos mots de passe. En revanche en cas de corruption ou de perte de votre fichier de base de mot de passe, il n’y aura personne après qui pleurer et probablement aucun moyen de le récupérer. Donc à vous de voir selon vos besoins et votre niveau technique quel solutions est la plus approprié.

6 commentaires on “KeePass2 et la synchronisation SSH/SFTP entre Windows, Linux et Android.

  1. J’utilise une méthode similaire avec quelques différences :
    – keeweb sous linux
    – syncthing pour la synchronisation des fichiers entre les différents appareils (parmi tout un tas d’autres documents)

  2. Merci ce billet, je suis actuellement en train de creuser ce soucis de synchro de fichier kdbx, et tu me donnes l’idée du sshfs 🙂 Pour info sous Linux le logiciel Keepass2 n’est plus maintenu, maintenant il faut utiliser KeepassXC.

    • Yes le paquet keepass2 dans les repo officiel des distributions est une veille version dans la majorité des cas. Et effectivement l’autre option consiste à passer par KeepassXC (les différentes options sont bien expliqués dans la doc d’Ubuntu sur le sujet). Mais si mes souvenirs sont bons, j’avais rencontré des problèmes avec KeepassXC (avec les plugins peut-être ? je ne me rappel plus…) pendant la rédaction de l’article. C’est pour ça que j’utilise le ppa de J. Taylor qui propose la dernière version de keepass2 via mono (ici), mais encore faut-il lui faire confiance, mais ne posait pas de soucis de compatibilité lors de mes tests.

    • Quand le fichier .kdbx est modifié en parallèle depuis plusieurs appareil : Ça se passe bien !
      Plus en détails Le mécanisme de synchro se fait par « entrée » et pas au niveau de la base ou des champs. Donc tant que vous ne modifiez pas la même entrée simultanément depuis 2 appareils différents ça ne pose aucuns soucis. Dans le cas de modification en parallèle (genre un fichier keepass de service en entreprise édité par plusieurs personnes en même temps), le mécanisme est bien décrit dans la doc ici et utilise l’onglet history dans l’interface de Keepass pour les entrées. Voilou.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *