Vaultwarden (Docker) mit fail2ban absichern

floklo4

Lt. Commander
Registriert
Feb. 2012
Beiträge
1.402
Hallo Leute,

ich bräuchte einmal externen Input bei meinem Problem, da ich selber schon verschiedenste Ansätze versucht habe, die aber leider nicht erfolgreich waren.

Ich nutze auf dem NAS eine VM mit Debian 12 in der ich Docker installiert habe und darüber Vaultwarden realisiere. Dies funktioniert ohne Probleme. Ich kann von extern auf den Tresor zugreifen und diese nutzen. Als Reverse-Proxy nutze ich Caddy. Ich möchte nun Vaultwarden dahingehend absichern, dass fail2ban IPs nach 2 Loginversuchen sperrt. Fail2ban läuft direkt in Debian, nicht in einem Docker Container. Es werden bei einem Test auch IPs angeblich gesperrt, jedoch haben diese trotzdem noch Zugriff auf Vaultwarden per Browser. Hier liegt also das Problem. Vielleicht kann mir jemand behilflich sein. Liegt es in der Jail an der banaction/action? Probiert habe ich bisher:

banaction = %(banaction_allports)s (war der Standard)
banaction = iptables
action = iptables-allports[name=vaultwarden, chain=FORWARD]
action = iptables-multiport[name="vaultwarden",port="http,https"]

Nach den Änderungen wurde fail2ban jeweils neu gestartet. Als Wert für chain nutze ich Forward.

Gruß
Florian
 
Ein wenig gruselig ist, dass ich gerade exakt das Gleiche gemacht habe - nur ein ganz leicht anderes Setup (Vaultwarden im Container und Fail2Ban direkt unter Debian als VM in der Hetzner Cloud - nicht auf einem NAS und ohne Proxy)

Code:
# Datei: /etc/fail2ban/jail.d/vaultwarden.local
[vaultwarden]
enabled = true
port = 80,443,8081
filter = vaultwarden
action = iptables-allports[name=vaultwarden]
logpath = /bw-data/vaultwarden.log
maxretry = 3
bantime = 14400
findtime = 14400

Code:
[INCLUDES]
before = common.conf

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

Und dazu hat ein Reload von fail2ban nicht gereicht - ich musste mit
Code:
sudo systemctl restart fail2ban.service
neu starten.



Was sagt ein
Code:
fail2ban-client status
Und dann entsprechend der Jail?
Ergänzung ()

Und dazu noch folgendes gefunden:
https://github.com/dani-garcia/vaultwarden/discussions/4576
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: LiniXXus und mscn
blub182 schrieb:
action = iptables-allports[name=vaultwarden]

Okay, das hatte ich gestern auch schon, hatte nicht funktioniert. Und wieso nicht? Weil ich dahinter noch chain=FORWARD hatte. Somit war 2x "chain" in der Konfiguration. Fail2ban hat das nur nicht interessiert. Sinnlos. Jetzt klappts! "action = iptables-allports[name=vaultwarden]" ist hier die Lösung bei mir. Danke dir!

Trage ich im Browser jetzt 2x das falsche ein, wird die IP gesperrt. Ich komme zwar zur Eingabemaske für Mail und dann Passwort, aber ein Login ist nicht möglich. Der Ladekreis bleibt.
 
Nur aus Interesse, habt ihr eure Vaultwarden-Instance direkt nach außen exposed?

Ich habe es aktuell so gelöst dass ich von außerhalb des LAN nur per Wireguard auf die FritzBox connecte und so auf die selbst gehosteten Dienste zugreifen kann.

Ich hab mich immer gefragt ob das als Absicherung reicht.
 
  • Gefällt mir
Reaktionen: SavageSkull und madmax2010
Ich leite Port 80 und 443 der VM über die Firtzbox nach draußen, also nur die zwei Ports und nicht die komplette VM. Reverse Proxy ist ja Caddy, könne man auch NGINX usw nutzen...
 
  • Gefällt mir
Reaktionen: SpartanerTom
Ja ich nutze für alle services nginx proxy manager um SSL Zertifikate etc. zu verwalten. Habe zwischen NPM, Caddie und Traefik geschwankt und bin letztlich bei NPM gelandet.

Aber eben bis dato alles nur aus localen IP Bereichen zugängig. Ich muss demnächst mal einen geordneten Security Audit bei meinem recht schnell gewachsenen Setup machen.
 
Zurück
Oben