Bitwarden - Le gestionnaire de mots de passe à héberger vous-même

Publié initialement à : https://korben.info/bitwarden-gestionnaire-mots-passe-heberger-vous-meme.html

Bitwarden est un gestionnaire de mot de passe très complet qui se veut simple à installer pour les débutants avec une version service en ligne (SaaS), mais également accessible aux aficionados de l’auto hébergement avec un code source libre à installer sur n’importe quel serveur. Le principe d’un gestionnaire de mot de passe est de…

1 « J'aime »

Ca fait maintenant 1 an que j’ai sauté le pas de lacher Keepass (qui me suivait depuis quasiment sa création), pour Bitwarden, et franchement je ne suis absolument pas déçu !

Ca fonctionne super bien, peu importe la plateforme (windows, android, linux), l’interface est toujours la même, c’est canon.

Très bon article sur un soft vraiment bon, j’héberge mon propre serveur que l’on peut trouver en version alternative avec toute les fonctionnalités premium

Il faudrait arrêter de dire que c’est gratuit quand il faut ouvrir un compte.

Faut arrêter de faire chier avec des principes aussi con…

Ce ne sont pas des principes, c’est une religion.

Le coup de la clé à récupérer, ça veut dire que le jour ou la société Bitwarden disparait, je ne peut plus le ré-installer sur mon serveur ?

La méthode d’installation pour le docker et la clé bof bof, en gros vérification de la clé chez eux codée dans leur sources.
Et je vois deux dépôts dockerhub de dispo, aucun des deux vérifiés, un associé à 8bit donc officiel, pourquoi passer par leur script d’installation? D’après ce sue je lis dans le script c’est du question réponse pour créer le docker-compose au lieu de le faire à la main. Un fichier d’exemple aurait suffit mais bon ok. Mais la licence codée… Profiter du monde opensource sans vraiment en faire partie…

Le dépôt git rs et le dockerhub associé dont parle @Meldrak est-il de confiance ?

@belgotux la version officielle utilise plusieurs docker pour la solution complete (bitwarden, webserver, mysql) et est assez lourde au final
malgré tout le code source est entièrement dispo d’où ce clone RUST moins gourmand et tout dans un seul docker (en sqlite par contre)
je penses que l’initiative de ce dernier est justement suite à ce genre de réflexion que toi ou @Cristophe peuvent avoir (fonctionnalité premium payante, hébergement AWS, etc)
Je ne me suis pas amusé a comparer le GIT RS avec le code source officiel mais il commence à y avoir de plus en plus d’utilisateur de cette version RS et je n’ai pas encore le moindre soucis avec
Par precaution il est preferable de mettre le serveur derriere un reverse proxy nginx et fail2ban + certificats letsencrypt

@Meldrak Un fail2ban sur l’interface web ? L’app n’a pas nativement une fonction anti-bruteforce durant ton utilisation ?
J’avais lus ceci sur leur site :

Bitwarden requires the master password after 5 failed PIN attempts to protect against brute force attacks. Setting a PIN in Bitwarden also warns you that PIN settings are reset upon logging out. And Bitwarden provides an option to lock with the master password on browser restart.

Je vais l’installer pour faire quelques tests. Et voir comment s’organise les accès sur ce truc

@belgotux le fail2ban protege le reverse proxy, sur les services apache, ssh, etc c’est une securité en plus
j’utilise ce docker qui inclu les 3 (lets encrypt, nginx et fail2ban)
https://fleet.linuxserver.io/image?name=linuxserver/letsencrypt

bitwarden a son propre système de protection comme tu le mentionnes, perso j’ai aussi activé l’authentication à 2 facteurs

1 « J'aime »

Depuis le temps que j’en parle en commentaires :stuck_out_tongue:
Je ne suis pas un barbu, donc j’utilise leur serveur, extension chrome et sur android, que du bonheur.

2 « J'aime »

Je l’utilise pour ssh et des services non sécurisé, mais pas du web, souvent c’est inclus.
J’utilise Traefik depuis un moment, je le trouve assez puissant. Mais faut appréhender :confused:

Je viens de faire quelques test, que ce soit la partie user ou la partie admin, après 6 tentatives je peux toujours tester… Pour une appli de gestion de mot de passe, ça devrait être natif :s

J’ai fais le docker-compose pour la partie site, web-socket et la partie admin je l’ai mis à part pour la restreindre aux ip locales.
il faudrait que configure mon fail2ban sur l’host, je pense pas que je sache mettre dans un container séparer pour check les logs traefik, mais appliquer les règles netfilter… Autant que ce soit sur l’host. Si le container change d’host, il recréera bien vite sa liste.

Tu mets quoi comme config du jail ?


Prenez attention que dans mon cas, je n’utilise pas le réseau bridge par défaut. Mes apps ont un réseau commun avec le proxy qui ne sert qu’à cela, question sécurité.
Les puristes diront qu’il faut un réseau entre proxy et app différents à chaque fois :wink:

Voici le fichier yml complet pour le proxy HTTPS

version: '3.7'

networks:
  proxy-network:
    external: true

services:
  bitwardenrs:
    image: bitwardenrs/server:latest
    container_name: bitwardenrs
    networks:
      - proxy-network
    volumes:
            - /data/bitwardenrs/:/data/
    environment:
      - WEBSOCKET_ENABLED=true # Required to use websockets
      - ROCKET_PORT=8080
      - ROCKET_WORKERS=20
      - SIGNUPS_ALLOWED=false
      - INVITATIONS_ALLOWED=false
      - DOMAIN=https://bitwarden.domain.tld
      - ADMIN_TOKEN=xxxxxxxxxxxxxxxxx
      - SMTP_HOST=votre_serveur
      - [email protected]
      - SMTP_PORT=587
      - SMTP_SSL=true
      - [email protected]
      - SMTP_PASSWORD=xxxxxxxxxxxxxxxxxxxx
    user: 999:997
    restart: "always"
    labels:
      - traefik.http.services.passwd.loadbalancer.server.port=8080
      - traefik.http.routers.passwd.service=passwd
      - traefik.http.routers.passwd.entrypoints=websecure
      - traefik.http.routers.passwd.tls.certresolver=le
      - "traefik.http.routers.passwd.rule=Host(`bitwarden.domain.tld`)"

      - traefik.http.services.passwd-socket.loadbalancer.server.port=3012
      - traefik.http.routers.passwd-socket.service=passwd-socket
      - traefik.http.routers.passwd-socket.entrypoints=websecure
      - traefik.http.routers.passwd-socket.tls=true
      - "traefik.http.routers.passwd-socket.rule=Host(`bitwarden.domain.tld`) && PathPrefix(`/notifications/hub`)"

Je conseille également d’utiliser des en-têtes :

      - traefik.http.middlewares.secure-headers.headers.customFrameOptionsValue=SAMEORIGIN
      - "traefik.http.middlewares.secure-headers.headers.sslredirect=true"
      - "traefik.http.middlewares.secure-headers.headers.STSSeconds=315360000"

Et à utiliser dans le container de Bitwarden sous ‹ labels › :

      - traefik.http.routers.passwd.middlewares=secure-headers

Maintenant j’aimerai sécuriser le /admin avec le ipwhitelist, mais ça coince… Il a pas l’air de le prendre en compte

EDIT : Bon c’était tout con en fait,

      - traefik.http.services.passwd-admin.loadbalancer.server.port=8080
      - traefik.http.routers.passwd-admin.service=passwd-admin
      - traefik.http.routers.passwd-admin.entrypoints=websecure
      - traefik.http.routers.passwd-admin.tls=true
      - "traefik.http.routers.passwd-admin.rule=Host(`bitwarden.domain.tld`) && PathPrefix(`/admin`)"
      - "traefik.http.middlewares.passwd-trustip.ipwhitelist.sourcerange=127.0.0.1/32, 192.168.1.0/24"
      - traefik.http.routers.passwd-admin.middlewares=passwd-trustip

Je ne connais pas Traefik mais ta config correspond à l’équivalent Nginx qui a un profil Bitwarden préconfiguré:

Il faut néanmoins rajouter pour restreindre admin en local et activer le HSTS :

location /admin {
    return 404;

}
add_header Strict-Transport-Security « max-age=15552000;includeSubdomains; »;

pour le filtre fail2ban :

[Definition]
failregex = ^\s*\[WRN\]\s+Failed login attempt(?:, 2FA invalid)?\. <HOST>$

merci pour le partage de ta config @belgotux

1 « J'aime »

Bitwarden est a des année lumiere de l’interface de keepass. Ca va pour une utilisation simple, mais il manque beaucoup de features (par ex. pas autotype global)

a noter qu’il existe ceci. Ca éviter l’aller trifouiller le code soit meme…

L’intérêt de Bitwarden, (si j’ai compris le truc), est la possibilité de mettre en place son propre serveur, parce que hormis cela, je vois pas bien l’avantage qu’il aurait sur un keepass (voilà ça c’est pour le premier, et en fait, oui, si c’est gratuit, c’est sans aucune contrepartie ! et aucunement en demandant une inscription et donc des données personnelles) … Utiliser les serveurs de Bitwarden, et prétendre que c’est archi blindé, c’est se mettre un bandeau sur les yeux ou bien les mains sur les oreilles en criant très fort : « lalalala, lala, lala » (voilà ça c’est pour le deuxième en l’occurrence notre « Chef des Internets (rapprochés) » adulé !!)

Installer un Bitwarden via docker c’est d’la bombe, de la bombe atomique même… Résultat ? :

Ouch ! ça fait bobo (enfin bibi quoi) ! C’est vraiment tout c’tintouin qui nous prend 25Go (perso j’ai commencé avec un K7 Philips pour tout support de données :roll_eyes: , Je ne vous explique pas le jour ou j’ai touché un DD de 80Mo …! Le nirvana !)

L’installation ne saurait être viable, qu’à la seule condition d’être barbu ? (ça tombe bien) et surtout arrêtez toutes les horreurs (à mon sens) : les applications sous Electron, les dockers à l’échelle de l’utilisateur, les dépôts Flatpack ou pire snap

Je suis avec un grand intérêt cette discussion passionnante, et j’ai une question qui m’importe : Une fois installé et configuré « notre » serveur BitWarden. Est-il possible de restreindre l’accès à un éventail d’adresses IPv6 et en même temps de filtrer l’accès à certaines adresses MAC ? Et tout ça sans utiliser d’autres solutions (Une capote, la pilule, un stérilet, le thermomètre …) ? Merci d’avance pour vos réponses éclairées !

2 « J'aime »

Vous savez, il’y a des fois ou j’ai envie de me mettre des nions … Je crois pouvoir affirmer que l’on peu faire exactement la même chose avec Keepass en l’état (l’histoire du serveur, toussa, toussa). (Et ça je ne l’ai perçu qu’après quelques heures de mon post initial … Ahah, Ahah, Ahah ! )

Il suffit d’avoir un espace de quelques Mo « online » pour stocker la base de donnée, et cerise sur la galette, tu te garde la seconde clef d’accès …Et la première aussi … :rofl: :joy:

Merci de me contredire, m’enguirlander, m’enterrer sous un flot d’ordures …J’attend !

Tes commentaires sont assez amusants @tontonballo :grin:

Moi aussi ça me laisse perplexe le « Prévoyez minimum 25 GB de stockage et 4 GB de RAM »
Je ne vois aucun intérêt à héberger la solution commerciale de Bitwarden…

C’est pourquoi j’utilise la version RUST sur mon NAS qui me prends 100Mb de stockage (docker + bdd) et 65Mb de RAM
mais aussi car cette version n’est aucunement affiliée au site Bitwarden et ne demande aucune inscription

Keepass n’est pas suffisant à lui même sans rajouter d’autres solutions comme tu dis, accès depuis l’extérieur à la bdd, partage d’éléments sélectifs par utilisateur, utilisateurs distant multi OS, et là il faut être un vrai barbu pour arriver à ses fins…

Après si c’est pour stocker ta base de données dans le cloud tout cela n’a plus beaucoup d’intérêt au final, sauf si tu héberge ton propre cloud (ce que je fais aussi d’ailleurs)

Malgré tout ce qui est dit, c’est très simple de mettre en place Bitwarden, un container unique a été sorti officiellement. Et en terme de ressources, ça utilise moins de 100Mo de RAM.
C’est bien gratuit, n’en déplaise à certains.

Merci à toi Meldrak, c’est gentil ton message :wink: J’essaie d’ajouter un peu d’humour, tout comme le fait notre hôte vénéré, ça diminue les nombreuses bêtises que je peux raconter …

Et bien tu vois j’ai fait exactement la même constatation que toi et m’oriente aussi vers la version RUST, ou peut-être que je vais attendre un peu et m’orienter vers une solution auto-hebergée avec Nextcloud (testé il y a 2, 3 ans et que j’avais trouvé épatant !). En effet, moins d’un Go en stockage et 500Mo de mémoire au plus me semble plus raisonnable !

Je suis passé hier à Keepass 2.6, et j’ai été obligé de passer du dépot officiel de ma distribution (limitée à la 2.3.x à un snap (beurk), du coup il y a des limitations/problèmes (surtout le bac à sable de snap) et j’ai un peu de mal à tout résoudre, enfin avec le temps et les lectures qui vont bien …

Bref l’urgence est de prendre son temps, de bien relire les nombreux messages très informatifs ici (merci aux collaborateurs ! )