Installer Bitwarden avec Docker

Introduction

Bitwarden est un coffre fort numérique auto hébergé Open Source permettant de stocker ses mots de passes et notes sécurisés. Le coffre fort est chiffré grâce grâce à un chiffrement surpuissant (AES-256). Le déverrouillage du coffre peut seulement se faire via un mot de passe maître et éventuellement avec une authentification 2FA. On ne présente plus l’avantage de ce type de solution : très sur, aucun mots de passes stocker sur les périphériques, remplissage automatique des champs pour les authentifications … Il contient aussi quelques outils intéressants comme des import/export de bases, des tests de compromissions de mot de passe, la génération de mot de passe fort… Il nécessite un petit plugin à installer sur vos navigateurs ou sur votre téléphone pour déverrouiller le coffre fort. Nous allons installer ‘bitwarden‘ derrière un reverse proxy (voir l’article sur l’installation de swag) avec docker compose et portainer dans cette article.

Pour cette installation j’utilise une image docker alternative ‘Vaultwarden‘ bien plus performante développé en Rust, qui est présente ici : https://github.com/dani-garcia/vaultwarden.

Remarque : J’ai créé au préalable un utilisateur omdocker (voir l’article création d ‘un utilisateur Docker pour le détail). J’ai créé aussi un répertoire qui contiendra tous mes installations docker. dans ce blog, j’utiliserais pour exemple le chemin /volume/docker.

Nous allons créer aussi le répertoire ‘bitwarden’ en ligne de commande sur le NAS (connexion en SSH) dans notre répertoire docker : /volume/docker. Cette étape est facultative, le containeur créera le répertoire automatiquement lors du déploiement si celui ci n’existe pas.

$ cd /volume/docker
$ mkdir bitwarden

Le fichier de configuration

Si vous souhaitez sécuriser le lancement de ‘bitwarden‘, je vous engage à parcourir l’article securiser docker.

Il est importent de bien respecter l’indentation des fichiers de configurations : pas de tabulation. Attention aussi à la version du fichier, il y a des légères évolutions de syntaxe d’une version à l’autre.

Le fichier yml en détails. Il faut remplacer pour votre configuration (les lignes en gras sont facultatives) :

  • TZ : Votre zone de temps,
  • UID et PGID : celui de votre utilisateur Docker (omdocker pour ce blog),
  • volume/docker : Le chemin vers le répertoire de votre application,
  • networks : Il faut relier ‘bitwarden’ à votre réseau ‘swag‘ (ou équivalent) si vous souhaiter pourvoir accéder à l’application depuis l’extérieur. Voir en bas de l’article.
  • SIGNUPS_ALLOWED : permet la création d’utilisateur. Il faudra le mettre à ‘false’ par la suite si vous ne voulez pas offrir la possibilité de créer d’autres utilisateurs.
  • DOMAIN : A rajouter pour les 2FA de type ‘WebAuthn’
  • ADMIN_TOKEN : Clé aléatoire de 64 caractères à générer pour pouvoir accéder au mode ‘administration’ du serveur. Si vous n’en avez pas l’utilité, il vaux mieux le désactiver par sécurité. Voir juste en dessous du fichier de configuration pour la commande.

version: '3'

services:
  bitwarden:
    image: vaultwarden/server:latest
    container_name: bitwarden
    read_only: true
    user: 1003:100
    volumes:
      - /volume/docker/bitwarden:/data:rw #
    environment:
      - PUID=1003
      - PGID=100    
      - TZ=Europe/Paris
      - WEBSOCKET_ENABLED=true
      - SIGNUPS_ALLOWED=true  
      - ADMIN_TOKEN=votretoken
      - DOMAIN=https://subdomain.mondomaine.org/
    pids_limit: 100
    mem_limit: 100m
    cpus: 0.5
    cpu_shares: 512
    restart: unless-stopped
    cap_drop:
       - ALL
networks:
    default:
        external:
            name: swag_default

Génération du token

Nous avons vus plus haut qu’il fallait générer une clé aléatoire de 40 caractères pour pouvoir accéder à l’administration du coffre fort. Pour générer la clé, taper la commande suivante dans une console en SSH et recopier la suite de 40 caractères obtenue dans le fichier de configuration :

$ sudo openssl rand -base64 48

Vous copiez le contenu du fichier de config dans votre interface de gestion Portainer en allant dans ‘Stacks‘ et ‘Add stack‘.

La pile 'bitwarden'
La pile ‘bitwarden

Donnez un nom à votre pile, par exemple ‘bitwarden‘, puis déployer cotre containeur en cliquant en bas sur « Deploy the stack‘.

Après une phase de téléchargement de l’image, puis d’installation de l’application, vous devriez arriver sur cet écran si tout s’est bien passé :

Le containeur ‘bitwarden‘ est installé et est en fonctionnement.
Le containeur ‘bitwarden‘ est installé et est en fonctionnement.

Nous pouvons maintenant nous connectez à ‘bitwarden‘ avec l’URL : https://subdomain.domain.org (voir la configuration Swag plus bas). Pour accéder à l’interface d’administration, utiliser l’URL suivant : https://subdomain.domain.org/admin/ (pour rappel, il vaut mieux désactiver cette option pour une utilisation de tous les jours).

Si tout s’est bien passé, vous devriez arriver sur ce premier écran :

Ecran de connexion
Ecran de connexion

Cliquez sur ‘créer un compte’. Une fois que le compte sera créer, vous pourrez désactiver la variable ‘SIGNUPS_ALLOWED‘ dans la pile en la positionnant sur ‘false‘. Vous devrez relancer le containeur pour qu’il prenne en compte la modification.

Création d'un compte utilisateur
Création d’un compte utilisateur

Une fois le compte créer, vous arrivez à la page d’accueil de votre coffre fort. la 1ère chose que je vous conseil de faire est d’activer l’authentification en deux étapes ( 2FA) en allant dans les paramètres de compte du profil (en haut à droite) et menu ‘sécurité‘, puis onglet ‘Identification en deux étapes‘ :

Remarque : Eviter si possible une 2FA par email qui est la solution la moins fiable en terme de sécurité. J’utilise pour ma part une clé USB de sécurité en principale et une application d’authentification de type « Google Authentificator » en secours sur mon téléphone.

Double authentification
Double authentification

Configuration du client sur les périphériques

Nous allons prendre l’exemple de la configuration sur le navigateur Brave / Chrome. Après avoir installer et activer l’extension, vous devez indiquer l’adresse de votre coffre fort en cliquant sur la roue en haut à gauche :

Sur un téléphone, la configuration initiale est identique; il faut en premier lieu renseigner l’URL de votre coffre fort du type https://bitwarden.mondomaine.org

Configuration de Swag

La configuration d’un containeur avec ‘swag‘ est la plupart du temps très simple. ‘swag‘ propose par défaut des fichiers de configurations prédéfinis pour de nombreux services.

Ces fichiers se trouvent dans le répertoire d’installation de swag : /volume/docker/swag/nginx/proxy-confs/ :

Le fichier de configuration de ‘bitwarden‘
Le fichier de configuration de ‘bitwarden

Nous allons simplement recopier ce fichier et le renommer ‘bitwarden.subdomain.conf’.

$ cd /volume/docker/swag/nginx/proxy-confs/
$ cp bitwarden.subdomain.conf.sample bitwarden.subdomain.conf

Nous relançons le containeur swag soit via ‘Portainer‘, soit en ligne de commande ‘sudo docker restart swag‘ pour qu’il prenne en charge la redirection du containeur ‘bitwarden‘.

Laisser un commentaire

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