Bitwarden und Reverse Proxy Access Problem

MurphyDoe

New Member
Hallo zusammen,

ich habe Server mit Bitwarden.
Der ist über den Nginx Reverse Proxy im Netz (intern mit IP und Port xxxx)
Zertifikat und connect zu Apps wie Erweiterungen des Browsers und Handy funktionieren.
Fail to Ban ist auch aktiv.

Jetzt mein Problem:
eine Access List mit der jeweiligen IP in meinem Netzwerk funktioniert nicht - kein Zugang - mit nichts
ein eigener gehosteter VPN ist ebenfalls nutzlos.

Was aber geht ist die IP des Reverse Proxy unter allow - hier aber habe ich nur mir der Browsererweiterung Zugang
Handy App will dann auch noch nicht...

Jetzt meine Frage: was mache ich falsch ?
Meine Überlegung war die, dass ich den Reverse mit einer htaccess zusätzlich schütze.
Die Allow mit der Proxy IP ist dann aber sinnlos, da je jeder darauf zugreifen kann ?!
Ist der Reverse Proxy denn Sicherheit genug ?

Danke im Voraus
 

d4f

Kaffee? Wo?
Ich muss ehrlich sagen dass ich an deiner Erklärung nichts verstehe. Welche Access-List, wie sieht die Config aus, von wo nach wo klappt was nicht?
Bitte Config und Funktionsweise genauer beschreiben - man muss davon ausgehen dass die anderen User keine Ahnung von Bitwarden als Applikation haben :)


Wenn ich dich richteg verstanden habe, hast du Bitwarden auf einem Host (als Docker Stack?) deployed und einen Nginx reverse Proxy davor gesetzt. In Bitwarden versuchst du nun access control Listen mit IP-Adressen zu verwalten? Das funktioniert nur wenn der interne Server von Bitwarden den externen Proxy als vertraut ansieht und X-Forwarded-For sowohl gesetzt als auch akzeptiert wird.

Falls es tatsächlich ein Docker-Stack ist, so hat Bitwarden einen eigenen Nginx-Server, zwei oder 10 in Reihe erhöht nicht die Sicherheit es sei denn dein externer Nginx-Server hätte noch weitere Schutzmechanismen oder eine nicht-unterstützte TLS-Konfiguration.

Ist der Reverse Proxy denn Sicherheit genug ?
Ein Reverse-Proxy per se bringt keine Sicherheit. Du kannst darauf Sicherheit implementieren indem du Zugangskontrolle, TLS-Client-Certificats, SSL, .... verwaltest.

Der ist über den Nginx Reverse Proxy im Netz (intern mit IP und Port xxxx)
Netz=Heimnetz oder Internet?
Bei Internet würde ich generell für Heimnetze ohne getrennte DMZ empfehlen statt port-forwarding auf Cloudflare ARGO-Tunnel (oder Alternativprodukte) zu setzen.
 

MurphyDoe

New Member
Tschuldige - hast Recht

Habe einen kleinen Server mit Proxmox.
Auf einen wurde eine Debian VM erstellt mit Bitwarden und Fail to Ban

Auf einen LXC ein Alpine mit Nginx Reverse Proxy.
Port 80 und 443 sind mit der IP des Reverse Proxy aussen.

Bitwarden bekam ein SSL Zertifikat über den Reverse, der den dann nach aussen über https bringt.
Das ist ja die Voraussetzung, daß die Android Apps und Webapps überhaupt funktionieren !

Jetzt hat ja der Nginx Reverse Proxy die Funktion nur spezielle IPs zuzulassen (deine Frage zur zusätzlichen Zugangskontrolle).
Und da habe ich das Problem:
meine interne IP vom Laptop oder Handy im Heimnetz wird nicht angenommen.
Somit verweigert er mir jeglichen Zugriff.

location / {
allow 192.168.178.117/24;
deny all;
}

Meine Frage ist daher - wie und mit welcher IP bekomme ich trotz ngx_http_access_module einen Zugang ?
Ich hoffe, das war etwas besser erklärt ...
 
Last edited:

Thunderbyte

Moderator
Staff member
location / {
allow 192.168.178.117/24;
deny all;
Die imho richtige Schreibweise wäre 192.168.178.0/24 , dann dürfen alle IPs von 192.168.178.1 bis 254 zugreifen, wenn das das ist was Du willst.

Imho ist das aber sowieso unnötig, denn wenn Du das weg lässt, kann Dein gesamtes internes Netzwerk zugreifen (was Du ja mit der allow Regel hier auch einstellst) und andere Netzwerke gibt es bei Dir hinter dem Router ja vermutlich eh nicht.

Und nach extern hilft Dir eine solche Regel eh nichts.

Ich würde es einfach bleiben lassen, mit der Access Konfig des Nginx Proxy. Wenn jemand lokal will, umgeht diese Person den Nginx sowieso.

Mein Tip: ich würde das mit Docker lösen und den Bitwarden in seinem Container ausschließlich hinter den Nginx Proxy Manager https://nginxproxymanager.com/ packen. Schlicht die Ports bei Bitwarden nicht rauslegen und alles durch den NPM führen. Dann gibt es keine unterschiedliche Behandlung von intern und extern mehr und Du hast das SSL durch den NPM (Let's Encrypt) erledigt.

Außer wir verstehen immer noch was nicht...
 

d4f

Kaffee? Wo?
Bitwarden bekam ein SSL Zertifikat über den Reverse, der den dann nach aussen über https bringt.
Das ist ja die Voraussetzung, daß die Android Apps und Webapps überhaupt funktionieren !
Die (einfachste) Standardinstallation von Bitwarden erfolgt mittels docker-compose und bringt einen eigenen Nginx mit welcher SSL-Parametrierung zulässt. Laut Setup-Guide sogar im Installationsskript: https://bitwarden.com/help/article/install-on-premise-linux/
Dabei würde der eigene Nginx-Proxy denn fällig werden und dein Setup vereinfachen.

Generelle Empfehlung zu docker-compose/swarm/kubernetes:
Wenn die Dienste nur über einen anderen Dienst oder gar nicht ansprechbar sein sollen, dann sicherstellen dass sie gar nicht erst den Port exposen. Docker-Compose kennt das Konzept von "Networks" wo dein Nginx auf dem gleichen Host einen Container im dockerstack-internen Netzwerk haben könnte. Den LXC-Container würde ich weglassen - applikative Container sind einfacher als Systemcontainer :)
 
Top