gerrywin
Goto Top

Hilfe Reverse Proxy NGINX RD Gateway DMZ LAN

Guten Tag,

ich bräuchte eure Hilfe!


Ich habe folgendes Szenario:


WAN:

Zywall Firewall USG FLEX 200
Öffentliche IP Adresse

DMZ:

OpenSuse Server
Reverse Proxy (172.16.21.100)

LAN:

RD Server Farm
RDS- Gateway (192.168.71.16)
Zertifikate ist am Server geladen


Meine Idee, wenn ein user über rdp mit rd-gateway zugreift, soll die Anfrage zuerst auf den Reverse-Proxy (DMZ) gehen und vom Reverse-Proxy auf den RD-Gateway (LAN) weitergeleitet werden.

Eigentlich geht es nur um Port 443 das der RD-Gateway benötigt.

Habe das ganze mit NGINX versucht funktioniert leider nicht jetzt meine Frage hat das schon mal jemand gemacht, wenn ja könnt er mir dabei helfen.

Content-Key: 612192

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

Printed on: April 25, 2024 at 10:04 o'clock

Member: Dani
Dani Oct 11, 2020 at 12:52:08 (UTC)
Goto Top
Moin,
Habe das ganze mit NGINX versucht funktioniert leider nicht
wie sieht die Konfiguration im Nginx des Versuchs aus?

wenn ja könnt er mir dabei helfen.
Gerne, hast du folgende Links selbst gefunden bzw. gelesen?
https://forum.nginx.org/read.php?2,286440,286441#msg-286441
https://forum.nginx.org/read.php?11,266872

Eigentlich geht es nur um Port 443 das der RD-Gateway benötigt.
Falls du RDGW in Verbindung mit HTML5 einsetzt, bitte dies beachten:
https://serverfault.com/questions/968276/win-server-2019-rds-html-5-web- ...

RD Server Farm
RDS- Gateway (192.168.71.16)
Wo hast du die RD Connection Broker installiert?


Gruß,
Dani
Member: gerrywin
gerrywin Oct 11, 2020 updated at 13:13:16 (UTC)
Goto Top
Zitat von @Dani:

Moin,
Habe das ganze mit NGINX versucht funktioniert leider nicht
wie sieht die Konfiguration im Nginx des Versuchs aus?

Konfig:

server {
listen 443;
server_name meine.domain.com;

access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;

location / {
proxy_pass https://192.168.71.16:443;
}
}


wenn ja könnt er mir dabei helfen.
Gerne, hast du folgende Links selbst gefunden bzw. gelesen?
https://forum.nginx.org/read.php?2,286440,286441#msg-286441
https://forum.nginx.org/read.php?11,266872

Hab ich gelesen

Eigentlich geht es nur um Port 443 das der RD-Gateway benötigt.
Falls du RDGW in Verbindung mit HTML5 einsetzt, bitte dies beachten:
https://serverfault.com/questions/968276/win-server-2019-rds-html-5-web- ...

Eigentlich wird nur das RemoteDesktop App verwenden keine Web-Anwendung

RD Server Farm
RDS- Gateway (192.168.71.16)
Wo hast du die RD Connection Broker installiert?

Broker liegt auf einen eigene Server auch im internen LAN
Member: BirdyB
BirdyB Oct 11, 2020 at 13:45:43 (UTC)
Goto Top
Zitat von @gerrywin:


server {
listen 443;
server_name meine.domain.com;

access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;

location / {
proxy_pass https://192.168.71.16:443;
}
}
Na wenn das die ganze nginx-Konfiguration ist, wundert es mich wenig, dass es nicht läuft...
Du müsstest mal die SSL-Einstellungen vornehmen. Zum Einen für den nginx nach aussen und zum Anderen für die SSL-Verbindung zum Backend.

https://docs.nginx.com/nginx/admin-guide/security-controls/securing-http ...
Member: Dani
Dani Oct 11, 2020 updated at 13:52:01 (UTC)
Goto Top
Moin,
dieser Aufruf wird vermutlich einen SSL Fehler hervorrufen. Oder ist die IP-Adresse als Alternative Subject in dem verwendeten SSL Zertifikat eingetragen? Ansonsten wirst du die Konfiguration um folgenden Parameter ergänzen müssen:
proxy_ssl_verify              off;

Unabhängig davon habe ich es noch nie mit der IP-Adresse versucht. Um u.a. der SSL Problematik aus dem Weg zu gehen.

Hab ich gelesen
In diesen Fall den Hinweis überlesen oder nicht verstanden. Zitat aus dem Link:
...RDP needs stream as its TCP and not HTTP(s)....

Passe die Konfiguration dahingehend an und versuche es nochmals.


Gruß,
Dani
Member: gerrywin
gerrywin Oct 11, 2020 at 14:02:47 (UTC)
Goto Top
Nur einen blöde Frage zwecks ssl, kann ich ein vorhanden zertifikat einbinden? das ich am Gateway schon verwenden?
Member: BirdyB
BirdyB Oct 11, 2020 at 16:21:04 (UTC)
Goto Top
Zitat von @gerrywin:

Nur einen blöde Frage zwecks ssl, kann ich ein vorhanden zertifikat einbinden? das ich am Gateway schon verwenden?
Jep, kannst du...
Member: gerrywin
gerrywin Oct 11, 2020 updated at 17:56:13 (UTC)
Goto Top
Neue Info:

Hab die Config komplett neu überarbeitet:

server {
  listen 443 ssl http2;
  
  server_name meine.domain.com;

  # SSL
  ssl_certificate /home/lhadmin/cert.cer;
  ssl_certificate_key /home/lhadmin/cert.pem;
  #ssl_trusted_certificate /path/to/ssl/chain.pem;

  # reverse proxy
  location / {
    ### IP address is permissible here
    proxy_pass      https://192.168.81.16:443/;    **** **@@+++(Wenn ich hier den name des gateway servers eingebe bekomme ich eine fehlermeldung)********@@**
    #include         conf.d/proxy.part;
  }

  # security headers
  add_header X-Frame-Options "SAMEORIGIN" always;  
  add_header X-XSS-Protection "1; mode=block;" always;  
  add_header X-Content-Type-Options "nosniff" always;  
  add_header Referrer-Policy "no-referrer-when-downgrade" always;  

  ### This is the header referenced above ###
  add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'; img-src * data: blob:; media-src * data: blob:" always;  

  add_header X-Robots-Tag none;
  add_header X-Download-Options noopen;
  add_header X-Permitted-Cross-Domain-Policies none;

  ### Be careful with this header; this will cause your site to break if it ever stops serving over TLS
  add_header Strict-Transport-Security "max-age=15552000; includeSubDomains";  

  # . files
  location ~ /\. {
    deny all;
  }

  # gzip
  gzip on;
  gzip_vary on;
  gzip_proxied any;
  gzip_comp_level 6;
  gzip_types text/plain text/css text/xml application/json application/javascript application/xml+rss application/atom+xml image/svg+xml;


}

Jetzt bekomme ich folgende Fehlermeldung:


2020/10/11 19:05:29 [error] 2640#2640: *1 upstream prematurely closed connection while reading response header from upstream, client: 91.115.199.170, server: meine.domain.com, request: "RDG_OUT_DATA /remoteDesktopGateway/ HTTP/1.1", upstream: "https://192.168.81.16:443/remoteDesktopGateway/", host: "meine.domain.com"
Member: BirdyB
BirdyB Oct 11, 2020 at 17:53:33 (UTC)
Goto Top
Moin,

1. Sei bitte so gut und setze den Inhalt deiner Konfigurationsdateien hier im Forum in die Code-Tags. Das macht es deutlich besser lesbar. (Kann man auch jetzt noch editieren)
2. Dir fehlt wahrscheinlich noch
proxy_ssl on;
in dener Konfiguration (+ ggf. zusätzliche Einstellungen)
Siehe hier: https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html?&_ga=2 ...
Member: gerrywin
gerrywin Oct 11, 2020 updated at 18:08:59 (UTC)
Goto Top
Zitat von @BirdyB:

Moin,

1. Sei bitte so gut und setze den Inhalt deiner Konfigurationsdateien hier im Forum in die Code-Tags. Das macht es deutlich besser lesbar. (Kann man auch jetzt noch editieren)
2. Dir fehlt wahrscheinlich noch

proxy_ssl on;

Habe ich hinzugefügt

   proxy_pass      https://192.168.81.16:443/;
   proxy_ssl          on

Dann kommt folgende Fehlermeldung:

2020/10/11 20:05:22 [emerg] 2918#2918: "proxy_ssl" directive is not allowed here in /etc/nginx/sites-enabled/proxy_config.conf:18



in dener Konfiguration (+ ggf. zusätzliche Einstellungen)
Siehe hier: https://nginx.org/en/docs/stream/ngx_stream_proxy_module.html?&_ga=2 ...
Member: gerrywin
gerrywin Oct 12, 2020 updated at 19:01:22 (UTC)
Goto Top
Hab das ganze Problem gelöst!

hab einfach folgendes in der nginx.conf hinzugefügt:


events {
  worker_connections  4096;  ## Default: 1024
}

stream {
  server {
    listen     443;
    proxy_pass 10.y.y.y:443;
  }
}
Member: Dani
Solution Dani Oct 12, 2020 at 20:18:24 (UTC)
Goto Top
Moin,
schön, dass du meine Links nochmals gelesen hast. face-wink


Gruß,
Dani
Member: gerrywin
gerrywin Oct 12, 2020 at 20:43:08 (UTC)
Goto Top
Danke!

Läuft zwar noch nicht 100% aber den rest bekomme ich auch noch hin! face-smile

Lg
Member: Dani
Dani Oct 18, 2020 at 15:00:22 (UTC)
Goto Top
Moin,
wenn du noch was brauchst, melde dich hier nochmals.


Gruß.
Dani