Bitwarden ist seit dem Wochenende mein neuer Favorit unter den Passwort-Managern:
Ich benutze seit Jahren eine Implementierung von KeePass. Aus Überzeugung: Es handelt sich um 1. Open-Source und 2. muss ich meine Passworte nicht einem Anbieter anvertrauen. Einiges an Komfort habe ich erreicht, in dem ich zum einen meine KeePass-Datei auf dem eigenen Nextcloud-Server abgelegt habe. Zum anderen habe die chromePass-Browser-Extension verwendet. Trotzdem habe ich immer neidisch zu den Benutzern von LastPass oder One-Password „rübergeschaut“: Dort funktioniert die Benutzung sowohl im Browser deutlich besser, als auch im Handy (iOS): Da werdendie Passwörter automatisch ausgefüllt…
Nun habe ich Bitwarden ausprobiert. Und zwar in allen für mich wichtigen Aspekten:
- Mac Desktop-Anwendung.
-
Die iOS-App. Wunderbar integriert. Lässt sich unter „Einstellungen“ -> „Automatisch ausfüllen“ so aktivieren, dass Passworte in verschiedenen Anwendungen automatisch ausgefüllt werden.
-
Die Android-App. Habe ich noch nicht intensiv ausprobiert, fühlt sich aber auch sehr „rund“ an.
-
Der Bitwarden Server selbstgehostet: Dies war für mich der Ausschlag, das ganze selber mal auszuprobieren. Ich möchte meine Passworte (s.o.) keinem noch so vertrauenswürdigen fremden Anbieter anvertrauen müssen.
Ich habe mich entschieden, – nicht den offiziellen Server zu verwenden, weil mir der zu viele Ressourcen zu verbrauchen scheint. Schon alleine, weil zwar Docker verwendet wird, aber offenbar ein ganz eigener Server nötig ist – was nicht gut in mein Hosting-Konzept via Docker passt.
Stattdessen habe ich hier eine „Anleitung“ gefunden, die ein Docker-Image verwendet, welches auf einer alternativen Implementierung des Bitwarden-Servers basiert, welche deutlich schlanker ist. Es ist ein einzelnes Image und passt daher gut in meine Landschaft.
Kann ich dieser alternativen Implementierung Vertrauen? Darüber habe ich mich hier informiert. Vor allem die Konstruktion, dass der Server die Klartext-Passworte nie bekommt, hat mich überzeugt.
Vertrauen
Folgende Überlegungen haben hier zu meinem Vertrauen in die Gesamtkonstrukton geführt:
- Die Passworte werden immer verschlüsselt, bevor sie das Gerät verlassen, das sich gerade in meinen Händen befindet. Keine Andere Komponente (v.a. nicht der Server) ist in der Lage, das Passwort zu entschlüsseln. Auch bei der Web-Anwendung ist das so.
- Ich behalte alle Passworte (und seien sie verschlüsselt) unter eigener Kontrolle, weil ich eigene Server verwende – nur von mir administriert – nur ich habe Zugriff.
- Hosting im Rechenzentrum meines Vertrauens: WorNet: Da bin ich Mit-Eigentümer und kenne jeden Admin persönlich.
- Bitwarden hat ein Security-Audit „überstanden“.
- Jeder Client „holt sich“ die gesamte verschlüsselte Passwort-DB. Das heißt im Fall, dass der Server mal nicht erreichbar ist, kann ich trotzdem noch auf die Passworte zugreifen.
- 2FA: Der Server-Zugriff lässt sich mit 2-Faktor-Authentifizierung („Two-step Login“) zusätzlich absichern. Dabei gibt es verschiedene Methoden zur Auswahl. Ich benutze eine Authenticator App (OTP).
Trotzdem ist natürlich klar, dass es – auch beim hochsensiblen Thema der Passwort-Speicherung – keine 100%ige Lösung gibt. Der Zettel mit den notierten Passworten kann in falsche Hände gelangen, Passworte zu merken schaffe ich nicht und jede andere Lösung hat meines Erachtens nicht die Flexibilität von Bitwarden (oder anderen gehosteten Passwort-Managern). Da Closed-Source für mich hier nicht in Frage kommt, habe ich wohl das Optimum gefunden – zumindest für meine Belange.
Was mir obendrein besonders gefällt:
- Ich konnte meine Keepass-DB vollständig importieren. (Trotzdem werde ich zu Sicherheit mein Keepass wohl noch lange „betriebsbereit“ halten – für den Fall der Fälle.)
- Auch die Passwort-Listen der Browser (z.B. Chrome) lassen sich importieren. (Ja, ich habe da immer noch Passworte gespeichert…) Hier gibt es eine Liste, was alles importiert werden kann.
- Das automatische Ausfüllen der Passworte im Browser ist wirklich gut. So lassen sich z.B. für jeden Eintrag mehrere URLs definieren, für die der Eintrag gelten soll.
- Benutzer lassen sich in Organisationen gruppieren, die auf gemeinsame Passworte zugreifen. Dabei lassen sich die Rechte steuern – wer die Passworte z.B. nur sehen, aber nicht verändern darf.
Meine Installation
Docker-Compose
version: '2.1'
services:
bitwarden:
image: mprasil/bitwarden
container_name: bitwarden
ports:
- 8100:80
- 8101:3012
restart: always
environment:
- SIGNUPS_ALLOWED=true
- WEBSOCKET_ENABLED=true
- DOMAIN=https://mein.bitwarden.server/
volumes:
- ${BITWARDEN_DATA_DIR:?err}/data:/data
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
Kong Reverse-Proxy
(Ich benutze zwar noch nicht die Kong DB-Less declarative configuration, aber mit deck kann man super einen Dump der DB-basierten Konfig anlegen. So ist die hier gerzeigte Konfiguration entstanden.)
Außerdem wird im Kong über xxx ein SSL-Zertifikat von Letsencrypt geholt und aktualisiert.
Backup
Mit diesem kleinen Script erstelle ich nächtliche Dumps der Sqlite3-DB:
Anhang: Links
- Der alternative bitwarden_rs Server: https://github.com/dani-garcia/bitwarden_rs
- „Anleitung“ für den bitwarden_rs Server: https://blog.linuxserver.io/2019/01/15/self-hosting-bitwarden/
- Weitere Hinweise zur Server-Installation: https://dennisnotes.com/note/20181112-bitwarden-server/
- Diskussion, ob bitwarden_rw zu Vertrauen ist: https://www.reddit.com/r/Bitwarden/comments/aby990/is_bitwarden_rs_secure/
- Bitwarden-Blog-Eintrag zum Security-Audit: https://blog.bitwarden.com/bitwarden-completes-third-party-security-audit-c1cc81b6d33
Hier noch ein paar Links mit weiteren Infos:
Außerdem habe ich eine Weile gebraucht, herauszufinden, wie ich in Chrome (sowohl Desktop als auch Android) die in Chome gespeicherten Passworte löschen kann. Antwort ist: Über „Browserdaten löschen“.
Hier nochmal meine Kriterien für einen Passwort-Manager, die mich schließlich zu Bitwarden geführt haben: