Un peu de suivi sur la question de la gestion des mots de passe au quotidien. Il y a deux ans, nous vous présentions dans cet article les pré-requis et les choix technologiques (Seafile + KeePass) que nous avions retenu. Cette solution est restée fonctionnelle et satisfaisante, mais quelques (presque) nouveautés nous ont convaincu.
Nous vous avions parlé de syspass en mentionnant discrètement un "élégant clone de Bitwarden". Après 6 mois d'utilisation personnelle, il fut proposé au reste de l'équipe. Et après 6 mois d'utilisation collective, on vous en parle.
Il va être compliqué de parler de Vaultwarden sans parler de sa version open source certes, mais surtout commerciale, Bitwarden. Pour faire court et laisser à sa réimplémentation en Rust les lauriers de ses fonctionnalités, reconnaissons principalement l'efficacité de ses clients, qui fonctionnent parfaitement avec Vaultwarden. Que vous soyez sous Firefox, Chromium/Chrome, Android, iOS, vous retrouverez le même client, avec la même interface, sans grand reproche à lui faire (et nous n'avons pas testé les clients desktop, mais vu l'uniformité sur le reste des plateformes, on vous les conseille sans trop prendre de risque).
Passons maintenant à Vaultwarden!
Des fonctionnalités en pagaille
Un point essentiel dans l'acceptation de l'outil, on trouve rapidement dans l'interface l'outil pour importer vos anciens mot de passe avec plus de 50 formats supportés. Outre l'import de notre vieux fichier au format KeePass2, nous avons validé pour vous les imports : Chrome, Password Safe et Passbolt
Comparé à notre précédent système (un unique fichier chiffré avec une passphrase connue de l'ensemble de l'équipe), on a gagné quelques fonctionnalités. Tout d'abord, Vaultwarden nous permet maintenant une gestion des comptes utilisateurs et de groupes ("Organizations"). La gestion de compte permet facilement l'arrivée ou le départ d'utilisateurs, chacun possédant d'ailleurs son "Vault" privé dans lequel il peut stocker ses mots de passe. La gestion de groupes nous a permis d'étendre grandement le partage des mots de passe (pour atteindre le même niveau de satisfaction, on aurait dû faire plusieurs fichiers KeePass avec chacun leur passphrases, une lourdeur qui nous avait jusqu'alors bloqué dans un entre-deux où seulement la part minimum de nos mots de passe se retrouvaient partagés). On retrouve évidemment ce que l'on attend, les différents types d'utilisateurs ("User", "Manager", "Admin", "Owner"), la limitation d'accès à un groupe, voir même uniquement à un ou des dossiers d'un groupe. On notera en particulier la possibilité très appréciable de donner un accès en "Hide Passwords" (l'extension de l'explorateur sera capable de remplir le mot de passe mais l'utilisateur ne le verra pas !), parfait pour un intervenant externe, un stagiaire, ...
Vaultwarden fournit aussi un ensemble de rapports sur vos mots de passe. Vos mots de passe ont-ils (encore) été exposés dans des leaks récentes ou anciennes ? Utilisez-vous (encore) le même mot de passe pour différents comptes ? Avez-vous (encore) des mots de passe que l'on peut considérer comme faibles ? Est-ce que vous n'utilisez (encore) pas de 2FA alors que le site le propose ? Toute une série de questions auxquelles il est difficile de répondre manuellement vu le nombre de mots de passe utilisés. Vaultwarden vous offre ça en deux clics.
On trouve aussi un bon générateur de mot de passe et de passphrase configurable à souhait et appelable directement sur une page de création de compte avec un clic droit.
Et last but not least, l'intégration 2FA. Elle existe théoriquement sous KeePassXC, mais suivant les plateformes elle était accessible... ou non. Ici on la trouve directement dans chaque fiche de mot de passe et on peut même scanner directement via les applications sur téléphone pour renseigner le champ "automagiquement". On pourrait reprocher aux extensions de ne pas détecter le champ TOTP et le remplir automatiquement, mais il semblerait que ces champs soient moins bien uniformisés que ceux des identifiants/mots de passe. Au moment de la rédaction de ce paragraphe, j'ai tout de même découvert que l'extension de mon explorateur mettait dans le presse-papier le TOTP après avoir automatiquement rempli les identifiants, un simple "ctrl-v" à la page suivante suffi donc à remplir le code TOTP!
Enfin un petit bonus (pour utilisateurs paranoïaques) ou malus (pour celui qui oubliera sa passphrase), il n'y a pas de fonction de récupération de compte. D'un côté vous serez responsable de la perte de vos mots de passe, mais de l'autre vous n'avez pas à vous poser la question de la bienveillance ou non de votre admin préféré. Sans votre passphrase, ni récupération ni intrusion possible.
Installation et build de Vaultwarden
Utilisé dans un premier temps avec l'image Docker fournie, l'usage a été pérénisé en automatisant les deux builds bien documentées nécessaires au fonctionnement de Vaultwarden (Vaultwarden, le coeur en Rust, et web-vault, l'interface web). Vous pouvez aussi bien utiliser les releases de l'un comme de l'autre. La configuration Apache et le service Systemd sont triviaux.
Un peu de sucre d'admin parano
Le premier point qui nous a gêné était la perte d'historique par rapport à notre Seafile et donc la possibilité de corriger une erreur humaine. On s'est accordé que le problème n'était pas tant d'identifier le coupable que la possibilité de revenir en arrière. Nous avons donc décidé de rester sur une base de données sqlite3 (avec une petite quinzaine d'utilisateurs pour plus de 1 500 mots de passe stockés, on est à 6M) en se gardant un backup local de la base toutes les 5 minutes sur 24h (on pousse à un peu plus de 600M de backups, bien penser à utiliser la command backup de sqlite). Couplé avec notre système de backup glissant (8 derniers jours, 4 dernières semaines et 12 derniers mois), on s'est donné un niveau de stress minimal sur le risque de perdre des données.
Le deuxième point de tension était sur l'exposition au monde de l'interface de Vaultwarden. Bien que l'équipe de dev de Vaultwarden ait l'air très sérieuse, il nous a semblé difficile de l'être, nous, en utilisant Vaultwarden ouvertement via une URL publique (pour l'interface utilisateur, Vaultwarden propose une interface admin, celle là reste cachée, point). La solution la plus appropriée est bien évidemment le VPN de l'entreprise, ce qui a été mis en place. Mais ce faisant, on perdait son usage sur nos téléphones (et qui veut connecter son iDevice à un réseau sérieux ?). Ce n'était pas vraiment acceptable ni professionnellement, ni dans l'objectif de fournir aux employés ce gestionnaire de mots de passe y compris à usage personnel.
Un compromis a été trouvé en bloquant l'accès public à l'URL publique de notre Vaultwarden aux IP fixes des ours qui en ont (le très simple "Require ip" d'Apache fait le job) et en laissant aux autres l'accès via le VPN.
Pour ceux avec IP fixe, on peut synchroniser ordinateur et téléphone de chez soi, et utiliser le cache lors de déplacement.
Pour ceux sans IP fixe, on peut assez facilement faire un reverse proxy sur un ordinateur ayant accès au VPN pour donner à son téléphone l'accès sur son réseau local, et retomber donc sur le cas précédent (avec un petit jeu pour que votre CA et celui de l'entreprise soit reconnu).
server {
listen 443 ssl http2;
server_name vaultwarden.yourlocalnetwork.lan;
ssl_certificate /path/to/certificate.pem;
ssl_certificate_key /path/to/certificate.key;
location / {
proxy_pass https://vaultwarden.yourenterprisenetwork.lan;
}
}
Bilan
Après 6 mois d'utilisation chez Bearstech et un peu plus d'un an pour ma part, Vaultwarden s'impose comme une solution fiable pour la gestion de vos mots de passe et bénéficie du sérieux commercial de Bitwarden pour ses clients (extensions, apps, ...). L'essayer c'est l'adopter ! Et pour la suite on a promis de tester Cozy Pass, à dans 2 ans.
Nous vous avions parlé de syspass en mentionnant discrètement un "élégant clone de Bitwarden". Après 6 mois d'utilisation personnelle, il fut proposé au reste de l'équipe. Et après 6 mois d'utilisation collective, on vous en parle.
Il va être compliqué de parler de Vaultwarden sans parler de sa version open source certes, mais surtout commerciale, Bitwarden. Pour faire court et laisser à sa réimplémentation en Rust les lauriers de ses fonctionnalités, reconnaissons principalement l'efficacité de ses clients, qui fonctionnent parfaitement avec Vaultwarden. Que vous soyez sous Firefox, Chromium/Chrome, Android, iOS, vous retrouverez le même client, avec la même interface, sans grand reproche à lui faire (et nous n'avons pas testé les clients desktop, mais vu l'uniformité sur le reste des plateformes, on vous les conseille sans trop prendre de risque).
Passons maintenant à Vaultwarden!
Des fonctionnalités en pagaille
Un point essentiel dans l'acceptation de l'outil, on trouve rapidement dans l'interface l'outil pour importer vos anciens mot de passe avec plus de 50 formats supportés. Outre l'import de notre vieux fichier au format KeePass2, nous avons validé pour vous les imports : Chrome, Password Safe et Passbolt
Comparé à notre précédent système (un unique fichier chiffré avec une passphrase connue de l'ensemble de l'équipe), on a gagné quelques fonctionnalités. Tout d'abord, Vaultwarden nous permet maintenant une gestion des comptes utilisateurs et de groupes ("Organizations"). La gestion de compte permet facilement l'arrivée ou le départ d'utilisateurs, chacun possédant d'ailleurs son "Vault" privé dans lequel il peut stocker ses mots de passe. La gestion de groupes nous a permis d'étendre grandement le partage des mots de passe (pour atteindre le même niveau de satisfaction, on aurait dû faire plusieurs fichiers KeePass avec chacun leur passphrases, une lourdeur qui nous avait jusqu'alors bloqué dans un entre-deux où seulement la part minimum de nos mots de passe se retrouvaient partagés). On retrouve évidemment ce que l'on attend, les différents types d'utilisateurs ("User", "Manager", "Admin", "Owner"), la limitation d'accès à un groupe, voir même uniquement à un ou des dossiers d'un groupe. On notera en particulier la possibilité très appréciable de donner un accès en "Hide Passwords" (l'extension de l'explorateur sera capable de remplir le mot de passe mais l'utilisateur ne le verra pas !), parfait pour un intervenant externe, un stagiaire, ...
Vaultwarden fournit aussi un ensemble de rapports sur vos mots de passe. Vos mots de passe ont-ils (encore) été exposés dans des leaks récentes ou anciennes ? Utilisez-vous (encore) le même mot de passe pour différents comptes ? Avez-vous (encore) des mots de passe que l'on peut considérer comme faibles ? Est-ce que vous n'utilisez (encore) pas de 2FA alors que le site le propose ? Toute une série de questions auxquelles il est difficile de répondre manuellement vu le nombre de mots de passe utilisés. Vaultwarden vous offre ça en deux clics.
On trouve aussi un bon générateur de mot de passe et de passphrase configurable à souhait et appelable directement sur une page de création de compte avec un clic droit.
Et last but not least, l'intégration 2FA. Elle existe théoriquement sous KeePassXC, mais suivant les plateformes elle était accessible... ou non. Ici on la trouve directement dans chaque fiche de mot de passe et on peut même scanner directement via les applications sur téléphone pour renseigner le champ "automagiquement". On pourrait reprocher aux extensions de ne pas détecter le champ TOTP et le remplir automatiquement, mais il semblerait que ces champs soient moins bien uniformisés que ceux des identifiants/mots de passe. Au moment de la rédaction de ce paragraphe, j'ai tout de même découvert que l'extension de mon explorateur mettait dans le presse-papier le TOTP après avoir automatiquement rempli les identifiants, un simple "ctrl-v" à la page suivante suffi donc à remplir le code TOTP!
Enfin un petit bonus (pour utilisateurs paranoïaques) ou malus (pour celui qui oubliera sa passphrase), il n'y a pas de fonction de récupération de compte. D'un côté vous serez responsable de la perte de vos mots de passe, mais de l'autre vous n'avez pas à vous poser la question de la bienveillance ou non de votre admin préféré. Sans votre passphrase, ni récupération ni intrusion possible.
Installation et build de Vaultwarden
Utilisé dans un premier temps avec l'image Docker fournie, l'usage a été pérénisé en automatisant les deux builds bien documentées nécessaires au fonctionnement de Vaultwarden (Vaultwarden, le coeur en Rust, et web-vault, l'interface web). Vous pouvez aussi bien utiliser les releases de l'un comme de l'autre. La configuration Apache et le service Systemd sont triviaux.
Un peu de sucre d'admin parano
Le premier point qui nous a gêné était la perte d'historique par rapport à notre Seafile et donc la possibilité de corriger une erreur humaine. On s'est accordé que le problème n'était pas tant d'identifier le coupable que la possibilité de revenir en arrière. Nous avons donc décidé de rester sur une base de données sqlite3 (avec une petite quinzaine d'utilisateurs pour plus de 1 500 mots de passe stockés, on est à 6M) en se gardant un backup local de la base toutes les 5 minutes sur 24h (on pousse à un peu plus de 600M de backups, bien penser à utiliser la command backup de sqlite). Couplé avec notre système de backup glissant (8 derniers jours, 4 dernières semaines et 12 derniers mois), on s'est donné un niveau de stress minimal sur le risque de perdre des données.
Le deuxième point de tension était sur l'exposition au monde de l'interface de Vaultwarden. Bien que l'équipe de dev de Vaultwarden ait l'air très sérieuse, il nous a semblé difficile de l'être, nous, en utilisant Vaultwarden ouvertement via une URL publique (pour l'interface utilisateur, Vaultwarden propose une interface admin, celle là reste cachée, point). La solution la plus appropriée est bien évidemment le VPN de l'entreprise, ce qui a été mis en place. Mais ce faisant, on perdait son usage sur nos téléphones (et qui veut connecter son iDevice à un réseau sérieux ?). Ce n'était pas vraiment acceptable ni professionnellement, ni dans l'objectif de fournir aux employés ce gestionnaire de mots de passe y compris à usage personnel.
Un compromis a été trouvé en bloquant l'accès public à l'URL publique de notre Vaultwarden aux IP fixes des ours qui en ont (le très simple "Require ip" d'Apache fait le job) et en laissant aux autres l'accès via le VPN.
Pour ceux avec IP fixe, on peut synchroniser ordinateur et téléphone de chez soi, et utiliser le cache lors de déplacement.
Pour ceux sans IP fixe, on peut assez facilement faire un reverse proxy sur un ordinateur ayant accès au VPN pour donner à son téléphone l'accès sur son réseau local, et retomber donc sur le cas précédent (avec un petit jeu pour que votre CA et celui de l'entreprise soit reconnu).
server {
listen 443 ssl http2;
server_name vaultwarden.yourlocalnetwork.lan;
ssl_certificate /path/to/certificate.pem;
ssl_certificate_key /path/to/certificate.key;
location / {
proxy_pass https://vaultwarden.yourenterprisenetwork.lan;
}
}
Bilan
Après 6 mois d'utilisation chez Bearstech et un peu plus d'un an pour ma part, Vaultwarden s'impose comme une solution fiable pour la gestion de vos mots de passe et bénéficie du sérieux commercial de Bitwarden pour ses clients (extensions, apps, ...). L'essayer c'est l'adopter ! Et pour la suite on a promis de tester Cozy Pass, à dans 2 ans.