Kenntnisstand

April 2022


Nachfolgende Konfigurationsbeispiele und Erläuterungen sind als Hilfestellung für Einrichtung und Konfiguration bei der Veröffentlichung des UCServer und die Einrichtung der ProCall Mobile Apps für den Zugriff von extern (außerhalb des lokalen Netzwerks) gedacht.

Sie betreffen nicht die estos Software selbst und werden daher ohne Gewähr und ohne Support durch die estos GmbH zur Verfügung gestellt.

Welchen https Reverse-Proxy kann ich einsetzen?

Grundsätzlich können alle standardkonformen http Reverse-Proxy Server verwendet werden, die http GET und POST und Websocket Verbindungen (RFC 6455) ermöglichen.

Als Hilfestellung wird hier konkret auf die Einrichtung von zwei verschiedenen Proxy-Servern eingegangen. Je nach Fähigkeiten und Präferenzen können sowohl Microsoft Windows als auch Linux als Betriebssystem gewählt werden.

Microsoft Windows kompatibel

  • Microsoft Internet Information Services (IIS)

Linux kompatibel

  • nginx

Was muss ich im UCServer konfigurieren?

IP Ports festlegen

In der UCServer Verwaltung können Sie im Menü unter Extras >> Netzwerkschnittstellen die Netzwerkeinstellungen des UCServers einsehen und ändern. In der Standardeinstellung beantwortet der UCServer Anfragen über http auf Port 7224 und https auf Port 7225. Im Normalfall muss diese Einstellung nicht geändert werden.

SSL Zertifikat hinterlegen

Im Falle eines eines http Reverse-Proxy werden alle Anfragen aus dem Internet zuerst vom Proxy entgegengenommen und danach an den UC WebService weitergeleitet, damit ist der Proxy auch für die Verschlüsselung der Verbindung verantwortlich. Wir empfehlen dringend den Einsatz von https mit einem vertrauenswürdigen SSL Zertifikat. Falls notwendig beantragen Sie ein SSL Zertifikat für Ihren DNS-Namen bei einer öffentlichen Zertifizierungsstelle. Falls Sie mit einem selbst signierten Zertifikat („Self Signed Certificate“) arbeiten, ist die Verbindung verschlüsselt, aber nicht abhörsicher und die Nutzung von Browser Applikationen ist nicht möglich.

Je nach Anforderung können Sie die Anfragen innerhalb Ihres LAN über unverschlüsseltes http oder mit TLS Verschlüsslung weiterleiten. Sollten Sie auch innerhalb Ihres LAN eine verschlüsselte Verbindung bevorzugen, können Sie in der UCServer Verwaltung im Menü unter Extras >> Netzwerkschnittstellen >> WebService https ein Zertifikat im PFX Format hinterlegen.

Konfigurationsbeispiele http-Reverse Proxy 

Microsoft Internet Information Services (IIS)

Voraussetzungen

Installation und Vorbereitung Microsoft Internet Information Services (IIS)

  1. Installieren Sie den Microsoft Internet Information Services (IIS) auf dem gewünschten Server. Laden Sie dazu entweder das Installationspaket herunter oder fügen Sie die Rolle über die Serververwaltung hinzu.
  2. Fügen Sie das Feature WebSocket Protocol hinzu.
  3. Installieren Sie das URL Rewrite Modul.
  4. Installieren Sie das Application Request Routing (ARR) Paket.
  5. Konfiguration Microsoft Internet Information Services (IIS)
  6. Um die Proxy-Funktion herzustellen, müssen im nächsten Schritt alle beteiligten Komponenten eingerichtet und entsprechend Ihrer Infrastruktur konfiguriert werden.
SSL Zertifikat konfigurieren

Es wird empfohlen, ein vertrauenswürdiges SSL-Zertifikat zu verwenden. Richten Sie ein Server Zertifikat für den IIS ein, gehen Sie dabei wie von Microsoft vorgeschlagen vor: https://technet.microsoft.com/en-us/cc731977

Einrichten einer Reverse Proxy Webseite

  1. Fügen Sie eine neue Webseite hinzu.
  2. Füllen Sie die notwendigen Felder aus.
    1. Die Pfad-Angabe ist nicht sonderlich relevant, da keine Webseite ausgeliefert wird. Der IIS wird dennoch trotzdem eine web.config Datei anlegen. estos empfiehlt den Pfad: C:\inetpub\wwwroot\ReverseProxy
    2. Verwenden sie https als Binding Type
    3. Hinterlegen Sie den Host Name, der Ihrem DNS-Eintrag und Zertifikat entspricht.
    4. Wählen Sie das vorher hinterlegte Zertifikat aus.
  3. URL - Doppel-Klicken Sie auf die neu angelegte Webseite und öffnen Sie URL Rewrite
  4. Klicken Sie Add Rule(s)… und wählen Sie Reverse Proxy
  5. Wenn Sie folgende Warnung erhalten "Proxy Functionality must be enabled... ", bestätigen Sie mit OK.
  6. Rewrite Modul konfigurieren: Machen Sie im nächsten Dialog Angaben, wohin die Anfragen umgeleitet werden sollen
    1. Tragen Sie unter Inbound Rules den DNS-Namen oder die IP-Adresse ein, auf die die Anfragen umgeleitet werden sollen (z. B. UCServer, Firewall). Ergänzen Sie außerdem den gewünschten Port.

    2. Wenn Sie SSL Offloading aktivieren, werden die Anfragen unverschlüsselt weitergeleitet. Im Rahmen der weiteren Ausführungen wird davon ausgegangen, dass die Option aktiviert wurde.
    3. Fügen Sie oben zwei Regeln hinzu: die erste für Forward websocket traffic und die zweite für Forward normal traffic nach folgenden Regeln:

Pattern

Action Type

Action URL

^(.+)s://<DNS NAME>(:443)?/ws/client/(.*)Rewrite{R:1}

://<REWRITE TARGET>:<REWRITE TARGET PORT>/ws/client/{R:3}

^(.+)s://<DNS NAME>(:443)?/(.*)Rewrite{R:1}

://<REWRITE TARGET>:<REWRITE TARGET PORT>/{R:3}

nginx

Installation nginx

Installieren Sie nginx über die Paketverwaltung Ihrer Linux Distribution, z. B. auf Ubuntu:

$ sudo apt-get update

$ sudo apt-get install nginx

Konfiguration nginx

  1. Legen Sie unter /etc/nginx/sites-Available eine neue Konfigurationsdatei mit Namen reverseproxy an und kopieren Sie die unten beschriebene Beispielkonfiguration in die Datei.

  2. Es wird empfohlen, ein vertrauenswürdiges SSL-Zertifikat zu verwenden. Ergänzen Sie die SSL-Konfiguration gemäß http://nginx.org/en/docs/http/configuring_https_servers.html.
  3. Tauschen Sie in dem Beispiel <DNS NAME> mit Ihrem DNS Eintrag, <REWRITE TARGET> mit dem gewünschten Weiterleitungsziel und <PORT> mit dem konfigurierten Port aus.
  4. Aktivieren Sie die Konfiguration, indem Sie unter /etc/nginx/sites-enabled einen symbolischen Link auf die Konfigurationsdatei erzeugen:
    $ cd /etc/nginx/sites-enabled
    $ sudo ln -s /etc/nginx/sites-Available/reverseproxy reverseproxy
  5. Starten Sie den nginx Dienst neu.
    sudo systemctl restart nginx.service
    oder
    sudo service nginx restart


Beispielkonfiguration nginx

server {

    listen  80;

    server_name <DNS NAME>;

    rewrite ^ https://$server_name$request_uri? permanent;

}

server {

      listen 443 ssl;

      server_name <DNS NAME>;

ssl on;

      ssl_certificate /etc/ssl/certs/fullchain.pem;

      ssl_certificate_key /etc/ssl/certs/privkey.pem;

index index.html index.htm;

      proxy_read_timeout 3600s;

     

      # https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html

      add_header Strict-Transport-Security max-age=63072000;

      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

      ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

      ssl_prefer_server_ciphers on;

      ssl_session_cache shared:SSL:10m;

      # DHE generated with

      # cd /etc/ssl/certs && openssl dhparam -out dhparam.pem 4096

      ssl_dhparam /etc/ssl/certs/dhparam.pem;

 

      location / {

             proxy_set_header X-Real-IP $remote_addr;

             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

             proxy_set_header Host $http_host;

             proxy_set_header X-NginX-Proxy true;

             proxy_pass http://<REDIRECT TARGET>:<PORT>;

             proxy_redirect off;

      }

      location /ws/client/websocket {

             proxy_pass http://<REDIRECT TARGET>:<PORT>;

             proxy_http_version 1.1;

             proxy_set_header Upgrade $http_upgrade;

             proxy_set_header Connection "upgrade";       

      }

}