Passwort-Manager sind derzeit nicht zu vermeiden. Wer mehr als drei Accounts hat, nicht immer das selbe Passwort aber komplexe Zeichenfolgen verwendet, kommt nicht umhin, diese Zugangsdaten mit Software zu verwalten.
Diese Anleitung beschreibt einen Weg, mit dem du dank Bitwarden schnell zu deiner eigenen, selbst gehosteten Open-Source-Passwortverwaltung kommst. Um dieses Howto eins zu eins nachvollziehen zu können, brauchst du
- einen virtuellen oder Root-Server,
- eine Top-Level-Domain für gültige Let’s Encrypt-Zertifikate,
- Basiswissen im Umgang mit Linux-Systemen sowie
- Installations-ID und -Key von Bitwarden.
Meine Daten, mein Server
Zu allererst brauchst du eine Maschine, auf der deine Anwendung läuft. Ich habe mich für den vServer VPS 200 G8 der Firma netcup entschieden.
Nach dem Bestellvorgang und dem Erhalt der Nachricht, dass der Server bereitsteht, habe ich mich am Controlpanel angemeldet, über den Menüpunkt Medien den Link zu der Seite Images ausgewählt und dort die Installation des minimalen Debian 10-Images angestoßen.
Kontrolle übernehmen
Gleich nachdem du dich das erste Mal angemeldet hast, solltest du ein paar Dinge tun, die dafür Sorgen, dass nur du Zugriff auf den Server hast und das zukünftig auch so bleibt.
Passwort ändern
Bist du eingeloggt, änderst du das Passwort. Die IP ist natürlich durch die tatsächliche deines Servers zu ersetzen.
ssh root@00.111.22.333
passwd
Software aktualisieren
Es ist sehr empfehlenswert, aktuelle Software zu verwenden. So schließt du Sicherheitslücken und verringerst das Risiko, gehackt zu werden.
apt-get update && apt-get upgrade
Firewall installieren
Nur die Ports die für den Betrieb zwingend von außern erreichbar sein müssen, sollten offen sein, die übrigen werden durch eine Firewall geschützt.
apt-get install ufw
ufw allow ssh
ufw enable
ufw default deny incoming
ufw default allow outgoing
ufw reload
SSH absichern
Mit dem Befehl ufw allow ssh
hast du einen Port geöffnet, der nicht nur für dich als Administrator*in des Servers sondern für alle im Internet erreichbar ist.
Es wird sehr schnell von dritten versucht werden, über diesen Port Kontrolle über die Maschine zu bekommen. Mit der Installation von fail2ban machst du es den Angreifer*innen schwerer.
apt-get install fail2ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
Du kannst die Parameter für einzelne Dienste, wie zum Beispiel den SSH Daemon, separat anpassen. In der eigenen, vorher kopierten, Konfigurationsdatei jail.local
errgänzt du die erforderlichen Parameter, um ihn per fail2ban zu überwachen.
Anschließend speicherst du die Änderungen mit Strg+O und schließt Nano mit Strg+C.
[...]
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
[...]
systemctl restart fail2ban.service
DNS-Einstellungen anpassen
Damit der Server reagiert, wenn du deine URL im Browser aufrufst, musst du die DNS-Einträge deiner Domain im Customer Control Panel anpassen.
2001:db8:0:8d3:0:8a2e:70:7344
und 00.111.22.333
sind durch die tatsächlichen Adressen zu ersetzen.
Host | Type | Destination |
---|
* | AAA | 2001:db8:0:8d3:0:8a2e:70:7344 |
* | A | 00.111.22.333 |
@ | AAA | 2001:db8:0:8d3:0:8a2e:70:7344 |
@ | A | 00.111.22.333 |
www | CNAME | @ |
Docker
Der hier beschriebene Installationsweg setzt Docker und docker-compose voraus.
Installation der Containervirtualisierung Docker
apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io
Test der Installation
Mit der Installation des offiziellen Hello World! Images wird die Funktionsfähigkeit der Installation getestet.
docker run hello-world
Wenn dir die Installation geglückt ist, begrüßt dich Docker freundlich.
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
$ docker images hello-world
REPOSITORY TAG IMAGE ID SIZE
hello-world latest fce289e99eb9 1840
docker-compose installieren
Die Version in der URL sollte durch die jeweils aktuelle (Latest Release) ersetzt werden: https://github.com/docker/compose/releases
curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Snapshot anlegen
Anlegen eines System-Snapshots im Servercontrolpanel, um notfalls immer wieder zu einer sauberen Docker-Installation zurückkehren zu können.
Ports öffnen
Damit der Passwort-Manager erreichbar ist, musst du weitere Ports der Firewall öffnen.
ufw allow http
ufw allow https
ufw reload
Bitwarden Passwort-Manager
Jetzt endlich kann Bitwarden installiert und in Betrieb genommen werden.
Installations-ID und -Key
Falls noch nicht geschehen, besorge dir jetzt bitte eine ID und einen Key, um Bitwarden installieren zu können: https://bitwarden.com/host/
Installation
curl -Lso bitwarden.sh https://go.btwrdn.co/bw-sh \
&& chmod +x bitwarden.sh
./bitwarden.sh install
Im Verlauf der Installation sind die zuvor erworbene ID nebst Key sowie deine Domain einzugeben. Der Erstellung des Let’s Encrypt-Zertifikas stimmst du bitte zu. Nach Abschluss der Installation meldet sich Bitwarden wie folgt:
Bitwarden is up and running!
===================================================
visit https://URL.TLD
to update, run `./bitwarden.sh updateself` and then `./bitwarden.sh update`
Die Ausgabe legt nahe, die Anwendung zu aktualisieren. Im Moment kannst du davon absehen – ich zeige dir später, wie du die Updates täglich und automatisch durch deinen Server erledigen lassen kannst.
Wenn du die URL aufrufst, die vom Skript ausgegeben wird, siehst du den Dialog zur Anmeldung an deiner neuen Bitwarden-Instanz.
Über die Schaltfläche Konto erstellen legst du deinen Account an.
Bitwarden – User-Login
Einstellungen anpassen
Die Datei global.override.env
muss editiert werden. Alle hier verwandten Werte sind Platzhalter, die der tatsächlichen Betriebsumgebung angepasst werden müssen.
Die meisten Daten werden zum Versand von E-Mails durch Bitwarden benötigt. Ohne Sie kann der Passwort-Manager nicht (vollumfänglich) genutzt werden.
Die Variable globalSettings__disableUserRegistration=true
verhindert, dass sich (weitere) Benutzer*innen anmelden können und sollte erst nach Anlegung deines eigenen Accounts auf true gesetzt werden.
Unter adminSettings__admins
gibst du deine eigene E-Mail-Adresse ein. Damit stellst du sicher, dass du dich später als Administrator der Anwendung anmelden kannst.
nano bwdata/env/global.override.env
Nach Öffnen des Editors Nano die Variablen mit Werten füllen, um anschließend die Änderungen mit Strg+O zu speichern und Nano mit Strg+C zu schließen.
[...]
globalSettings__mail__replyToEmail=ADRESS@URL.TLD
globalSettings__mail__smtp__host=MAIL.URL.TLD
globalSettings__mail__smtp__port=587
globalSettings__mail__smtp__ssl=true
globalSettings__mail__smtp__username=USER
globalSettings__mail__smtp__password=PASSWORD
globalSettings__disableUserRegistration=true
[...]
adminSettings__admins=ADMINSADRESS@OTHERURL.TLD
Admin-Panel aufrufen
Unter https://url.tld/admin/, wobei url.tld zu ersetzen ist, kannst du deine Admin-E-Mail-Adresse angeben und bekommst anschließend einen Login-Link zugesandt.
Bitwarden – Admin-Login
Bitwarden – Admin, Login-Link
Aktuell halten
Aktualisierungen von Bitwarden werden auf dem folgenden Weg zukünftig täglich automatisch installiert. Der Verlauf der Updates wird samt Zeitstempel in die Datei update.log geschrieben.
touch /var/log/update.log
touch /etc/cron.daily/bitwarden
nano /etc/cron.daily/bitwarden
Nach Öffnen des Editors Nano folgende Zeilen einfügen. Anschließend erneut die Änderungen mit Strg+O speichern und Nano mit Strg+C schließen.
#!/bin/bash
printf "\n" &>> /var/log/update.log
Z=Europe/Berlin date '+%Y-%m-%d %H:%M:%S' &>> /var/log/update.log
/root/bitwarden.sh updateself &>> /var/log/update.log
/root/bitwarden.sh update &>> /var/log/update.log
chmod +x /etc/cron.daily/bitwarden
/etc/cron.daily/bitwarden
Die Ausgabe des Skripts kannst du dir durch Aufruf des Logfiles in Nano anzeigen lassen.
nano /var/log/update.log
Server-Updates
Nicht nur die Anwendung selbst, sondern auch sämtlich Software des Servers muss aktuell gehalten werden.
Das folgende Skript sorgt dafür, dass du stets einen gepatchtes System betreibst.
touch /etc/cron.daily/update
nano /etc/cron.daily/update
#!/bin/bash
printf "\n" &>> /var/log/update.log
Z=Europe/Berlin date '+%Y-%m-%d %H:%M:%S' &>> /var/log/update.log
sudo apt-get update &>> /var/log/update.log
sudo apt-get -y upgrade &>> /var/log/update.log
sudo apt-get -y dist-upgrade &>> /var/log/update.log
sudo apt-get -y autoremove &>> /var/log/update.log
sudo apt-get -y clean &>> /var/log/update.log
sudo apt-get purge -y $(dpkg -l | awk '/^rc/ { print $2 }') &>> /var/log/update.log
chmod +x /etc/cron.daily/update
/etc/cron.daily/update
nano /var/log/update.log
Fazit
Bitwarden lässt mich ruhiger schlafen und ist das beste in Sachen Passwort-Manager, was mir bisher begegnet ist. Jede*r sollte die Hoheit über die eigenen Daten behalten können – erst recht bei so sensiblen wie Passwörtern.
Wenn euch die Anwendung auch gefällt, klickt euch eine Premium-Mitgliedschaft für 10$ pro Jahr und unterstützt die Weiterentwicklung der Software, sie ist jeden Cent wert.
Tipps
Sync der iOS-App schlägt fehl
Ich hatte das Problem, dass auf einmal die Synchronisation meines Telefons mit dem Server nicht mehr funktionerte.
Zwei E-Mails später war das Problem gelöst:
„Hi Sven,
Thank you for supporting Bitwarden! I’d be happy to help.
You will want to go to Settings > Sync > SYNC VAULT NOW. If the vault still does not appear to sync, please log out and re-login.
Let me know if this helps!“ Luc von Bitwarden
Einfach in der App vom Server abmelden, erneut anmelden und schon ist das Problem gelöst.