Vaultwarden

In der heutigen digitalen Welt ist eine effiziente und sichere IT-Infrastruktur entscheidend für den Erfolg. Ein Bestandteil einer sicheren IT-Infrastruktur sind sichere Zugangsdaten (komplexe Passwörter, unterschiedliche Passwörter, zwei Faktor Authentisierung, usw.). Dies ist sinnvoll nur mit der Nutzung eines Passwort Managers möglich.

Wir haben im Rahmen unserer Tätigkeit schon einige Passwort Manager genutzt:

  • LastPass
  • Keepass
  • 1Password
  • Vaultwarden

um nur einige zu nennen. Intern nutzen wir aufgrund unserer Erfahrungen seit einigen Jahren Vaultwarden als Passwort Manager.

Was ist Vaultwarden?

Vaultwarden ist eine freie, Ressourcen schonende, in Rust geschriebene Implementation des Bitwarden-Servers. Es war auch unter der Bezeichnung Bitwarden_RS bekannt. Vaultwarden bietet nahezu alle Funktionen des offiziellen Bitwarden-Dienstes und ist kompatibel mit allen Bitwarden Tools, wie Browser-Plugins oder Clients.

Welche Funktionen hat Vautwarden?

  • Es können neben Passwörtern auch Identitäten, Karten und andere Daten verwaltet werden
  • Sicheres Teilen der gespeicherten Daten wird unterstützt.
  • Import und Export der Daten in verschiedenen Formaten
  • Kompatible mit allen Bitwarden Apps und Clients
  • Passwort Generator
  • Berechtigungskonzept
  • Notfallvertreter
  • Zwei-Faktor-Authentifizierung
  • Reports

Vorteile von Vaultwarden

Open-Source und Kostenlos

Vaultwarden ist ein Open Source Projekt, der Quellcode ist frei zugänglich. So kann man es anpassen und auch sicherstellen das keine versteckten Funktionen oder Hintertüren vorhanden sind. Es gibt eine aktive Community, die kontinuierlich die Software weiterentwickelt und Support bietet.

Kontrolle über die Daten

Vaultwarden gibt dir die komplette Kontrolle über deine Daten, es ist keine Cloud Dienst oder von einem solchen abhängig. Es besteht die Möglichkeit Vaultwarden fast überall zu hosten, wo man es möchte.

Es gibt sehr gute Import- und Exportmöglichkeiten für die Daten.

Bitwarden-Clients und Plugins

Vaultwarden ist kompatibel mit allen offizellen Bitwarden-Clients und Plugins. Das bedeutet, man verwendet sie selben Plug-ins und Anwendungen, die man für Bitwarden verwendet,, was einen Umstieg sehr einfach macht.

Geringe Systemanforderungen

Im Unterschied zu anderen Passwortmanagern hat Vaultwarden sehr geringe Systemanforderungen und Abhängigkeiten. Es ist auf verschiedenen Plattformen lauffähig, vom kleinen Raspberry Pi bis zum Kubernetes Cluster.

Installation und Betrieb

Die Installation von Vaultwarden ist einfach und kann auf verschiedenen Plattformen durchgeführt werden. Hier ist eine einfache Anleitung für die Installation auf einem Linux-Server.

Voraussetzungen

Für die nächsten Schritte setzen wir ein Linux mit einem aktuell installierten Docker vorraus.

Docker Konfiguration

Wir empfehlen Docker so zu konfigurieren, dass im Zweifel auch IPv6 funktioniert.
Daher sollte die Datei /etc/docker/daemon.json mind. so aussehen:

{
"ipv6": true,
"ip6tables": true,
"experimental": true,
"fixed-cidr-v6": "fd00::/64"
}

Docker compose für Vaultwarden mit traefik für https

In diesem Beispiel betreiben wir Vaultwarden mit dem sqlite Backend und einem Reverse Proxy namens Traefik der sich automatisch letsencrypt Zertifikate verwalten kann.

docker-compose.yaml:

services:
  traefik:
    container_name: traefik
    image: traefik:latest
    ports:
      - 80:8080
      - 443:8443
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./traefik-data:/letsencrypt
    networks:
      - default
    command:
      - --entrypoints.web.address=:8080
      - --entrypoints.websecure.address=:8443
      - --providers.docker
      - --log.level=ERROR
      - --certificatesresolvers.leresolver.acme.httpchallenge=true
      - --certificatesresolvers.leresolver.acme.email=info@example.org
      - --certificatesresolvers.leresolver.acme.storage=/letsencrypt/acme.json
      - --certificatesresolvers.leresolver.acme.httpchallenge.entrypoint=web
    labels:
      - "traefik.http.routers.http-catchall.rule=hostregexp(`.+`)"
      - "traefik.http.routers.http-catchall.entrypoints=web"
      - "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
      - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
    restart: always
  vaultwarden:
    container_name: vaultwarden
    image: vaultwarden/server:latest
    restart: unless-stopped
    volumes:
      - ./vaultwarden-data/:/data/
    networks:
      - default
    environment:
      - DOMAIN=https://vaultwarden.example.org
      - LOGIN_RATELIMIT_MAX_BURST=10
      - LOGIN_RATELIMIT_SECONDS=60
      - ADMIN_RATELIMIT_MAX_BURST=10
      - ADMIN_RATELIMIT_SECONDS=60
      # Bitte das Token eintragen siehe: https://github.com/dani-garcia/vaultwarden/wiki/Enabling-admin-page#secure-the-admin_token
      - ADMIN_TOKEN=
      - SENDS_ALLOWED=true
      - EMERGENCY_ACCESS_ALLOWED=true
      - WEB_VAULT_ENABLED=true
      - SIGNUPS_ALLOWED=false
      - SIGNUPS_VERIFY=true
      - SIGNUPS_VERIFY_RESEND_TIME=3600
      - SIGNUPS_VERIFY_RESEND_LIMIT=5
      - SMTP_HOST=mail.example.org
      - SMTP_FROM=security@example.org
      - SMTP_FROM_NAME="Pasword Vault"
      - SMTP_SECURITY=starttls
      - SMTP_PORT=25
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.vaultwarden.rule=Host(`vaultwarden.example.org`)"
      - "traefik.http.routers.vaultwarden.entrypoints=websecure"
      - "traefik.http.routers.vaultwarden.tls=true"
      - "traefik.http.routers.vaultwarden.tls.certresolver=leresolver"
      - "traefik.http.routers.vaultwarden.service=vaultwarden"
      - "traefik.http.services.vaultwarden.loadbalancer.server.port=80"
networks:
  default:
    internal: false
    enable_ipv6: true
    ipam:
      driver: default
      config:
        - subnet: fd00:1::/64
          gateway: fd00:1::1

Dies ist nur ein recht einfaches Beispiel, das man für den produktiven Betrieb noch erweitern würde.

Vaultwarden starten

Als Erstes sollte die Datei /etc/docker/daemon.json erstellt oder passend modifiziert werden, siehe weiter oben.
Im Anschluss docker einmal neu starten:

root@bar:~# systemctl restart docker 

Nun legen wir einen Benutzer und passende Verzeichnisse an:

root@bar:~# adduser -g docker vaultwarden
root@bar:~# su - vaultwarden
vaultwarden@bar:~$ mkdir traefik-data
vaultwarden@bar:~$ mkdir vaultwarden-data
vaultwarden@bar:~$

Jetzt wird die obige docker-compose.yaml unter /home/vaultwarden/docker-compose.yaml abgelegt.
Als Nächstes sollte die Datei entsprechend der lokalen Gegebenheiten angepasst werden.
Nun kann man die Container herunterladen und die Anwendung starten:

vaultwarden@bar:~$ docker compose pull 
vaultwarden@bar:~$ docker compose up -d
vaultwarden@bar:~$

Nachdem der Traefik das Zertifikat geholt hat sollte der Dienst dann unter der konfigurierten URL zur Verfügung stehen.
Als Erstes sollte man sich in das Admin-Panel mit dem konfigurierten Token einloggen:

Vaultwarden admin panel login

Nach dem Login befindet man sich im Admin-Panel-Menü:

Vaultwarden admin panel menu

Hier kann man die Konfiguration vornehmen und alle Aufgaben wie das Backup der Datenbank durchführen.
Somit hat man nun eine lauffähige Instanz.

Fazit

Mit Vaultwarden ist es extrem einfach einen sicheren, kostenfreien und selbst gehosteten Password Manager seinen Nutzern bereitzustellen. Dies erhöht die Sicherheit beim Umgang mit Passwörtern und Zugangsdaten massiv.

Sollten Sie Fragen zu der Implementation von Vaultwarden in Ihrer IT Umgebung haben oder Unterstützung benötigen, nehmen Sie bitte Kontakt zu uns auf.

Zuletzt geändert: 1 September 2024