Mise à jour : Salut, pour info j’ai rédigé une version beaucoup plus complète de cet article (ici). Elle adresse en détail le sujet l’authentification forte avec une Yubikey. Il s’agit d’un papier que j’avais écrit pour MISC Magazine, bref c’est de la bonne lecture et ça complète très bien ce post. Maintenant que vous êtes prévenu, vous faites ce que vous voulez ! Bonne lecture et @+
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.
Plugins 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 :
- Le plugin KeePassHttp avec l’extension chromeIPass pour le navigateur Google Chrome.
- Le plugin KeePassRPC avec l’extension Kee (ex KeeFox) pour le navigateur Firefox.
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.
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é.
BSR
je voudrais synchroniser mon keepass avec mon serveur afin que toutes les modification que j’effectue a partir de ma machine soit directement modifier sur le serveur distant .
SVP comment faire?
Comme je l’explique dans l’article ? 🙂
IOProtocolExt sous Windows et un montage pour les Linux, ne pas hésitez à regarder les détails dans mon article MISC.
Bjr,
Je voudrais pouvoir synchroniser facilement mon Keepass sur mon Gsm Android avec celui qui est sur mon PC fixe sous Windows. Comment faire ? Je ne comprends pas bien ce qui est indiqué sous votre paragraphe « KeePass synchronisation SSH sous Android. ».
Que dois je faire sur mon PC et sur mon Gsm pour que quand j’encode une entrée sur mon Gsm , elle se retrouve sur mon PC et vice-versa ?
merci pour votre aide
Bonjour Patrick, en fait, j’ai écrit la suite de ce billet dans la revue spécialisée MISC (n°103) où j’ai fait une version beaucoup, beaucoup, plus détaillée. Comme introduit dans ce billet lors de la parution.
Du coup, tu peux te le procurer sur le site des éditions Diamond ici.
Autrement une alternative simple et facile, si la complexité technique de la solution te pose problème, consiste simplement à stocker ta base KeePass sur un Google/One Drive et laisser ce service s’occuper de la synchronistation entre ton PC et ton téléphone.
Pour info, l’article dans MISC sera republié sur le site à un moment, selon les conditions de la licence type B (voir).
@+
Il semble que IOProtocolExt 2.x ne soit plus supporté par Keepass v2.36 chez moi en tout cas…
C’est peut-être parce que Keepass est désormais en version 2.41 ? Il suffit de mettre à jour Keepass en version 2.40 ou supérieure.
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)
Je ne connaissais pas keeweb, merci pour le partage info !
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.
Et quand le fichier keepass est modifié depuis différents appareils que se passe-t-il ?
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.