Externer Zugriff trotz Drop - Vaultwarden auf Docker, Fail2ban und Iptables

Bommel

New Member
Nov 22, 2023
8
0
1
Hallo liebe Community

ich bin (relativ) neu hier im Forum. Seit gut einem Jahr beschäftige ich mich mit dem Linux-System, u.a. mit Proxmox und VM. Ich habe einige Erfahrungen sammeln können, möchte aber nicht behaupten, dass ich viel von der Linux-Welt verstehe. Ich komme auch nicht aus der IT-Welt, also verzeiht mir, wenn mir gewisse Grundlagen fehlen. Mit Web-Tutorials kann man viel erreichen, stößt aber bei Problemen schnell an seine Grenzen. So, genug von mir.

Ich betreibe einen kleinen Proxmox-Server. Darauf läuft unter anderem eine VM mit Vaultwarden. Vaultwarden läuft auf Docker, bzw. mit der Erweiterung Docker-Compose. Der Traffic für Vaultwarden wird über eine separate DynDNS von der PF-Sense mit Portweiterleitung an den NGINX Proxy Manager zur VM weitergeleitet. Dies funktioniert einwandfrei. Da der Server von außen erreichbar ist, habe ich ihn mit Fail2Ban "abgesichert". Fail2Ban habe ich über APT installiert. Fail2ban kann die Logs von Vaultwarden erfolgreich lesen und sperrt auch erfolgreich die IP. So steht im Status unter Action die richtige IP. Ich teste das immer von meinem Arbeitsplatzrechner aus. Der Arbeitsrechner läuft immer über das Firmennetzwerk via VPN, also kann ich damit von aussen zugreifen. Die IP wird bei erfolgreicher Sperrung von Fail2Ban an Iptables weitergeleitet. In der Chain FORWARD bei Iptables kommt der Eintrag f2b-bitwarden an erster Stelle.

Der Befehl iptables -L gibt folgendes aus:

Code:
Chain f2b-bitwarden (3 references)
target     prot opt source               destination         
DROP       all  --  ip.von.der.arbeit       anywhere

Nach Ablauf der angegebenen Zeit oder nach einem unban Befehl via fail2ban wird der Eintrag in iptables ebenfalls gelöscht.

Soweit die Konfiguration und das Setup. Mein Problem ist nun, dass ich trotz Sperre und Eintrag in Iptables von außen auf Vaultwarden zugreifen kann. Ich verstehe nicht warum, also das Problem und bin mit meinem wenigen Latein am Ende. Ich vermute hier das Problem bei der VM oder bei Proxmox. Wahrscheinlich handelt es sich sogar um ein triviales Problem mit einer einfachen Lösung. :sweat_smile: Über sachdienliche Hinweise wäre ich super dankbar.

Vielen lieben Dank.

Mike


Hier ist die Codes und Ausgaben:

Code Docker Compose Vaultwarden
Code:
version: '3'

volumes:
  mariadb:
    driver: local

networks:
  vaultwarden-mariaDB:


services:
  mariadb:
    image: mariadb:latest
    restart: always
    environment:
        MYSQL_ROOT_PASSWORD: supergeheimespassword
        MYSQL_USER:  mike
        MYSQL_PASSWORD: supergeheimespassword
        TZ: "Europe/Berlin"
    ports:
        - "3306:3306"
    volumes:
        - /volume1/docker/mariadb:/var/lib/mysql
    networks:
        - vaultwarden-mariaDB

  vaultwarden:
    image: vaultwarden/server:latest
    restart: always
    environment:
        ADMIN_RATELIMIT_SECONDS: 3600
        ADMIN_TOKEN: supergeheimespassword
        DATABASE_URL: mysql://vaultwarden:supergeheimespassword@mariadb/vaultwarden
        LOG_FILE: /data/log/vaultwarde.log
        #LOG_LEVEL: info
        LOGIN_RATELIMIT_MAX_BURST: 10
        LOGIN_RATELIMIT_SECONDS: 86400
        PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
        ROCKET_ADDRESS: 0.0.0.0
        ROCKET_PORT: 80
        ROCKET_PROFILE: release
        USE_SYSLOG: true
        TZ: Europe/Berlin
    ports:
        - "3012:3012"
        - "8010:80"
    volumes:
        - /volume1/docker/vaultwarden:/data
    networks:
        - vaultwarden-mariaDB
              
  phpmyadmin:
    image: phpmyadmin:latest
    restart: always
    expose:
        - "8000"
    ports:
        - "8000:80"
    environment:
        - PMA_HOST=mariadb
        - PMA_PORT=3306
        - TZ=Europe/Berlin
    networks:
        - vaultwarden-mariaDB



jail.local
Code:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.0.0/16 10.0.0.0/8
chain = FORWARD

[bitwarden]
enabled = true
port    = http,https
logpath = /volume1/docker/vaultwarden/log/vaultwarde.log
filter   = bitwarden
action = iptables-allports[name=bitwarden, chain=FORWARD, port="80,443"]
maxretry = 3
bantime = 3600

Fail2ban Status Jail Bitwarden
Code:
Status for the jail: bitwarden
|- Filter
|  |- Currently failed:    0
|  |- Total failed:    0
|  `- File list:    /volume1/docker/vaultwarden/log/vaultwarde.log
`- Actions
   |- Currently banned:    1
   |- Total banned:    2
   `- Banned IP list:    ip.von.der.arbeit
 
Dein "PC" und dein Proxmox sind in deinem lokalen Netzwerk.
Du baust mit deinem PC ein VPN in die Firma auf zum arbeiten. Selbstverständlich kann dein PC auf dein lokales Netzwerk zugreifen - er ist ja immer noch ein Teil davon (lokale IP!).
Hast du das mal von der Arbeit aus probiert?
 
Last edited:
Ja, das habe ich. Ich versuchte dies sogar über das Mobiltelefon mit demselben Ergebnis.
 
Dann müsste hier das Problem liegen:
"Der Traffic für Vaultwarden wird über eine separate DynDNS von der PF-Sense mit Portweiterleitung an den NGINX Proxy Manager zur VM weitergeleitet."
die PF-Sense (Firewall) leitet ja wohl weiter.
 
Dann müsste hier das Problem liegen:
"Der Traffic für Vaultwarden wird über eine separate DynDNS von der PF-Sense mit Portweiterleitung an den NGINX Proxy Manager zur VM weitergeleitet."
die PF-Sense (Firewall) leitet ja wohl weiter.
Ich verstehe das nicht. F2B befindet sich auf der VM. Die PF-Sense leitet auf NPM weiter und NPM auf die VM auf der Vaultwarden läuft. Auf der VM ist F2B installiert und auf der VM findet auch der Eintrag in die Iptables statt. Der Drop müsste doch auf der VM erfolgen.
 
Ich verstehe das nicht. F2B befindet sich auf der VM. Die PF-Sense leitet auf NPM weiter und NPM auf die VM auf der Vaultwarden läuft. Auf der VM ist F2B installiert und auf der VM findet auch der Eintrag in die Iptables statt. Der Drop müsste doch auf der VM erfolgen.
ist das dann noch ein "externer zugang" oder schon "intern, weil Proxy" ?
 
Der NPM schleift die real IP auch durch? Normalerweise würde man auf dem Docker Host, wo der NPM läuft, fail2ban „zentral“ laufen lassen. Der ist ja das Einfallstor.

Die VM mit Vaultwarden: läuft die auch unter Proxmox oder auf einer Synology? „/volume1“ sieht danach aus.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!