manuel987
Goto Top

Reverse Proxy Server funktioniert nicht

Hallo liebes Forum,

ich bin verzweifelt, daher wende ich mich an euch, in der Hoffnung einen Tipp zu erhalten. Ich habe einen NGINX Proxy Manager Reverse Proxy Server aufgelegt der unter der IP 192.168.1.218 arbeitet. Der Monitor ist unter dem Port 81 erreichbar.

Nun habe ich drei Webserver unter jeweils 192.168.1.90 (ws1.domain.com), 192.168.1.252 (ws2.domain.com) und 192.168.1.155 (ws3.domain.com) am laufen.

Dann habe ich noch eine UbiQuiti Unifi Dream Machine Pro die an den WAN angeschlossen ist. Ich habe eine Feste IP zugewiesen von Unitymedia/Vodafone.

Im Proxy Manager ist alles korrekt eingestellt. Die drei Poxy Hosts sind im Status grün und Access ist Public.

Beim Domainanbieter habe ich einen A Record für alle drei Subdomains (ws1, ws2 und ws3) auf die feste IP gelegt, so dass die Anfragen von Außerhalb immer auf die Feste IP sprich die UDM Pro weitergeleitet werden.

So jetzt zum Problem:

Wenn ich das Portforwarding für 80 und 443 in der DM Pro auf den NGINX Proxy Server lege und außerhalb des Netzwerkes die Domain einer der Domains bspw. ws1.domain.com aufrufe, dann erhalte ich im Edge Browser die Meldung ERR_CONNECTION_REFUSED. Im Netzwerk öffnet sich die Seite.

Setze ich das Portforwarding auf direkt einen der drei Webserver, dann öffnet sich die Seite ganz normal.

Ich habe neben dem NGINX auch schon andere Reverse Proxy Server probiert, immer das gleiche Verhalten, so dass ich davon ausgehe das es kein Problem des NGINX ist, sondern ich muss noch ein anderes Problem haben.

Ich nutze lokal keinen DNS Server, das bedeutet die UDM vergibt an die lokalen Geräte vermutlich den Standard des Internetanbieters Vodafone (Unitymedia). Liegt hier das Problem?

Wer kann mir einen Tipp geben? Wo steckt mein Fehler?

Besten Dank und viele Grüße
Manuel

Content-Key: 4312833551

Url: https://administrator.de/contentid/4312833551

Printed on: May 2, 2024 at 02:05 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Dec 23, 2023 at 08:26:24 (UTC)
Goto Top
Moin,

Zugriff von außen auch in der config erlaubt?

Siehe https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-a ...

lks
Member: Dani
Dani Dec 23, 2023 at 09:29:53 (UTC)
Goto Top
Moin,
Wenn ich das Portforwarding für 80 und 443 in der DM Pro auf den NGINX Proxy Server lege und außerhalb des Netzwerkes die Domain einer der Domains bspw. ws1.domain.com aufrufe, dann erhalte ich im Edge Browser die Meldung ERR_CONNECTION_REFUSED. Im Netzwerk öffnet sich die Seite.
wenn du das mit Port 81 machst, gleiches Verhalten oder kommst du dann auf die UI des NPM?


Gruß,
Dani
Member: Manuel987
Manuel987 Dec 23, 2023 at 09:33:57 (UTC)
Goto Top
Moin lks,

vielen Dank für deinen Input.

Nein in den webservern in der nginx config ist kein deny oder allow nach listen eingestellt. Auch im NGINX Proxy Manager ist keine Access List eingestellt.
screenshot 2023-12-23 102923
Member: Manuel987
Manuel987 Dec 23, 2023 at 09:42:55 (UTC)
Goto Top
Zitat von @Dani:

Moin,
Wenn ich das Portforwarding für 80 und 443 in der DM Pro auf den NGINX Proxy Server lege und außerhalb des Netzwerkes die Domain einer der Domains bspw. ws1.domain.com aufrufe, dann erhalte ich im Edge Browser die Meldung ERR_CONNECTION_REFUSED. Im Netzwerk öffnet sich die Seite.
wenn du das mit Port 81 machst, gleiches Verhalten oder kommst du dann auf die UI des NPM?


Gruß,
Dani

Hallo Dani,

auch dir Danke für deinen Input. Setze ich das Portforwarding von port 80 auf 81 auf den NPM dann komme ich auch von Außen direkt auf den NPM ohne den Port 81 einzugeben. Das funktioniert.
Member: Dani
Dani Dec 23, 2023 at 10:30:12 (UTC)
Goto Top
Moin,
Nun habe ich drei Webserver unter jeweils 192.168.1.90 (ws1.domain.com), 192.168.1.252 (ws2.domain.com) und 192.168.1.155 (ws3.domain.com) am laufen.
kannst du von dem Server aus, auf dem NPN läuft, die drei Domains auflösen? Welche IP-Adresse bekommst du bei ping/dig angezeigt?


Gruß,
Dani
Member: Manuel987
Manuel987 Dec 23, 2023 at 10:35:09 (UTC)
Goto Top
Zitat von @Dani:

Moin,
Nun habe ich drei Webserver unter jeweils 192.168.1.90 (ws1.domain.com), 192.168.1.252 (ws2.domain.com) und 192.168.1.155 (ws3.domain.com) am laufen.
kannst du von dem Server aus, auf dem NPN läuft, die drei Domains auflösen? Welche IP-Adresse bekommst du bei ping/dig angezeigt?


Gruß,
Dani

Wenn ich mich per Putty auf den NPN einlogge und per ping auf die Domain ws1.domain.com oder auch die anderen abgebe, dann erhalte ich korrekt die interne IP 192.168.1.90 usw aufgelöst.

Danke und Gruss
Member: Dani
Dani Dec 23, 2023 at 11:04:47 (UTC)
Goto Top
Moin,
Wenn ich mich per Putty auf den NPN einlogge und per ping auf die Domain ws1.domain.com oder auch die anderen abgebe, dann erhalte ich korrekt die interne IP 192.168.1.90 usw aufgelöst.
Ich hatte die Vermutung, dass die WAN IP-Adresse ausgegeben wird und damit einen Loop hast.

auch dir Danke für deinen Input. Setze ich das Portforwarding von port 80 auf 81 auf den NPM dann komme ich auch von Außen direkt auf den NPM ohne den Port 81 einzugeben. Das funktioniert.
Richtig, weil durch diese Konfiguration ein Port Forwarding und Mapping statt findet. Versuche mit dieser Konfiguration nochmals aus dem Internet auf http://ws2.domain.com:80 zuzugreifen. Das sollte nun gehen.


Gruß,
Dani
Member: Manuel987
Manuel987 Dec 23, 2023 at 12:58:24 (UTC)
Goto Top
Zitat von @Dani:

Moin,
Wenn ich mich per Putty auf den NPN einlogge und per ping auf die Domain ws1.domain.com oder auch die anderen abgebe, dann erhalte ich korrekt die interne IP 192.168.1.90 usw aufgelöst.
Ich hatte die Vermutung, dass die WAN IP-Adresse ausgegeben wird und damit einen Loop hast.

auch dir Danke für deinen Input. Setze ich das Portforwarding von port 80 auf 81 auf den NPM dann komme ich auch von Außen direkt auf den NPM ohne den Port 81 einzugeben. Das funktioniert.
Richtig, weil durch diese Konfiguration ein Port Forwarding und Mapping statt findet. Versuche mit dieser Konfiguration nochmals aus dem Internet auf http://ws2.domain.com:80 zuzugreifen. Das sollte nun gehen.


Gruß,
Dani

Hi Dani,

mit Port 81 auf den NPM komme ich nur auf die Monitor-Seite bzw. Konfigurationsseite. Gebe ich die Sub-Domains der anderen Webserver ein, komme ich immernoch von Außen durch, oder habe ich dich da falsch verstanden?

Ich habe jetzt nur Portweiterleitung von 80 auf 81 auf den NPN eingestellt, das war so von dir gewollt oder? 81 ist die Konfig-Seite.
Member: aqui
aqui Dec 23, 2023 updated at 13:44:59 (UTC)
Goto Top
Was Kollege @Dani sehr wahrscheinlich meint ist das es ggf. einen Konflikt auf der UBQT Gurke gibt, da die selber ja einen Webserver mit Port 80 und 443 zur Konfiguration betreibt. Sofern du den Konfig Zugriff auf dem WAN Port nicht vollständig deaktivierst kann er ja bei dem an seine Adresse eingehenden 80 und 443 Traffic nicht entscheiden ob das für ihn gemeint ist oder er es forwarden muss und rejected im Zweifel diese Ports was deine o.a. Fehlermeldung vermuten lässt. Sprich du musst dem Router beibringen das er diesen Traffic nicht als lokal verstehen muss sondern ihn zwingend auf den Proxy forwarden soll.
Deshalb der Vorschlag es auf 81 oder 8080 usw. zu legen um so einen Konflikt mit dem Router Webserver aus dem Weg zu gehen.

Noch hilfreicher wäre ein Sniffer Trace z.B. tcpdump port 80 or 443 auf dem Nginx um überhaupt erstmal zu sehen ob dort externer, vom Router geforwardeter 80 und 443 Traffic aufläuft!
Kannst du dort nichts sehen scheitert es ja schon am vor dem Proxy liegenden Port Forwarding!
So ein Sniffer Trace wäre doch sinnvollerweise der allererste Schritt das Problem einzugrenzen um klar zu sehen WO der Verursacher liegt?! 🧐

Nebenbei gesagt generell auch kein besonders gutes Design aus Sicherheitssicht über das Port Forwarding Loch in der Firewall ungeschützen Internet Traffic in das lokale Netz zu leiten. Ganz besonders mit den klassischen HTTP Ports. Normalerweise ein NoGo. Der Proxy gehört immer auf die Firewall selber wie es pfSense oder OPNsense u.a. über ihre Packages ja auch erlauben.
Zumindestens aber sollte man den Proxy in so einem Fall immer in eine isolierte DMZ stellen und die Ziel Webserver in getrennte Segmente und mit einem entsprechenden Regelwerk schützen wenn man schon eine Firewall sein eigen nennt. Nichteinmal das ist oben gemacht worden wie die IP Adressierung ja leider verrät. face-sad
Ggf. solltest du also generell nochmal dein Design überdenken sofern Sicherheit überhaupt eine Rolle spielt?!
Member: Manuel987
Manuel987 Dec 23, 2023 at 17:23:42 (UTC)
Goto Top
Hallo aqui,

wenn ich in der UBQT ein Portforward 80/443 direkt auf einen der Webserver einstelle und dann von Extern die subdomain aufrufe bspw. ws1.domain.com dann lande ich auch auf der Website. Daher vermute ich das die UBQT nicht die Ursache ist?

Den Hinweis mit dem tcpdump bin ich nachgegangen. Nur wenn ich port 80 auf den nginx proxy weiterleite, dann kommt dort auch meine Anfrage an. Das kann ich sehen. Rufe ich allerdings https://ws1.domain.com auf, kommt dort nichts an, wenn ich port 80 sperre und nur port 443 weiterleite.

Großen Dank für deinen Hinweis bzgl. der Segmentierung und dem Design aus Sicherheitssicht. Die Sicherheit spielt aufjedenfall eine Rolle. Das würde ich dann angehen, sobald es erstmal überhaupt funktionsfähig ist. Ich bin echt für jeden Hinweis Dankbar und lerne gerne aus Eurer Erfahrung!

Was wäre ein sinnvolles Setup unter der Voraussetzung die UBQT UDM Pro und die drei Webserver/Webseiten für das Internet zugänglich zu machen? Ich stehe hier echt auf dem Schlauch.

Danke und Gruß
Manuel
Member: aqui
aqui Dec 23, 2023 updated at 19:48:12 (UTC)
Goto Top
kommt dort nichts an
Was ja bestätigt das es dann zumindestens für TCP 443 einen Fehler gibt.

Was steht denn im Nginx Log (/var/log/nginx/access.log bzw. auch /var/log/nginx/error.log) wenn du den "ERR_CONNECTION_REFUSED" Fehler bei TCP 80 bekommst? Wäre ja zielführend dort einmal nachzusehen als ersten Anlaufpunkt. Nginx muss ja irgendwas protokollieren im Log was er nicht mag. 🤔
Member: Dani
Dani Dec 23, 2023 at 21:40:04 (UTC)
Goto Top
Moin,
kommt dort nichts an
  • Den der Docker Konfiguration entsprechend Einträge für Port 80/443 vorhanden (Link)? Die Ports natürlich entsprechend deiner Rahmenbedingungen anpassen.
  • Siehst du Listner für Port 80 und 443 auf dem Server mit dem NPM (netstat -tulpen)?
  • UFW/iptables auf dem Server im Einsatz, wo das notwendige Loch für Port 80/443 noch fehlt?

Was steht denn im Nginx Log (/var/log/nginx/access.log bzw. auch /var/log/nginx/error.log)
In dem Fall (NPM gibt es nur als Docker Container) in den entsprechenden Volume (./data).

Gruß,
Dani
Member: Manuel987
Manuel987 Dec 26, 2023 at 10:59:03 (UTC)
Goto Top
Hi Dani,

ich gebe es auf...die error logs sind leer, in den access logs kommt ein GET 301 Befehl an. die Listner Einträge 80 und 443 sind vorhanden.

Ich werde das Thema vermutlich erstmal begraben, oder kennst ihr einen Spezialisten der sich das mal remote anschauen könnte?

Gruss
Manuel
Member: Dani
Dani Dec 26, 2023 at 20:39:55 (UTC)
Goto Top
Moin,
ich gebe es auf...die error logs sind leer, in den access logs kommt ein GET 301 Befehl an.
Der HTTP Status Code 301 bedeutet, dass eine Umleitung stattfindet (Quelle)
Post doch exemplarisch mal ein paar Zeilen aus den Logfiles. Bitte nicht vergessen private Daten zu anonymisieren. face-wink


Gruß,
Dani