Passwortverwaltung mit Vaultwarden

Kurzbeschreibung

Meine bisherige Passwortverwaltung besteht aus einer Blechdose mit Papierkärtchen, auf denen Dienst, Benutzername und Passwort stehen. Mit der Zeit stellt sich eine Sortierung ein, bei der die häufiger verwendeten Logins oben liegen, während die seltener benötigten Zettel nach unten wandern. An sich funktioniert das super und ist auch resistent gegen Cyberangriffe, aber die Dose kann nur an einem Ort gleichzeitig sein und regelmäßige Backups anzufertigen ist eher fummelig.

Als eine Alternative zu meinem bisherigen System habe ich mir Vaultwarden angesehen, eine ressourcenschonende Implementierung der Bitwarden-API in Rust. Neben der Kompatibilität zu "normalen" Bitwarden-Clients bietet Vaultwarden eine hübche Weboberfläche. Mit dieser verwaltet man nicht nur Logins, sondern auch Kreditkarten, Identitäten und Notizen, jeweils mit optionalen Anhängen. Weiterhin können neue Passwörter generiert und bestehende Logins automatisch auf Schwächen, Wiederverwendung sowie Vorhandensein in bekanntgewordenen Datenlecks geprüft werden.

Einrichtung

Dank des offiziellen Docker-Images ist die Einrichtung relativ einfach. Allerdings verweigern aktuelle Webbrowser die Verwendung der Crypto-API in einem unsicheren Kontext, was so viel heißt wie: ohne TLS geht überhaupt nichts. Die Dokumentation nennt zwei verschiedene Wege dies zu beheben:

Die eingebaute TLS-Funktion stammt von Rocket, dem Web-Framework für Rust mit dem Vaultwarden umgesetzt ist. In der Rocket-Dokumentation selbst steht bereits die Warnung, dass die TLS-Unterstützung noch nicht für "ready for production" gehalten wird. ABER... es ist so viel bequemer, und da ich Vaultwarden vorerst sowieso nur im lokalen Netzwerk einsetzen möchte... benutze ich eine docker-compose.yaml wie diese, die über die Umgebungsvariable ROCKET_TLS die TLS-Unterstützung in Rocket aktiviert:

services:
  app:
    image: vaultwarden/server
    volumes:
      - ./data:/data
      - <Pfad zu TLS-Zertifikat>:/ssl:ro
    ports:
      - 8080:80
    environment:
      - ROCKET_TLS={certs="/ssl/cert.pem",key="/ssl/key.pem"}
      - ENABLE_DB_WAL=false

Das Volume für das TLS-Zertifikat ist das gleiche, das ich auch bei Filebrowser und Gogs verwende, wieder mit der Option :ro nur-lesbar eingebunden.

Die Konfiguration von Vaultwarden erfolgt entweder über eine (explizit zu aktivierende) Admin-Seite, die wiederum Einträge in einer Datei config.json vornimmt, oder über Umgebungsvariablen, wobei die Konfigurationsdatei "stärker" ist. Laut Vaultwarden-Wiki ist eine häufige Fehlerquelle, dass die Admin-Seite aktiviert und zuerst verwendet wird, während später versucht wird, die gleichen Eigenschaften über Umgebungsvariablen zu manipulieren -- was dann nicht zum erhofften Ergebnis führt. Daher ist die ganz klare Empfehlung, nur einen der beiden Wege einzuschlagen und bei diesem zu bleiben.
Dinge, die man eventuell ändern möchte, ist die per Default erlaubte Registrierung neuer Benutzer (SIGNUPS_ALLOWED), SMTP-Einstellungen für den E-Mail-Versand sowie das Admin-Token (ADMIN_TOKEN). Insgesamt sind die Default-Einstellungen aber sehr sinnvoll, vor allem wenn man mit SQLite als Datenbank leben kann.

Zur bequemeren Verwendung im Webbrowser gibt es verschiedene Erweiterungen; ich habe etwas mit dem Bitwarden-Add-on für Firefox rumgespielt. Dieses erkennt z.B. wenn man einen neuen Login erzeugt und bietet an, diesen in Vaultwarden abzulegen. Umgekehrt ermöglicht es ebenfalls das automatische Ausfüllen von Login-Seiten mit den gespeicherten Credentials. Es lohnt sich auf alle Fälle nach passenden Add-ons oder Client-Anwendungen zu schauen, um von der Bitwarden-Kompatibilität profitieren zu können.

Ein weiterer Aspekt hat sich später bei der Integration gezeigt: Vaultwarden verwendet in der Default-Konfiguration ein SQLite-Feature das sich Write-Ahead Logging (WAL) nennt. Dies hat nachweislich dazu geführt, dass die USB-Festplatte nicht zur Ruhe kommt und deshalb nicht abschaltet. Der Anleitung auf Running without WAL enabled folgend habe ich das WAL durch das Einfügen von ENABLE_DB_WAL=false im Block environment abgestellt.

Fazit

Ich werde Vaultwarden eine Chance geben meine bewährte Blechdose in Rente zu schicken. In Bezug auf Komfort beim Raussuchen der Logins sowie beim Anlegen von Backups (Vaultwarden unterstützt Export als JSON, CSV und verschlüsseltes JSON) dürfte Vaultwarden vorne liegen. Spätestens wenn es darum geht, Passwörter bestehender Konten zu ändern, ist die digitale Variante dem analogen Radiergummi sicher überlegen.


Zurück zur Hauptseite