Schlagwort: self-hosted password manager

Passwort-Manager 2021 – Passwörter selbst verwalten

Bitwarden-Homepage

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.

HostTypeDestination
*AAA2001:db8:0:8d3:0:8a2e:70:7344
*A00.111.22.333
@AAA2001:db8:0:8d3:0:8a2e:70:7344
@A00.111.22.333
wwwCNAME@

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.

Passwort-Manager Bitwarden User-Login

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.

Passwort-Manager Bitwarden Admin-Login

Bitwarden – Admin-Login

Bitwarden - Admin, Login-Link

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.