Vaultwarden(bitwarden) » Historique » Révision 20
Révision 18 (johan.le.baut, 13/10/2022 14:00) → Révision 20/26 (mathias.bert-barbedienne, 28/10/2022 09:20)
# Vaultwarden (bitwarden) {{toc}} Bitwarden est un gestionnaire de mot de passes. Vaultwarden est la version Rust de Biwarden: https://github.com/dani-garcia/vaultwarden Il est disponible sur: harpocrates et le port 8080 (anciennement sur https://coffre.aquilenet.fr/) https://coffre.aquilenet.fr/ Pour l'admin: http://localhost:8080/admin https://coffre.aquilenet.fr/admin Server: harpocrates ## Configuration ### Accès utilisateurs On autorise l'inscription à tous les utilisateurs ayant un mail en **@aquilenet.fr** Pour valider son inscription un utilisateur doit confirmer comfirmer via l'email reçu de vaultwarden. Il est possible d'inviter des gens extérieurs via la page d'admin uniquement. #### Accès via pc Créer une config ssh dédiée pour l'accès à vaultwarden via tunnel : `echo -e Host coffre.aquilenet.fr\\nPort 55555\\nUser bitwarden\\nIdentityFile ~/.ssh/id_ed25519_vaultwarden\\nLocalForward localhost:8080 localhost:8080\\nSessionType none >~/.ssh/coffre.conf` Récupérer le couple de clef ssh non protégées de l'utilisateur non privilégié bitwarden (`/home/bitwarden/.ssh/{id_ed25519_vaultwarden,.pub}`). Les copier dans le vôtre (ou modifier `~/.ssh/coffre.conf` avec vos login et clefs). Cette configuration permet une connexion sans exécution d'un shell distant (SessionType none), d'autre part l'utilisateur bitwarden est configuré avec un "dummy shell" dans `/etc/passwd` qui ne permet pas de faire quoi que ce soit sur la machine (/home/bitwarden/Fake_Shell.sh). lancer la connexion ssh (`ssh coffre`), puis pointer le navigateur sur `http://localhost:8080`. #### Accès éventuel via ordiphone Si on veux vraiment et si on en a le besoin réel et explicite, techniquement on peut. Sur Android, utilisation de l'appli `ConnectBot` (https://play.google.com/store/apps/details?id=org.connectbot) pour l'accès via tunnel ssh et de l'appli bitwarden officielle. Interdiction **_FORMELLE_** d'utiliser son compte ssh habituel d'admin de l'infra pour cet usage ! **_OBLIGATION_** d'utiliser un compte dédié, non privilégié avec accès restreint. Récupérer la clef publique non protégée (`/home/bitwarden/.ssh/id_ed25519_vaultwarden.pub`) ou en générer une nouvelle avec passphrase (simple à taper sur ordiphone) et dédiée à cet usage (`ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_vaultwarden`) et aller l'ajouter sur harpocrates dans `/home/bitwarden/.ssh/authorized_keys` Copier cette clef sur l'ordiphone, puis l'importer dans l'appli ConnectBot et la protéger par passphrase si pas déjà le cas. Menu en haut à droite puis "Gérer les clefs publiques" appuis sur le dossier en haut à droite, naviguer sur le support de stockage et sélectionner la clef publique. Si pas fait avant, appuis long sur la clef et "Changer le mot de passe" (choisissez en une simple à taper sur ordiphone). De retour sur le menu général, créer un nouveau serveur en cliquant sur le "+" en bas à droite renseigner `bitwarden@coffre.aquilenet.fr:55555` donner un nom à ce nouvel objet sélectionner la clef dans "Utiliser une clef pour l'authentification" décocher "Démarrer une session en ligne de commande" (seul le tunnel nous intéresse ici). cocher éventuellement "Rester connecter" Enregistrer en haut à droite (icône disquette). Appuis long sur le serveur nouvellement créé, puis "éditer les redirections de port" Ajout par "+" Nom:vaultwarden type local, Port source : 8080 Destionation: localhost:8080 Enregistrer (Créer la redirection de port). Lancer la connexion dans ConnectBot taper la passphrasse réduire l'appli lancer l'appli bitwarden la faire pointer sur http://localhost:8080 dans le menu de configuration en haut à droite et enfin s'identifier sur le service. ### Accès admin On accède à la page d'admin via un tunnel ssh et une redirection de port vers le 8080 et http://localhost:8080/admin https://coffre.aquilenet.fr/admin Un token est demandé, il est visible sur Harpocrates dans /var/www/bitwarden/docker-compose.yaml On ajoute en sécurité supplémentaire une Basic Auth dans Nginx, le fichier de conf est: `/var/www/bitwarden/.htpasswd` Il contient les admins de Harpocrates avec le même hash password du /etc/shadow ## Installation Sur le serveur Harpocrates, on installe le service vaultwarden (initialement vaultwarden, avec un reverse proxy nginx, désactivé depuis). nginx. ### installation du service On peut le lancer via docker ou builder manuellement le service. En ce moment la méthode manuelle est utilisée. #### via docker et docker compose 1. Créer le dossier pour la data du service: ``` mkdir -p /srv/vw-data chown -R bitwarden:bitwarden /srv/vw-data ``` 2. On décrit le container docker à lancer via docker compose `cat /var/www/bitwarden/docker-compose.yaml` ```yaml version: '3' services: vaultwarden: image: vaultwarden/server:1.25.2 container_name: vaultwarden restart: always user: 1000:1000 # bitwarden user ports: - "127.0.0.1:8080:80" # port app - "127.0.0.1:3012:3012" # port web socket environment: ADMIN_TOKEN: <Admin token> # token to connect to admin WEBSOCKET_ENABLED: "true" # Enable WebSocket notifications. SIGNUPS_DOMAINS_WHITELIST: aquilenet.fr # on autorise seulement le @aquilenet.fr SIGNUPS_VERIFY: true INVITATIONS_ALLOWED: false # Les utilisateurs ne peuvent pas inviter des non inscrits (seulement admin) volumes: - /srv/vw-data:/data ``` Il est possible de configurer d'autre choses via la page admin 3. Une fois docker installé, pour démarrer en background: `cd /var/www/bitwarden/ && docker compose up -d` (4. Mise à jour avec docker) jour) Ouvrir `/var/www/bitwarden/docker-compose.yaml` changer `image: vaultwarden/server:<nouvelle version>` Restart (avec docker): Restart: ``` cd /var/www/bitwarden/ docker compose down # Service sera étteint docker compose up -d --force-recreate ``` #### Sans docker (actuel): Il faut compiler le service et le lancer dans un systemd: Suivre: https://gist.github.com/heinoldenhuis/f8164f73e5bff048e76fb4fff2e824e1 Pour le build du 'web-vault', on peut utiliser dans bw_web_builds la cmd `make docker-extract`, il créera le dossier `docker_builds/web-vault` (pas besoin d'installer NodeJs de cette manière). Install actuelle: - systemd file: `/etc/systemd/system/vaultwarden.service` - vaultwarden: - sources dir: /var/www/bitwarden/vaultwarden - binaire: /var/www/bitwarden/vaultwarden/target/release/vaultwarden - data dir: /var/www/bitwarden/vaultwarden/target/release/data - env file (config): /var/www/bitwarden/vaultwarden/target/release/.env - config: ``` WEB_VAULT_FOLDER=/var/www/bitwarden/bw_web_builds/docker_builds/web-vault WEBSOCKET_ENABLED=true SIGNUPS_VERIFY=true SIGNUPS_DOMAINS_WHITELIST=aquilenet.fr ADMIN_TOKEN=<admin token> INVITATIONS_ALLOWED=false ROCKET_ADDRESS=127.0.0.1 ``` - web-vault - sources dir: /var/www/bitwarden/bw_web_builds/ - build dir: /var/www/bitwarden/bw_web_builds/docker_builds/web-vault ### Reverse proxy Nginx Le site était est configuré dans `/etc/nginx/sites-available/coffre.aquilenet.fr.conf` Les certificats étaient gérés sont géré par certbot (cf `sudo certbot certificates`) ### Config SMTP Il faut configurer une connexion SMTP pour que vaultwarden puisse envoyer des mails. Sur une VM vierge: - enlever exim4 - installer postfix - enlever params d'authent pour envoyer sur localhost:25 Conf vaultwarden SMTP (dans l'interface admin de vaultwarden): SMTP: ``` "smtp_host": "127.0.0.1", "smtp_security": "off", "smtp_port": 25, "smtp_from": "vaultwarden@aquilenet.fr", "smtp_from_name": "Vaultwarden (Ne pas répondre)", "smtp_timeout": 15, "helo_name": "coffre.aquilenet.fr", "smtp_accept_invalid_certs": false, "smtp_accept_invalid_hostnames": false, ```