15 Jan 2020, 13:14

Un gestionnaire de mot de passe pour les gouverner tous.

Toute personne utilisant un ordinateur, téléphone ou autres a et utilise des mots de passe au quotidien pour sécuriser ses accès. Aujourd’hui avec la multiplication de ceux-ci et de leurs complexités, il est très souvent devenu indispensable d’utiliser un gestionnaire de mots de passe ; ou d’utiliser le même mot de passe partout et de perdre tous ses comptes en même temps, ce que je ne recommande pas bien sûr.

Et là c’est l’embarras du choix, LastPass, DashLane, KeePass et j’en passe. Personnellement et dans le cadre de mon travail, j’utilise [Pass] depuis plusieurs années. Combiné à plusieurs outils, je pense que c’est un système très intéressant pour les utilisateurs avancés. J’ai aujourd’hui une configuration que je trouve efficace et qui me donne un niveau de sécurité plutôt bon. Je vous partage donc ce que j’ai appris de cet outil et mes configurations. ;)

Hand with key.

Simple et efficace, ça Pass !

Alors globalement qu’est-ce que Pass apporte ? Tout d’abord, un peu de contexte, j’utilise au quotidien un environnement Debian et j’aime utiliser au maximum de protocoles et outils standards pour des raisons d’ouverture et d’inter-opérabilité. C’est ça que j’apprécie dans Pass, c’est un gestionnaire de mots de passe développé dans l’idéologie KISS (Keep.It.Simple.as.Stupid). Pass ne réinvente pas la roue et se base tout simplement sur le PGP pour chiffrer les mots de passe. Ceux-ci sont stockés dans ~/.password-store.

Disponible nativement dans les dépôts Debian (et dans les dépots des principales distributions), il s’installe facilement avec la commande apt.

De base l’outil fonctionne uniquement à l’aide d’une interface en ligne de commande. Bien qu’efficace elle pourrait paraitre austère à certains. Mais c’est là qu’on touche à une grande qualité de Pass, il existe de nombreux modules permettant d’intégrer une interface graphique, d’exporter ses mots de passe, de connecter Pass à son navigateur à l’aide d’extensions disponibles ici). Je vous conseille d’ailleurs passff si vous utilisez Firefox.

Pour l’installation, comme évoqué plus haut, rien de plus simple :

sudo apt update
sudo apt install pass

Pass utilisant une clé PGP, pour en créer une si vous n’en avez pas vous pouvez utiliser la commande suivante:
Exemple d’options:RSA, 2048, not expire, votre@mail.com

gpg --gen-key

Ensuite pour initialiser votre repository :

pass init votre@mail.com

Voilà pass est installé ! Voici quelques commandes de base :

Voir son arborescence de mot de passe :

pass

Générer un nouveau mot de passe : pass generate

Astuce: Ajoutez PASSWORD_STORE_GENERATED_LENGTH=32 dans votre environnement pour définir la longueurs des mots de passe qu’il génère.

Copier un mot de passe:

pass -c monMotDePasse

Centraliser, versionner ? Git !

Bon c’est bien beau mais si vous avez suivi, mes mots de passe sont juste des fichiers chiffrés avec PGP placés dans ~/.password-store. Comme je l’avais précisé c’est l’idéologie KISS, faire une chose simple mais bien.

Quand on utilise des mots de passe au quotidien, deux fonctions vont très rapidement nous manquer: comment versionner et comment partager ses mots de passe. Il existe un outil standard qui répond très bien à ces deux besoins : Git ! Ce qui tombe plutôt bien vu que Pass a décidé de faire simple.

Pass implémente directement Git et ses commandes. Il suffit de placer la commande pass devant. Dans notre exemple, nous allons donc initialiser le dépôt Git. Il n’est pas nécessaire d’être dans le répertoire:

pass git init

Ensuite on définit le répertoire distant :

pass git remote add origin git@votreReposGit:/votreProjet

Important: Mettez les dans un répertoire privé. Même si les mots de passe sont entièrement chiffrés, vos arborescences peuvent aider d’éventuels attaquants.

Pour finir il ne reste qu’à push :

pass git push

Voilà vos mots de passe sont versionnés et synchronisés !

Aller plus loins avec la YubiKey

Donc on a nos mots de passe chiffrés, synchronisés et versionnés. On commence donc à avoir un gestionnaire de mot de passe très efficace. Néanmoins on peut encore améliorer un peu la sécurité. En effet, même si celle-ci est protégée par une pass-phrase, la clé PGP est sur le même périphérique que vos mots de passe.

Deux choix s’offrent à nous, stocker les mots de passe sur un périphérique séparé ou stocker la clé sur un périphérique séparé. J’ai choisi la clé pour des questions de simplicité, en effet, la solution existe déjà. J’ai choisi YubiKey, elle est assez connue et sert principalement à faire de l’authentification à double facteur. Elle permet aussi la fonctionnalité de smartcard GPG !

YubiKey5NFC

Comment ça marche ?

La clé stocke vos clés privées PGP. Lors de l’utilisation de la clé privée par l’agent pour déchiffrer vos mots de passe, celui-ci va aller chercher la clé privée dans le magasin de la YubiKey. Sans elle, il n’y a pas de clé privée sur le PC.

Pour conclure, il existe d’autres solutions sur le marché mais utilisant la YubiKey 5 NFC également pour la double authentification, j’ai choisi de rester sur celle-ci. Je n’ai pas eu de soucis de compatibilité ni de difficulté à la faire fonctionner.

Pour savoir comment déplacer votre secret sur votre clé et comment sécuriser celle-ci je vous conseille ce très bon article de NextInpact : Clefs GPG : comment les stocker et les utiliser via une clef USB OpenPGP Card ?

Attention: Il faut bien penser à sauvegarder votre clé privée de préférence hors ligne en cas de perte de votre clé YubiKey.

Conclusion

La configuration de Pass, bien qu’un peu plus exigeante que d’autres alternatives grand public, est très personnalisable et assez facile après seulement quelques minutes de manipulation. Je dois bien avouer il y a quelques années, avoir eu des réticences à confier tous mes mots de passe à un gestionnaire, mais l’utilisation de grands standard et le choix de toutes les solutions de chiffrement et de stockage / synchronisation, m’ont clairement convaincu de lui faire confiance ce qui est à mon sens le plus important pour un gestionnaire de mot de passe.

Austère au premier regard, on l’apprécie très vite pour sa flexibilité, son efficacité et son utilisation de standard. Il est pour moi, comme Vim ou Firefox un outil indispensable.

Pour les utilisateurs d’AWS, vous pouvez utiliser Pass en backend d’aws-vault, en précisant --backend=pass ou avec la variable d’environnement AWS_VAULT_BACKEND=pass