Reverse proxy
Reverse proxy - Proxy in einem Rechnernetz, der Ressourcen für einen externen Client von einem oder mehreren internen Servern bereitstellt
Beschreibung
Ein Reverse-Proxy ist ein Proxy in einem Rechnernetz, der Ressourcen für einen externen Client von einem oder mehreren internen Servern holt
- Die Umsetzung der Adresse ist atypisch und der Richtung des Aufrufes entgegengesetzt (deutsch „umgekehrter Proxy“)
- Die wahre Adresse des internen Zielsystems bleibt dem externen Client verborgen
- Das unterscheidet ihn vom typischen (Forward-)Proxy, der mehreren Clients eines internen (in sich abgeschlossenen) Netzes den Zugriff auf ein externes Netz gewährt
Weiterleitungsmodul einer Firewall
Die Reverse-Proxys einer Firewall bieten zunächst die gleiche Funktionalität wie Portweiterleitung und ermöglichen so einen von außen initiierten Verbindungsaufbau zu einem hinter der Weiterleitung liegenden Server des internen Netzes
- Sobald sie als Dedicated Proxy arbeiten, verstehen sie das Netzwerkprotokoll und sind dann zudem in der Lage, die Daten der Netzwerkpakete zu analysieren und zu bearbeiten
- So können sie z. B. einen Virenscan vornehmen oder Regeln anwenden, die sich auf die Paketinhalte beziehen
Demgegenüber gibt es auch Reverse-Proxys, die nicht Bestandteil der Firewallsoftware sind und dennoch den Zweck haben, den Zugriff aus dem externen Netz heraus auf einen internen Rechner zu ermöglichen, ohne jedoch die Firewall entsprechend manuell konfigurieren zu müssen
- Dazu baut der interne Rechner zunächst eine Verbindung zu einem bestimmten externen Rechner auf, wodurch der externe Rechner über die Firewall hinweg mit dem internen Rechner kommunizieren kann
- Läuft auf dem externen Rechner ein Reverse-Proxy, so können nun auch beliebige andere Rechner aus dem externen Netz auf den internen Rechner hinter der Firewall zugreifen, indem sie ihre Anfragen an den Reverse-Proxy des externen Rechners schicken (der Reverse-Proxy leitet die Anfragen an den internen Rechner weiter)
Performance-Optimierung
Eine gänzlich andere Aufgabe kann ein Reverse-Proxy erfüllen, der die Anfragen für einen Dienst entgegennimmt, um die Geschwindigkeit bzw. Zugriffsrate auf den Dienst zu verbessern oder funktionell zu erweitern
- Er kann lokal auf dem Zielsystem installiert sein, oder auf einer separaten Hardware laufen, und arbeitet beispielsweise als HTTP-Accelerator, auch Surrogate Proxy genannt
- Verbindungen aus dem Internet an einen Webserver werden durch den Proxy bearbeitet, der die Anfragen selbst beantwortet, sofern sie in dem eigenen Cache stehen, oder andernfalls an die nachgeordneten Dienste oder an einen entfernten Server weiterleitet
Weitere Einsatzszenarien
- Gründe für den Einsatz eines Reverse-Proxys
Netzwerksicherheit | Der Reverse-Proxy stellt ein weiteres Glied in der Sicherheitskette dar und trägt so zur Sicherheit der Webserver bei, denn es ist möglich, auf einem Reverse-Proxy Virenscanner, Firewalls oder Paketfilter zu installieren |
Single Sign-on (SSO) | Der Reverse-Proxy kann die Benutzer-Authentifizierung für mehrere Webserver übernehmen
|
Verschlüsselung/SSL-Beschleunigung | Wenn sichere Webseiten erzeugt werden, wird die SSL-Verschlüsselung gelegentlich nicht vom Webserver selbst erledigt, sondern durch einen Reverse-Proxy, der mit einer entsprechenden Beschleunigungshardware ausgestattet ist
|
Lastverteilung | Der Reverse-Proxy kann die Last auf mehrere Server verteilen, wobei jeder Server sein Anwendungsfeld bedient
|
Cachen von Inhalten | Ein Reverse-Proxy kann die Webserver entlasten, indem er statische Inhalte wie etwa Bilder sowie die Ergebnisse häufig aufgerufener dynamisch erstellter Seiten (aus Skriptsprachen) zwischenspeichert
|
Bei Ausfall des dahinterliegenden Webservers (oder im Fehlerfall: beispielsweise HTTP 500) kann zudem eine „benutzerfreundliche“ Meldung angezeigt werden
Weiterhin kann ein Reverse-Proxy auch als offener Proxy genutzt werden, um Anfragen unter „seinem Namen“ an fremde Server zu schicken, ohne dass dies vom Betreiber so gedacht ist
- Daher kann es empfehlenswert sein, ihn derart zu konfigurieren, dass er nur auf Anfragen an bestimmte Server antwortet
- Als Beispiel geschieht dies bei Squid durch eine Regel
http_access allow
mit der abschließenden Regelhttp_access deny all