Debian Vaultwarden

Aus Wiki
Zur Navigation springen Zur Suche springen

Einleitung

Vaultwarden (neuer Name für Bitwarden_RS) ist eine freie Serverkomponente für den Bitwarden Passwort Manager. Bitwarden kann Passwörter über mehrere Geräte und Webbrowser zu synchronisieren. Durch die Verwendung von Vaultwarden, liegen die Passwörter zentral auf dem eigenen Server anstatt in einer Hersteller Cloud. Client seitig kommen die Standard Bitwarden Clients zum Einsatz.


Installation

Debian Paket erstellen

mit folgender Prozdedur kann ein Debian Paket mit der aktuellen Vaultwarden Version erstellt. Es empfiehlt sich dies auf einem Standalone Container zu erledigen, um auf dem Produktivsserver keine Buildumgebung zu haben. Das Paket wird in einer Dockerumgebung gebaut

apt-get install docker git patch curl
cd /usr/local/src
git clone https://github.com/greizgh/vaultwarden-debian.git
cd vaultwarden-debian
git checkout -b origin/vaultwarden
./build.sh -o debian_version

z.B.

./build.sh -o buster

oder

./build.sh -o bullseye

Je nach Systemleistung kann der Buildvorgang sehr lange dauern. das fertige Paket liegt im Unterordner dist/ z.B.

vaultwarden-buster-1.22.2-sqlite-amd64.deb
vaultwarden-bullseye-1.22.2-sqlite-amd64.deb

Instatlation auf Zielserver

dpkg -i vaultwarden-bullseye-1.22.2-sqlite-amd64.deb

Dies installiert Vaultwarden incl. evtl. Abhängigkeiten und legt einen systemd-Dienst und Konfigfile an. Unterverzeichnis für sqlite Datenbank Dateien anlegen:

mkdir/var/lib/vaultwarden/data
chown vaultwarden:nogroup /var/lib/vaultwarden/data


Konfiguration

vi /etc/vaultwarden/config.env

Folgende Änderung durchführen (Kommentarzeichen entfernen und ändern, Admin Token beibehalten, oder abändern.):

DATABASE_URL=/var/lib/vaultwarden/data/db.sqlite3
WEBSOCKET_ENABLED=true
WEBSOCKET_ADDRESS=0.0.0.0
WEBSOCKET_PORT=3012
EXTENDED_LOGGING=true
LOG_TIMESTAMP_FORMAT="%Y-%m-%d %H:%M:%S.%3f"
LOG_FILE=/var/lib/vaultwarden/vaultwarden.log
LOG_LEVEL=Info
SIGNUPS_ALLOWED=true
SIGNUPS_VERIFY=true
ADMIN_TOKEN=token

Vaultwarden aktivieren und starten

Bei der Installation wurde ein systemd-Daemon File angelegt, aber noch nicht aktiviert, sodass Vaultwarden beim Systemstart gestartet wird.

systemctl enable vaultwarden
systemctl start vaultwarden

Prüfen, ob Vaultwarden erfolgreich gestartet wurde

systemctl status vaultwarden


HTTPS Reverse Proxy=

Vaultwarden verwendet einen Webserver auf Port 8000, der per Default nicht TLS verschlüsselt ist. Zwar kann TLS aktiviert werden, aber dann funktionieren Websockets nicht mehr und Das Sicherheitsniveau des eingebauten Webservers entpricht nicht dem ausgewachsener Webserver ala Apache oder Nginx. für den HTTPS ist ein SSL Zertifikat und Privat Key erforlderlich. Deren Generierung ist nicht Teill dieser Anleitung.

apt-get install apache

Virtual Host anlegen:

vi /etc/apache2/sites-available/vaultwarden_https.conf

Folgende Zeilen einfügen und anpassen:

<VirtualHost *:443>
    SSLEngine on
    ServerName vaultwarden.domain.org

    SSLCertificateFile /path/cert
    SSLCertificateKeyFile /path/key
    #SSLCACertificateFile ${SSLCA}
    Include /etc/letsencrypt/options-ssl-apache.conf

    ErrorLog /var/log/apache2/vaultwarden-error.log
    CustomLog /var/log/apache2/vaultwarden-access.log combined

#    SSLProxyEngine on
    RewriteEngine On
    RewriteCond %{HTTP:Upgrade} =websocket [NC]
    RewriteRule /notifications/hub(.*) ws://IP_Vaultwarden:3012/$1 [P,L]
    ProxyPass / http://IP_Vaultwarden:8000/

    ProxyPreserveHost On
    ProxyRequests Off
    RequestHeader set X-Real-IP %{REMOTE_ADDR}s
</VirtualHost>

Virtualhost und nötige Module aktiveren:

a2ensite vaultwarden_https.conf
a2enmod ssl proxy proxy_html proxy_http

Apache neu starten:

service apache2 restart

Webbasierte Konfiguration und User anlegen

  • Webbrowser öffnen und https://vaultwarden.domain.org/admin eingeben.
  • Der Loginbildschirm der Adminoberfläche sollte erscheinen.
  • Mit dem in config.env entahltenen Admin_Token token einloggen
  • Im Bereich General Settings folgende Einstellungen vornehmen/prüfen:
  • Bereich SMTP EMAIL Settings öffnen und die Einstellungen entsprechend dem verwendeten Mailserver einstellen
    • Enabled=True
    • Host=smtp.domain.org
    • Enable Secure SMTP=true
    • Force TLS=false
    • Port=25
    • From Address=vaultwarden@domain.org
    • From Name=Vaultwarden
    • Username=mailuser
    • Password=mailpwd
  • Settings abspeichern
  • SMTP Email Setting testen
    • Bereich SMTP EMAIL Settings erneut öffnen
    • Unter Test SMTP Ziel Mailadresse eingeben und Button send test email auswählen
    • Falls Fehler auftreten, Logfile des Mailservers prüfen und Settings anpassen. Falls SSL Feher auftreten, evtl. Enabe Secure SMTP und Force TLS Settings invertieren, oder Accept Invalid Certs (Know the risks!) auswählen, Settings abspeichern und Test erneut durchführen.

User anlegen:

  • https://vaultwarden.domain.org im Browser öffnen
  • Konto erstellen auswählen
  • email Adresse eingeben
  • Name: Realer oder beliebiger Name
  • Master Passwort
  • Master Passwort wiederholen
  • evtl. Passwort Hinweis vergeben
  • Nach dem Anlegen wird eine email mit einem Verifikationslink gesendet. Diesen anklicken
  • Browser Fenster/Tab öffnet sich mit der Vaultwarden Seite und dem Hinweis, dass die Email-Adresse verifiziert wurde
  • Mit eben angelegten User-Daten einloggen


Vaultwarden absichern mit Fail2ban

Vaultwarden kann relativ einfach mittels Fail2ban gegen Brute-Force Passwort Atacken abgesichert werden. Dabei muss der User-Zugang und Admin Zugang separat betrachter werden. User werden mittels email-Adresse+Passwort authentifiziert und der Adminzugang ist mittels Token abgesichert

apt-get install fail2ban

Vaultwarden Jail

vi /etc/fail2ban/jail.d/vaultwarden.local

Folgende Zeilen einfügen:

[vaultwarden]
enabled = true
port = 80,443,8000
filter = vaultwarden
#action = iptables-allports[name=vaultwarden]
logpath = /var/lib/vaultwarden/vaultwarden.log
maxretry = 3
bantime = 3d
findtime = 3d

Vaultwarden Filter:

vi /etc/fail2ban/filter.d/vaultwarden.local

Folgende Zeilen einfügen:

[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
ignoreregex =

Admin Zugang Vaultwarden-Admin Jail

vi /etc/fail2ban/jail.d/vaultwarden-admin.local

Folgende Zeilen einfügen:

[vaultwarden-admin]
enabled = true
port = 80,443,8000
filter = vaultwarden-admin
#action = iptables-allports[name=vaultwarden]
logpath = /var/lib/vaultwarden/vaultwarden.log
maxretry = 3
bantime = 3w
findtime = 1w

Vaultwarden-Admin Filter:

vi /etc/fail2ban/filter.d/vaultwarden-admin.local

Folgende Zeilen einfügen:

[INCLUDES]
before = common.conf

[Definition]
failregex = ^.*Invalid admin token\. IP: <ADDR>.*$
ignoreregex =

Fail2Ban Neustart

service fail2ban restart


Funktionstest Fail2ban Logfile überwachen:

tail -f /var/log/fail2ban.log
  • Vaultwarden Seite im Webbrowser öffnen und mit korrekten User-Daten einloggen (siehe auch oben). Im Fail2ban Logfile dark kein Eintrag erzeugt werden.
  • Vaultwarden Seite im Webbrowser öffnen und mit falschen User-Daten einloggen. Logfile-Eintag:
[vaultwarden] Found IP - Datum Uhrzeit
  • Vaultwarden Admin Seite im Webbrowser öffnen und mit korrekten Admin_Token einloggen (siehe auch oben). Im Fail2ban Logfile dark kein Eintrag erzeugt werden.
  • Vaultwarden Admin Seite im Webbrowser öffnen und mit falschen Token einloggen. Logfile-Eintag:
[vaultwarden-admin] Found IP - Datum Uhrzeit


Client Tools

Die Installation und Einrichtung der Clienttools soll hier nicht näher beschrieben werden, da dies eigentlich selbsterklärend sein sollte. Es muss darauf geachtet werden, dass die eigene Server-Adresse als Server verwendet wird, anstatt derjenige von Bitwarden.