Reverse Proxy

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Ein Proxy-Server, der das Internet zu einem internen Netzwerk verbindet.
Ein Reverse Proxy, der Anfragen vom Internet übernimmt und sie zu anderen Server im internen Netzwerk weiterleitet. Die Anfragenden verbinden sich mit dem Proxy. Das interne Netzwerk muss nicht bekannt sein.

Der Reverse Proxy ist ein Proxy, der Ressourcen für einen Client von einem oder mehreren Servern holt. Die Adressumsetzung wird in der entgegengesetzten Richtung vorgenommen, wodurch die wahre Adresse des Zielsystems dem Client verborgen bleibt. Während ein typischer Proxy dafür verwendet werden kann, mehreren Clients eines internen (privaten – in sich geschlossenen) Netzes den Zugriff auf ein externes Netz zu gewähren, funktioniert ein Reverse Proxy genau andersherum.

Reverse Proxy als Weiterleitungsmodul einer Firewall[Bearbeiten]

Die Reverse Proxys einer Firewall bieten zunächst die gleiche Funktionalität wie Port Forwarding 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 realisieren, die sich auf die Paketinhalte beziehen.

Demgegenüber gibt es auch Reverse Proxys, die nicht Bestandteil der Firewallsoftware sind und dennoch das Ziel verfolgen, aus dem externen Netz heraus auf einen internen Rechner zugreifen zu können, ohne jedoch die Firewall manuell entsprechend 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).

Reverse Proxy für eine Performance-Optimierung[Bearbeiten]

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 eines Reverse Proxys[Bearbeiten]

Es gibt mehrere Gründe für den Einsatz eines Reverse Proxys:

Netzsicherheit
Der Reverse Proxy stellt ein weiteres Glied in der Sicherheitskette dar und trägt so zur Sicherheit der Webserver bei.
Single Sign-on
Der Reverse Proxy kann die Benutzer-Authentifizierung für mehrere Webserver übernehmen. Dadurch braucht sich der Benutzer nur einmal anzumelden, um die Dienste mehrerer Server zu nutzen.
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. Somit ist es zudem möglich, ein (SSL-)Zertifikat auf dem Proxy einzusetzen (anstelle auf einem dahinterliegenden Webserver). Bei Squid (ab Version 2.6) geht dies auch per Software. Durch das Verlagern der Verschlüsselung auf den Proxy erzielt man folgende Vorteile:
  • Der Webserver wird durch die Auslagerung der Verschlüsselung (u. U. erheblich) entlastet.
  • Der Proxy kann die Webinhalte cachen, was sonst nicht möglich wäre und eine weitere Entlastung des Webservers bedeutet.
  • ACLs können auch auf verschlüsselten Seiten angewendet werden, da der Proxy die Header im Klartext sieht.
Lastverteilung
Der Reverse Proxy kann die Last auf mehrere Server verteilen, wobei jeder Server sein Anwendungsfeld bedient. Bei Webservern muss der Reverse Proxy gegebenenfalls die URLs in jeder Webseite umschreiben (Übersetzung der extern bekannten URLs auf die internen Standorte)
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. Auf diese Weise kann eine deutlich höhere Anzahl an Webseitenanfragen bewältigt werden.

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 Regel http_access deny all.