Reverse Proxy mit Authentifizierung auf der Synology DS

Synology bietet uns bereits die Möglichkeit einen einfachen Reverse Proxy über die DSM (Systemsteuerung -> Anwendungsportal -> Reverse Proxy) bereitzustellen. Möchte man jedoch einen Reverse Proxy mit einer Authentifizierung einrichten, ist das über die Weboberfläche nicht mehr möglich. Hierzu muss man allerdings einige Layer weiter unten anpacken, welche dir hier Schritt für Schritt erklärt werden.

 

Was ist ein Reverse Proxy

Ein normaler Proxy-Server dürfte fast jedem ein Begriff sein: Mehrere Clients, beispielsweise im LAN, greifen über den Proxy-Server auf das Internet zu und dieser dient als „Mittelsmann“. Ein Reverse-Proxy-Server (RPS) stellt dabei das Gegenstück dar. Benutzer aus dem Internet greifen über den RPS auf eine Anwendung dahinter zu. Der RPS kanalisiert dabei stellvertretend die Zugriffe aus dem Internet und verteilt sie an die entsprechenden Backend-Server – Dabei bieten sich folgende Vorteile:

  • Zusätzlicher Sicherheitsfaktor: Durch Virenscans, Paketfilter und Anonymisierung der eigentlich Server-IP wird das Netzwerk zusätzlich verstärkt.
  • Load-Balancing: Der RPS kann ankommende Daten auf mehrere Server (mit der selben Funktion) verteilen und bietet so eine einfache Lastverteilung.
  • Caching: Sich immer wiederholende Anfragen können am Reverse-Proxy-Server gespeichert werden und direkt an den Nutzer weitergeleitet werden – So spart man sich die Abfrage mit dem Backend-Server

Ein vereinfachte Darstellungsmöglichkeit eines Netzwerkes mit einem Reverse-Proxy-Server (von kemptechnologies.com):

 

Konfigurieren eines Reverse-Proxy-Servers

Damit wir einen entsprechenden Service auf der Synology DS konfigurieren können, müssen wir uns per SSH (bsp. Putty) mit root Rechten anmelden. Dazu muss der SSH-Dienst in der Systemsteuerung aktiviert werden. Grundlegend verbietet uns Snyology einen direkten Zugriff per SSH mit dem User root. Daher loggen wir uns vorerst mit dem Benutzer admin und dem entsprechenden Kennwort ein. Um anschließend root Rechte zu erhalten, geben wir den Befehl „sudo -i“ und erneut das Adminkennwort ein.

Nginx und Apache speichern Ihre vHosts üblicherweise in Konfigurationsfiles ab, welche nach Ihrem Domainnamen benannt sind. Diesem Beispiel folgen wir und erstellen eine neue Datei im Nginx Verzeichnis:

vi /usr/local/etc/nginx/sites-enabled/sbd.domain.tld.conf

 

Erklärung zum Befehl:

  • vi – VI ist der Standardtexteditor eines jeden Unix-Betriebssystems.
  • /usr/local/etc/nginx/sites-enabled/ – Das ist das Verzeichnis der vHost Websites auf der Synology DS.
  • sbd.domain.tld.conf – Ist eure entsprechende Subdomain/Domain. Conf gibt dabei an, dass es sich hierbei um eine Konfigurationsdatei handelt.

 

Ist der Befehl ausgeführt, öffnet sich der Texteditor VI. In diesem File werden jetzt die einzelnen Parameter für den vHost definiert. Ein grundlegende Konfiguration, die auch mit wenigen Anpassungen direkt übernommen werden kann, sieht so aus:

server {
   listen 8000 ssl http2;
   error_page 497 https://$host:$server_port$request_uri;

#  error_log /var/log/error.log

      location / {
         proxy_set_header Authorization „“;
         auth_basic „Authentication“;
         auth_basic_user_file /etc/nginx/basic_auth;
         proxy_set_header Host $http_host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
         proxy_intercept_errors on;
         proxy_http_version 1.1;
         proxy_pass http://<IP>:<Port>;
      }
   }

Erklärung zur Config:

  • listen 8000 – Der vHost hört auf den Port 8000. Die Config greift also, wenn jemand die Subdomain (sbd.domain.tld:8000) aufruft. Möchte man den HTTP Traffic miteinbeziehen, wählt man hier einfach Port 80, bzw. 443 für https
  • error_page 497 – Ruft man die Domain nur mit http auf, wird man automatisch auf https weitergeleitet. Falls nicht erwünscht -> Mit „#“ auskommentieren
  • error_log – Damit können z.B. fehlerhafte Login-Versuche protokolliert werden.
  • Die Zugriffsregelung übernimmt dabei die location „Methode“.
  • auth_basic_user_file – Diese Datei regelt, welche Nutzer Zugriff auf die Seite bekommen.
  • proxy_pass – Hier muss noch der gewünschte Zielhost mit der privaten IP-Adresse angegeben werden.

 

Im nächsten Schritt muss noch definiert werden, welche Nutzer Zugriff auf den Reverse-Proxy bekommen sollen. Bitte überprüft vorher, ob diese Datei „/etc/nginx/basic_auth“ bereits existiert. Wenn nicht, benutzt folgenden Befehl, um die Datei selbst und einen Benutzer darin zu erstellen:

htpasswd -c /etc/nginx/basic_auth <Username>

Sollte die Datei bereits existieren, muss das „-c“ weggelassen werden, da ansonsten das bestehende File überschrieben wird. Damit ist die Konfiguration soweit abgeschlossen und nach einem Restart des Nginx-Services sollten die Änderungen auch wirksam sein

synoservicectl –restart nginx

Diese Anleitung kann natürlich auch auf einen normalen Reverse-Proxy-Server angewendet werden, indem man die Schritte mit der Authentifizierung weglässt und die Config des vHosts dementsprechend abändert. Einfacher lässt sich ein normaler RP-Server allerdings über die Systemsteuerung im DSM konfigurieren.

 

You may also like...

Abonnieren
Benachrichtige mich bei
guest
2 Comments
Älteste
Neuste Meist bewertet
Inline Feedbacks
View all comments
Roberto Wrembel
Roberto Wrembel
5 Jahre zuvor

Danke
Restart erfolgt mit: synoservicectl –restart nginx
Hinweis: htpasswd kommt mit dem Backend-End-Paket „Apache HTTP Server) in der Web Station

2
0
Hinterlass' doch deine Meinung zu diesem Artikelx