J’installe Vaultwarden (Bitwarden) sur mon NAS Synology

Mon objectif

J’utilise depuis des mois KeepassXC, il fonctionne parfaitement, j’avais fait un Retex sur cela. Je mets en place mon gestionnaire de mots de passe sur tous mes ordinateurs et smartphone

Je rencontre une difficulté avec Keepass, c’est le partage des mots de passe. Certains mots de passe sont à partager entre ma femme et moi, cela n’est pas possible avec Keepass. Nous utilisons une base chacun car nous avons deux modes d’authentification pour ouvrir la base.

Je cherche donc une solution et Bitwarden le propose, on peut créer une “organisation” qui correspond à la famille et on peut avoir des mots de passe propres à chacun ou des mots de passe partagés. Parfait, c’est ce que je recherche.

Je vais donc installer Vaultwarden sur mon NAS Synology dans un docker de Container Manager. Configurer un nom de domaine pour cela, lui donner un certificat pour exploiter le https, choisir un port autre que 443 pour sécuriser un peu plus. Configurer mon routeur avec les redirections de ports puis configurer Vaultwarden, lui permettre d’envoyer des mails et de sécuriser l’utilisation avec une Yubikey et une authentification Microsoft Athentificator (TOTP)…. feu…

J’installe le docker Vaultwarden

Dans Synology Container Manager sur mon NAS Synology, je vais dans Registre télécharger vaultwarden/server

Je prends la version “latest” et je télécharge.

Une fois chargée, je clique sur Executer

Je change quelques paramètre comme sur l’image ci-dessus.

Je bascule rapidement sur File Station pour ajouter un dossier vaultwarden dans le dossier docker.

Je configure les ports de vaultwarden 3012 et 3013 ainsi que son fichier de données que je viens de créer dans File Station

Je termine l’assistant puis j’appuie sur le bouton bleu Effectué pour lancer la création du docker.

Dans l’onglet Conteneur, parfait, un point vert indique qu’il est lancé.

Je vérifie que le pare-feu du NAS ne bloque pas l’accès

Pour que le pare feu de mon NAS (qu’il est conseillé d’activer) ne bloque pas le port 3013, je vais l’autoriser (Sécurité / Pare-feu / Modifier les règles)

puis

Je peux vérifier que vaultwarden se lance sur l’adresse ip de mon syno et le port 3013

Cela ne me convient pas, je veux pouvoir y accéder de l’extérieur, que la connexion soit en https et qu’un nom de domaine sois utilisé au lieu d’une IP.

Je vais personnaliser mon nom de domaine

Je vais dans Accès externe / DDNS / Ajouter un DDNS

Je prends le service Synology, tout le reste est simple à compléter, je coche la case pour obtenir un certificat et j’active Heartbeat pour être prévenu si souci.

La création de l’ensemble prend quelques minutes et voila mon accès DDNS créé :

Je vérifie les routages de ports de mon Routeur

Je vais sur mon Routeur, Centre réseau / transmission de ports et je rediriger les ports vers mon NAS

Le port 1999 sera le port public https qui ira sur le port 1999 du NAS, je configure cela manuellement.

Les ports 3012 et 3013 sont configurés automatiquement puis le NAS Syno et le Routeur Syno se parlent.

Je configure un Reverse proxy Synology

Sur le NAS, je vais Panneau de configuration / Portail de connexion / Avancé / Proxy inversé

Je reprends le port 1999 qui est le port https (initialement 443 donc) et j’envoie le tout sur le port 3013 de localhost.

Mon nom de domaine est donc vaultwarden.xxxxxxx.familyds.com et donc Vaultwarden joingnable sur https://vaultwarden.xxxxxxx.familyds.com:1999

C’est parfait, la connexion fonctionne, en https avec un nom de domaine et avec un certificat valide.

J’active le service Yubikey

Pour utiliser ma Yubikey avec VaultWarden, il faut activer le service et récupérer un ID et une clé sur le site de Yubico

Je vais sur https://upgrade.yubico.com/getapikey/

Il suffit de mettre son mail, cliquer sur la case Yubikey OTP, appuyer sur le bouton de la Yubiket puis valider.

Je récupère deux informations

Je vais placer ces deux informations en variables d’environnement.

Je vais configurer les variables d’environnement

Les variables d’environnement se configurent dans Container Manager, onglet Conteneurs, arrêter le conteneur vaultwarden puis aller sur Paramètres.

Pour autoriser me clé Yubikey, j’ajoute ces deux variables :

  • YUBICO_CLIENT_ID: premier champ récupérer ci-dessus
  • YUBICO_SECRET_KEY: second champ récupérer ci-dessus

Pour sécuriser mon domaine, j’ajoute cette variable qui correspond :

Pour pouvoir envoyer des mails (plus pratique pour envoyer des invités et vérifier les mails)

  • SMTP_HOST: smtp.free.fr
  • SMTP_FROM: l’adresse mail qui expédiera les mails
  • SMTP_PORT: 587
  • SMTP_SECURITY: starttls
  • SMTP_USERNAME: prenomnom@free.fr
  • SMTP_PASSWORD: le mot de passe du compte

Je créé un premier compte “famille”

Afin de ne pas donner un accès administrateur aux utilisateurs, j’utilise un mail “famille” pour créer un premier compte et une première organisation.

Ce compte aura un rôle de “propriétaire”.

J’ajoute des comptes ‘utilisateurs” avec les mails des membres de la famille, chacun va ensuite pouvoir valider son mail et créer son compte. Le profil propriétaire doit ensuite les accepter.

J’empêche l’ajout de nouveaux comptes

Pour sécuriser encore un peu plus, je vais bloquer l’ajout de nouveaux comptes.

Pour cela, j’ajoute encore une nouvelle variable d’environnement, comme à l’avant dernier paragraphe.

La variable est

  • SIGNUPS_ALLOWED: false

En cas d’ajout d’un compte, il sera refusé :

J’installe le complément navigateur sur Brave

Je vais aller charger l’extension de mon navigateur

Une fois installée, je dois configurer le serveur “auto-hébergé” qui est sur mon NAS.

En face de connexion sur je dois spécifier auto-hébergé.

Je spécifie l’adresse https vers mon reverse DNS en spécifiant bien le port.

Ensuite, je le log avec mail/password principal de mon compte utilisateur et je retrouve tous mes identifiants.

Je sécurise le compte famille (propriétaire) avec la Yubikey

Je clique sur Gérer en face de Yubico.

J’appuie sur le cadre sous Yubikey 1, je branche ma Yubikey, j’appuie sur le bouton et je valide.

C’est ok, la Yubikey est bien ma seconde authentification.

Avant de quitter cet écran, je génère et imprime le code de récupération.

Je sécurise le compte utilisateur avec la Yubikey et Microsoft Authentificator

Le compte utilisateur sera enregistré dans l’extension du navigateur mais également dans le smartphone.

Ainsi :

  • sur l’ordinateur, l’ouverture du compte avec le mot de passe + la Yubikey sera le plus simple.
  • sur le smartphone, l’ouverture du compte pourra se fera soit via le mot de passe + la Yubikey (en NFC) soit via le mot de passe + Microsoft Authentificator (TOTP)

Je configure un accès Administration sécurisé

Vaultwarden propose une page d’administration, il faut la sécuriser pour l’utiliser.

On peut utiliser une variable d’environnement en plain texte mais cela est déconseillé.

Il est préférable d’utiliser un Hash en Argon2, je vais donc utiliser le site https://argon2.online/

Dans cet exemple, j’utilise 3Mssk7Hi4cb`wzUC7fgTR en texte d’entrée, je clique sur la roue crantée pour ajouter du sel au hash, je coche Argon2id et je récupère le résultat “$argon2id$v=19$m=16,t=2,p=1$c0JJWHVQamhGQzF6MXZudg$vlmd1dpgBVgwU4BM7RUUVw” c’est cela que je vais placer dans la variable d’environnement du conteneur (cf. quelques paragraphe précédents pour explication)

  • ADMIN_TOKEN: $argon2id$v=19$m=16,t=2,p=1$c0JJWHVQamhGQzF6MXZudg$vlmd1dpgBVgwU4BM7RUUVw

J’accède à la page de configuration de Vaultwarden

Je vais sur https://vaultwarden.xxxxx.familyds.com:1999/admin

Je mets le mot de passe, qui est le texte d’entrée du hash, donc 3Mssk7Hi4cb`wzUC7fgTR dans mon exemple.

Je me balade un peu dans la config, c’est un peu une face cachée de vaultwarden, à découvrir.

J’organise une sauvegarde des données de Vaultwarden

J’installe Synology Hyper Backup

Sur mon NAS, dans Centre de Paquets, j’installe Hyper Backup.

J’ouvre un Dropbox dédié avec une adresse dédiée

J’isole donc ces données.

J’active la double authentification pour l’accès à ma nouvelle Dropbox.

Je lance Hyper Backup et programme la sauvegarde

Je coche Dossiers et paquets puis je choisis le mode Dropbox

Le lien entre Dropbox et Hyper Backup prend 2s et je vais aller choisir où sauvegarder, je vais donc créer un dossier Sauvegarde NAS et un répertoire NAS (pour rester vague sur le contenu).

Je vais ensuite choisir les dossiers à sauvegarder

La sauvegarde des applications ne m’intéresse pas, je ne coche rien.

Je termine le dernier écran en mettant bien un mot de passe de chiffrement côté client. Je télécharge et range précieusement le mot de passe et le fichier PEM fourni.

A la fin de l’assistant, je valide le lancement de la 1ere sauvegarde

Je vais jeter un coup d’oeil sur Dropbox, tout s’est bien passé.

J’ai un peu de temps avant de remplir la Dropbox.

Je teste ma sauvegarde

Pour mémoire, une sauvegarde qui n’est pas testée en restauration ne sert à rien !!!!!!!!!

J’arrête le docker vaultwarden puis je vais sur File station.

Je renomme mon dossier docker/vaultwarden en vaultwarden 27-05-2024 et je recréé un dossier vaultwarden vide.

Je relance le docker vaultwarden puis je vais sur https://vaultwarden.xxxxx.familyds.com:1999/admin

dans l’onglet Users :

C’est parfait, tout est vide, j’ai donc perdu toutes mes données. vaultwarden s’est réinitialisé et à réinjecté ses fichiers de données par défaut :

Evidemment, je purge tout par sécurité et je vais restaurer ma dernière sauvegarde, je lance Hyper Backup.

C’est terminé, je relance le docker et je vais tester … mes données sont revenues, tout fonctionne parfaitement. Parfait, ma sauvegarde est viable.

 

Biblio