[QTS + Nginx Proxy Manager] Quell-IP-Adresse geht verloren

Hallo zusammen,

ich habe ein Konfigurationsproblem zwischen meinem QNAP (QTS) und dem Nginx Proxy Manager (NPM), wodurch mein Fail2ban (oder der QTS-Zugangsschutz) bei Brute-Force-Angriffen wirkungslos bleibt.

Meine Konfiguration:
QNAP (QTS): Lokale IP 192.168.10.10 (ich habe sie auf eine Standard-RFC1918-IP-Adresse geändert, aber Sie können Ihre eigene verwenden)

Nginx Proxy Manager: Lokale IP 192.168.10.6 (in einem Docker-Container oder auf einer separaten VM)

Ziel: Zugriff auf QTS über einen Domainnamen (z. B. myqnap.domain.com) unter Verwendung von NPM für SSL und als Reverse Proxy.

Das Problem:
Der Zugriff funktioniert einwandfrei. Mein Domainname zeigt auf meinen Router, der die Ports 80/443 an den Nginx Proxy Manager (100.6) weiterleitet, und NPM leitet den Traffic dann an mein QNAP (100.10) weiter.

Das Problem ist, dass QTS die tatsächliche Quell-IP (öffentliche IP) der Besucher nicht sieht.

Wenn ein Verbindungsversuch fehlschlägt (Brute-Force-Angriff), geben die QTS-Sicherheitsprotokolle an, dass der Versuch von der IP 100.6 (der IP meines Nginx Proxy Managers) stammt.

Die Folge: Wenn ich den IP-Zugangsschutz oder Fail2ban auf dem QNAP aktiviere, um IPs nach mehreren Fehlversuchen zu sperren, wird die IP meines Nginx Proxy Managers (100.6) gesperrt.

Ergebnis:

Der Angreifer wird nie gesperrt.

Mein eigener Proxy wird gesperrt, was den Zugriff auf QTS für alle legitimen Nutzer unterbindet.

Meine Frage: Wie kann ich den Nginx Proxy Manager so konfigurieren, dass die Quell-IP-Adresse korrekt weitergeleitet wird (über die X-Forwarded-For- oder X-Real-IP-Header) UND wie kann ich QTS so konfigurieren, dass es diesen Header liest und vertraut?

Ich habe in den NPM-Optionen nachgesehen (ich habe „Forward Client-IP“ und „Forward Hostname“ aktiviert), aber QTS scheint immer noch die IP des Proxys zu sehen. Muss ich eine benutzerdefinierte Konfiguration in Nginx (über den „Advanced“-Tab in NPM) hinzufügen oder gibt es eine versteckte Einstellung in QTS, um einem Proxy zu „vertrauen“?

Vielen Dank im Voraus für eure Hilfe!

Klingt wie das hier

Gleicher Nutzer?

Ja, das stimmt, leider wird keine Lösung angeboten.

Tatsächlich sieht NPM die IP-Adresse, aber wenn Benutzer mit falschen Passwörtern getestet werden, sind die Fehlschläge in NPM nicht sichtbar. Bei QNAP sind die fehlgeschlagenen Versuche sichtbar, erscheinen jedoch mit der internen IP-Adresse von NPM.

2025-11-04T21:24:51+01:00 NAS-L qulogd[17070]: conn log: Benutzer: Dbd, Quell-IP: 192.168.10.6, Computername: —, Verbindungstyp: HTTPS, Zugegriffene Ressourcen: Administration, Aktion: Login fehlgeschlagen

Wenn du eine Firewall wie opnsense/pfsense im Einsatz hast, kannst du den Zugriff einschränken und so potenzielle Angriffe reduzieren.

Ich weiß nicht, wie man npm verwendet, um das zu erreichen, was du möchtest, aber auf der Firewall kannst du Regeln einrichten, um bestimmte IP-Bereiche zu blockieren und/oder nur einen bestimmten Satz von IPs zuzulassen usw.

Externe Angriffe sind der Grund, warum ich internen Apps keinen direkten Zugriff über externe IPs erlaube. Ich bevorzuge es, mich per VPN in meine Firewall einzuwählen und den Dienst auf diesem Weg zu nutzen, anstatt ihn dem Internet auszusetzen.

Die einzigen Dinge, die nicht blockiert sind, sind meine Spieleserver und eine Website. Aber auch hier blockiert die Firewall die meisten Länder, bekannte Spammer-IPs usw.

Diese Lösung ist zu restriktiv, was schade ist, denn QNAP bietet Lösungen an, aber wir halten uns aus Angst vor Hackerangriffen zurück. VPNs für alle QNAP-Clients hinzuzufügen wäre nicht zu verwalten. Ich habe ein Skript erstellt, das die IP-Adressen in den QNAP-Protokollen mit der IP-Adresse des Geräts abgleicht, das über meinen NPM eine Verbindung herzustellen versucht; das ist die einzige Lösung, die ich gefunden habe.