- Open Proxy
-
Ein Proxy (von engl. „proxy representative“ = Stellvertreter, bzw. lat. „proximus“ = der Nächste) arbeitet als Vermittler, der auf der einen Seite Anfragen entgegennimmt, um dann über seine eigene Adresse eine Verbindung zur anderen Seite herzustellen.
Wird der Proxy als Netzwerkkomponente eingesetzt, bleibt einerseits die wahre Adresse des einen Kommunikationspartners dem anderen Kommunikationspartner gegenüber komplett verborgen, was eine gewisse Anonymität schafft. Als (mögliches) Verbindungsglied zwischen unterschiedlichen Netzwerken realisiert er andererseits eine Verbindung zwischen den Kommunikationspartnern selbst dann, wenn deren Adressen zueinander inkompatibel sind und eine direkte Verbindung nicht möglich wäre.
Im Unterschied zu einer einfachen Adressumsetzung (NAT) ist ein Proxy-Server, auch Dedicated Proxy genannt, dabei in der Lage, die Kommunikation selbst zu führen und zu beeinflussen, statt die Pakete ungesehen durchzureichen. Auf ein bestimmtes Kommunikationsprotokoll spezialisiert, wie z. B. HTTP oder FTP, kann er die Daten zusammenhängend analysieren, Anfragen filtern und bei Bedarf beliebige Anpassungen vornehmen, aber auch entscheiden ob und in welcher Form die Antwort des Ziels an den tatsächlichen Client weitergereicht wird. Mitunter dient er dazu, bestimmte Antworten zwischenzuspeichern, damit sie bei wiederkehrenden Anfragen schneller abrufbar sind, ohne sie erneut vom Ziel anfordern zu müssen. Auf einem einzigen Gerät kommen oft mehrere Dedicated Proxys parallel zum Einsatz, um unterschiedliche Protokolle bedienen zu können.
Ein Generischer Proxy, auch Circuit Level Proxy genannt, findet als protokollunabhängiger Filter auf einer Firewall Anwendung. Er realisiert dort ein port- und adressbasiertes Filtermodul, welches zudem eine (mögliche) Authentifizierung für den Verbindungsaufbau unterstützt. Daneben kann er für eine einfache Weiterleitung genutzt werden, indem er auf einer Schnittstelle und einem Port lauscht und die Daten auf ein anderes Interface und Port weitergibt. Dabei ist er nicht in der Lage, die Kommunikation einzusehen, sie selbst zu führen und zu beeinflussen, da er das Kommunikationsprotokoll nicht kennt.
Ein Erklärungsversuch der Arbeitsweise anhand einer einfachen Analogie
Freunde kommen zu Besuch. Sie wollen etwas essen, und der Gastgeber verfasst zunächst eine Liste der Bestellungen. Dann ruft er den Pizzaservice an, gibt die Bestellung durch, nimmt die Pakete an der Tür entgegen und reicht sie danach an seine Freunde weiter. Der Gastgeber hat sich dabei analog einem Proxy verhalten: Er hat stellvertretend für seine Freunde den Kontakt mit dem Pizzaservice aufgenommen. Und er hat die Pakete stellvertretend an der Tür entgegengenommen, um die Pizzen später anhand der Liste an seine Freunde zu verteilen. Er ist in der Lage, die Ware zuvor auf eine korrekte Lieferung hin zu überprüfen und kann, wenn er will, die Pizzen zusätzlich garnieren (die Pakete verändern), ehe er sie weiterreicht.
Der Pizzabote mag sich zwar denken, dass er all die Pizzen nicht alleine verspeisen wird, jedoch hat er nie die Leute gesehen, für die die Pizzen tatsächlich bestimmt waren. Für ihn war einzig und alleine der Gastgeber der Ansprechpartner (ein Stellvertreter).
Der Unterschied zu einem NAT-Gerät
Oberflächlich betrachtet verhält sich ein NAT-Gerät ähnlich und funktioniert doch anders als ein typischer Proxy: Auf das vorherige Beispiel bezogen, lässt sich das NAT-Gerät besser mit einem ausgeklügelten Schienensystem hinter dem Türschlitz vergleichen, welches die vom Pizzaboten hindurch geschobenen Pizzen direkt zum wirklichen Empfänger gleiten lässt. Obgleich NAT ebenfalls die Identität der wirklichen Empfänger verbirgt, ist dort eine Manipulation und Analyse der Paketinhalte nicht möglich.
Technisch gesehen arbeitet ein typischer Proxy als in den Verkehr eingreifender Kommunikationspartner auf der OSI-Schicht 7, wobei die Verbindungen auf beiden Seiten terminiert werden (es handelt sich somit um zwei eigenständige Verbindungen), statt die Pakete wie ein NAT-Gerät einfach durchzureichen. Ein solcher Dedicated Proxy ist ein Dienstprogramm für Computernetze, das im Datenverkehr vermittelt und wird daher auch Proxy-Server genannt: Als aktiver Vermittler verhält er sich dem anfragenden Client gegenüber wie ein Server, der anderen Seite, dem Zielsystem, gegenüber wie ein Client.
Überschneidungen zu NAT gibt es allerdings bei dem generischen, auf den OSI-Schichten 3 und 4 operierenden Circuit Level Proxy, der unter Umständen auf die Technik der einfachen Adressumsetzung zurückgreift. Dessen ungeachtet nimmt NAT eine kaum beachtete Rolle unter den Proxys ein. Daher wird im Folgenden von der erstbeschriebenen Variante ausgegangen, wenn allgemein von einem (typischen) Proxy die Rede ist.
Überblick
Sichtbarkeiten
Ein konventioneller Proxy tritt beiden Seiten selbst als vermeintlicher Kommunikationspartner gegenüber. Er wird von ihnen also bewusst angesprochen (adressiert). Hier bittet der Client den Proxy, stellvertretend für ihn die Kommunikation mit dem Zielsystem zu übernehmen. So wird z. B. der Internetbrowser derart konfiguriert, dass er sämtliche Internetanfragen nicht direkt zur Zieladresse schickt, sondern als Anforderung formuliert zum Proxy sendet.
Daneben gibt es den transparenten Proxy als spezielle Netzwerkkomponente, der sich einer der beiden Seiten gegenüber transparent (nahezu unsichtbar) verhält. Diese Seite adressiert direkt das Ziel und nicht den Proxy. Durch eine entsprechend konfigurierte Infrastruktur des Netzes wird die betreffende Anfrage dort automatisch über den Proxy geleitet, ohne dass der Absender dies bemerkt oder gar beeinflussen kann. Für die andere Seite aber stellt der Proxy weiterhin den zu adressierenden Kommunikationspartner dar, der stellvertretend für den tatsächlichen Kommunikationspartner angesprochen wird.
Somit tritt ein Proxy generell für wenigstens eine der beiden Seiten selbst als vermeintlicher Kommunikationspartner in Erscheinung.
Lage
Ein Proxy als separate Netzwerkkomponente befindet sich physisch zwischen dem Quell- und Zielsystem. Innerhalb eines TCP/IP-Netzes nimmt er eine Konvertierung der IP-Adresse vor, sobald die Pakete durch das Netz hindurch auf ihren Weg zum Ziel den Proxy passieren. Dadurch lassen sich die wahre IP-Adresse des tatsächlichen Kommunikationspartners verbergen und einzelne Teilnehmer eines Netzes oder gar ganze Netzwerke selbst dann miteinander verbinden, wenn sie adressierungstechnisch inkompatibel zueinander sind. Letzteres gestattet es dem Proxy, ein komplettes privates (in sich geschlossenes) Netz über eine einzige offizielle IP-Adresse mit dem Internet zu verbinden. Da das Zielsystem nicht den Client, sondern nur den Proxy sieht, sind mögliche Angriffe von dort an den dafür vorgesehenen Proxy gerichtet und treffen nicht direkt den Client.
Der lokale Proxy läuft dagegen direkt auf dem Quell- oder Zielsystem und befindet sich logisch (jedoch nicht physisch) zwischen dem zu kontaktierenden Netzwerkdienst und dem anfragenden Client. Er wird meist als Filter oder Konverter eingesetzt. Da er vor Ort in Aktion tritt, also noch bevor die Pakete in das Netz geleitet werden (lokaler Proxy auf dem Quellsystem), oder nachdem die Pakete das Zielsystem erreicht haben (lokaler Proxy auf dem Zielsystem), ist dieser Proxy nicht in der Lage, die wahre IP-Adresse des Kommunikationssystems zu verbergen. Das unterscheidet ihn maßgeblich von anderen Proxys eines TCP/IP-Netzes. Allerdings kann ein lokaler Proxy auf dem Quellsystem durchaus dabei behilflich sein, die Netzwerkanfrage automatisiert über einen externen Proxy zu schicken, wobei der lokale Proxy diese Art der Umleitung dann verwaltet und somit seinen Teil zur Anonymisierung der eigenen IP-Adresse beiträgt.
Mögliche Funktionen eines Proxys
- Schutz der Clients
- Der Proxy kann eine Schnittstelle zwischen dem privaten Netz und dem Internet bilden. Der Zugriff von Clients auf Webserver ist dann nur über den Proxy möglich, der die Verbindung aktiv kontrollieren kann.
- Schutz der Server
- Ein Proxyserver kann allgemein dazu verwendet werden, den eigentlichen Server in ein geschütztes Netz zu stellen, wodurch er vom externen Netz aus nur durch den Proxy erreichbar wird. Auf diese Weise versucht man den Server vor Angriffen zu schützen. Die Proxy-Software ist weniger komplex und bietet daher weniger Angriffspunkte. Diese Lösung wird zum Beispiel bei Online-Shops angewendet: Der Webserver befindet sich samt Proxy im Internet und greift auf die Datenbank mit Kundendaten hinter einer Firewall zu.
- Bandbreitenkontrolle
- Der Proxy teilt verschiedenen Benutzern und Gruppen je nach Auslastung unterschiedliche Ressourcen zu. Der Proxy-Server Squid beherrscht dieses Verfahren, wobei er ebenso zum Schutz des Servers beitragen kann und Methoden unterstützt, die zu besserer Verfügbarkeit beitragen.
- Verfügbarkeit
- Über einen Proxyverbund lassen sich mit relativ geringem Aufwand Lastverteilung und Verfügbarkeit erreichen.
- Aufbereitung von Daten
- Proxy-Server können auch gewisse Applikationsfunktionen übernehmen, beispielsweise Daten in ein standardisiertes Format bringen.
- Inhaltliche Kontrolle häufig verwendeter Protokolle
- Ein Proxy kann Softwaremodule enthalten, die auf ein bestimmtes Kommunikationsprotokoll spezialisiert sind. Diese sind dann in der Lage, die Pakete des jeweiligen Protokolls zu analysieren und dabei als Verbindungs- und Befehlsfilter zu fungieren.
- Funktionserweiterung eines Netzwerkdienstes
- Ein Reverse-Proxy kann den üblichen Funktionsumfang eines Dienstes erweitern, indem er dank der Analyse des Protokolls z. B. spezielle Statistiken erstellt, die der Dienst normalerweise nicht anbietet. Da er in der Lage ist, Anfragen selbst zu beantworten, sind beliebige weitere funktionelle Erweiterungen denkbar.
- Protokollierung
- Viele Proxys erlauben es, Verbindungen, die über sie laufen, zu protokollieren. Das ermöglicht statistische Auswertungen und Erkennen ungewollter Verbindungen.
- Offener Proxy
- Als offenen Proxy oder Open Proxy bezeichnet man einen Proxy, der von jedem ohne Anmeldung (offen) benutzt werden kann. Einerseits entstehen sie unwissentlich durch falsche Konfiguration oder durch trojanisierte PCs (siehe auch: Botnet). Gleichzeitig werden aber auch viele offene Proxy-Server bewusst aufgesetzt, um eine weitgehende Anonymität zu ermöglichen; solche Proxys sind häufig mit zusätzlichen Funktionen zur Anonymisierung versehen.
- Proxy als Anonymisierungsdienst
- Der Anonymisierungs-Proxy (z. B. Anonymizer, Tor) leitet die Daten des Clients zum Server weiter, wodurch der Server die IP-Adresse des Clients nicht mehr direkt auslesen kann (siehe auch: Anonymität im Internet). Sie werden verwendet, um die Herkunft eines Clients zu verschleiern. So können Internetnutzer versuchen, sich vor staatlicher oder anderer Verfolgung bzw. Kontrolle zu schützen. In einem anderen Szenarium werden Proxys angeboten – teils frei verfügbar – bei denen man unter der URL des Proxys beliebige Webseiten anfordern kann. Diese Proxys können dazu verwendet werden, um beispielsweise Einschränkungen von Firmen- oder Schulnetzen zu umgehen. Sie sind anonym insofern, als der Zielserver nur die URL des Anbieters sieht.
- Translating Proxy
- Manche Proxys übersetzen ein Protokoll in ein anderes. Diese heißen dann Gateway, Transport, Agent. Ein Cern Proxy kommuniziert beispielsweise mit dem Client über HTTP, während er eine Verbindung zum Server über FTP oder Gopher aufbaut. Auch Jabber-Transports liegt dieses Konzept zu Grunde.
Der Proxy als Netzwerkkomponente
Um zu verstehen, wie es einem solchen Gerät gelingen kann, die Identität der wahren Kommunikationspartner zu verbergen, kann es hilfreich sein, wenn man sich den Proxy als automatisiertes Postfach vorstellt: Wird von der verdeckten (internen) Adresse aus ein Paket durch den Proxy hindurch in das externe Netz geschickt, verbindet sich der Proxy selbst mit dem Zielsystem und versieht so die ausgehenden Pakete automatisch mit seiner eigenen Absenderadresse.
Das Zielsystem schickt seine Antwortpakete nun zurück zum Postfach (Proxy), welcher die empfangenen Pakete ggf. analysiert und danach an den internen Client weiterreicht. Auf diese Weise leitet der Proxy alle aus dem externen Netz eingehenden Antwortpakete an den tatsächlichen Empfänger aus dem internen Netz weiter, ohne dass der Absender die tatsächliche (interne) Adresse des Empfängers kennt.
Der lokale Proxy
Auch bei einer lokal auf dem Quell- oder Zielsystem installierten Proxysoftware wird intern eine Adresskonvertierung vorgenommen. Das ist Teil ihrer internen Arbeitsweise und kann sich auf eine Umleitung des Ports beschränken, bezieht sich oft aber auf eine Umsetzung zu localhost (der so genannten Loopback-Schnittstelle 127.0.0.1).
Auf dem Quellsystem
Als Beispiel könnte eine Anwendung ihre Internetanfragen nicht mehr direkt zum Zielsystem, sondern an sein eigenes System zum Port der dort installierten Proxysoftware schicken. Dafür muss die Anwendung entsprechend konfiguriert werden. Die Proxysoftware ermittelt nun die Adresse des gewünschten Zielsystems und leitet die Anfrage stellvertretend für die Anwendung dorthin. Dabei wird als Absender die Adresse des Quellsystems nebst Rückgabeport der Proxysoftware angegeben, damit die Antwortpakete wieder den lokalen Proxy erreichen, die er dann an die ursprüngliche Anwendung durchreichen kann. Auf diese Weise ist ein solcher Proxy in der Lage, ausgehende Anforderungen genauso zu analysieren (und ggf. zu filtern), wie die Antworten des Zielsystems.
Ein Beispiel für einen lokalen Proxy ist Proxomitron, der unter anderem verhindert, dass Javascripte die Browseridentität und dessen Versionsnummer, Auflösung und das Betriebssystem auslesen. Auch der Spam-Filter Spampal wird mit einem lokalen Proxy installiert, zumindest für gewisse Mailclients wie Vivian Mail.
Auf dem Zielsystem
Hierbei schickt die Anwendung auf dem Quellsystem ihre Anfragen direkt zum Zielsystem. Ohne dass es dem Quellsystem bewusst sein muss, verbirgt sich jedoch hinter dem andressierten Port des Zielsystems nicht der begehrte Netzwerkdienst, sondern eine Proxysoftware.
Die Proxysoftware nimmt somit Anfragen aus dem Netz entgegen und stellt dann stellvertretend für das Quellsystem eine Verbindung zum tatsächlichen Netzwerkdienst seines eigenen Systems her. Dieser beantwortet die Anfrage und schickt die Antwort zurück zur Proxysoftware, welche sie nun analysieren und beliebig verändern oder auch nur statistisch auswerten kann, bevor er sie zum tatsächlichen Client weiterleitet.
Proxybezeichnungen
Dedicated Proxy (Proxy-Server)
Ein Dedicated Proxy ist ein Dienstprogramm, das im Datenverkehr zwischen dem anfragenden Client und dem Zielsystem vermittelt. Er ist auf das Kommunikationsprotokoll spezialisiert, welches der Dienst verwendet, und kann daher die Kommunikation analysieren und bei Bedarf deren Inhalt manipulieren. Darüber hinaus ist er in der Lage, eigenständig Anfragen an den Kommunikationspartner zu senden und mitunter als Zwischenspeicher zu fungieren (also von sich aus auf eine Anfrage zu antworten, ohne sie erneut vom tatsächlichen Zielsystem anfordern zu müssen).
Manchmal wird er lokal auf dem Quell- oder Zielsystem installiert, um dort die entsprechende Aufgabe vor Ort umzusetzen. Demgegenüber kann es sich hierbei auch um ein aktiv in die Kommunikation eingreifendes Filtermodul handeln, das auf einer Proxy-Firewall aufgesetzt wird. Unter anderem kommen Dedicated Proxys als (z. B. SMTP-) Virenscanner oder (z. B. FTP-) Verbindungs- und Befehlsfilter zum Einsatz.
Auf einem einzigen Gerät können mehrere Dedicated Proxys parallel laufen, um unterschiedliche Protokolle bedienen zu können. Da er in die Pakete hineinsehen muss, verrichtet ein Dedicated Proxy seine Arbeit auf der OSI-Schicht 7.
Häufig werden Dedicated Proxys für die folgenden Protokolle verwendet:
- HTTP
- Die meisten Provider bieten ihren Kunden die Verwendung eines solchen Proxys an. Er kann folgende Funktionen erfüllen:
- Zwischenspeicher (Cache)
- Der Proxy kann gestellte Anfragen bzw. deren Ergebnis speichern. Wird die gleiche Anfrage erneut gestellt, kann diese aus dem Speicher beantwortet werden, ohne zuerst den Webserver zu fragen. Der Proxy stellt sicher, dass die von ihm ausgelieferten Informationen nicht allzu veraltet sind. Eine vollständige Aktualität wird in der Regel nicht gewährleistet. Durch das Zwischenspeichern können Anfragen schneller beantwortet werden und es wird gleichzeitig die Netzlast verringert. Beispielsweise vermittelt ein derartiger Proxy einer Firma den gesamten Datenverkehr der Computer der Mitarbeiter mit dem Internet.
- Zensur/Zugriffssteuerung
- Mittels Proxy können bestimmte Webseiten für den Benutzer gesperrt oder Zugriffe darauf protokolliert werden. Es kann auch der Inhalt auf schädliche Programme durchsucht werden. Somit ist ein Proxy meist Teil eines Firewall-Konzepts. Vor allem Schulen oder öffentliche Einrichtungen, aber auch Firmen verhindern auf diese Weise den Zugriff aus ihrem Netz auf beliebige Webseiten, um beispielsweise das Herunterladen von Musikdateien wegen der damit verbundenen rechtlichen Probleme zu unterbinden.
- Ausfiltern von Werbung
- Werbung kann erhebliche Mengen an Datenverkehr erzeugen – viele Werbeflächen laden sich z. B. regelmäßig neu. Was für den Privatanwender an einer ADSL-Leitung unproblematisch ist, kann beispielsweise für ein Netz von mehreren Dutzend Anwendern an dieser Leitung zum Problem werden.
- SMTP
- Manche Firewalls bieten einen SMTP-Proxy an, der den Mailverkehr zwischen Internet und Mailserver überwacht und bestimmte gefährliche bzw. unerwünschte Befehle ausfiltert. Durch das Design des SMTP-Protokolls ist jeder SMTP-Server auch als SMTP-Proxy verwendbar.
- IMAP-Proxy
- Holt z. B. automatisch E-Mails vom zentralem IMAP-Server auf eine lokale Maschine, von der die Clients dann die E-Mail abholen.
- IRC-Proxy
- Ein solcher Proxy vermittelt IRC-Verbindungen und kann diese aufrechterhalten, auch wenn der Client abgeschaltet ist.
- NNTP-Proxy
- Der Proxy (z. B. Leafnode) kann für News verwendet werden und erlaubt es z. B. Filter für unerwünschte Gruppen zu definieren.
- Exchange-Frontend-Server
- Er stellt eine Proxy-Funktion zur Verfügung, der das RPC-Protokoll über HTTP(S) tunnelt.
- Citrix Secure Gateway
- Hier wird das ICA-Protokoll über HTTP(S) getunnelt.
Einige Hersteller bieten für ihre Stateful Inspection Firewall (SIF) ebenfalls Dedicated Proxys an. Definitionstechnisch ist das allerdings ein wenig problematisch: Da dieser Firewalltyp nach dem ursprünglichen Konzept von Checkpoint lediglich auf einen generischen Paketfilter basiert, und sich so ausschließlich auf Paketfilter-Regeln konzentriert, wird eine SIF ganz klar als Paketfilter-Firewall klassifiziert. Wird dort allerdings ein Dedicated Proxy aktiviert, so ist die SIF tatsächlich keine Paketfilter-Firewall mehr sondern gehört dann der Kategorie Proxy-Firewall an, die eine Stateful Packet Inspection durchführt. Diese exakte Unterscheidung wird in der Fachwelt jedoch selten vorgenommen, weshalb eine als SIF klassifizierte Firewall in der Praxis nur zum Teil der Definition einer Paketfilter-Firewall gerecht wird.
Circuit Level Proxy (Generischer Proxy)
Als Circuit Level Proxy (auch Generischer Proxy genannt) wird ein Paketfiltermodul bezeichnet, mit dem man auf einer Firewall beliebige IP-Adressen und Ports sperren bzw. freischalten kann, ohne jedoch die Möglichkeit zu haben, die Paketinhalte damit zu analysieren.
Ein solcher Proxy, der auf den OSI-Schichten 3 und 4 operiert, reicht die Pakete mitunter einfach durch, ohne die Verbindungen selbst zu terminieren. Der Circuit Level Proxy realisiert die Adressumsetzung dann mithilfe von NAT auf der OSI-Schicht 3. Während die Adressfilterung ebenfalls auf der dritten OSI-Schicht angesiedelt ist, realisiert er zudem eine Port-Filterung auf der vierten OSI-Schicht.
Es gibt auch Circuit Level Proxys, die dank eines speziellen Protokolls in der Lage sind, eine Authentifizierung auf der OSI-Schicht 5 zu realisieren. Der Client holt sich so eine Verbindungsgenehmigung z. B. per Eingabe einer Kennung nebst Passwort. Dieses spezielle Authentifizierungsprotokoll muss der Client allerdings kennen, weshalb ein derart befähigter Circuit Level Proxy weniger generisch ist (er funktioniert nur mit Anwendungen auf dem Client zusammen, die entsprechend erweitert wurden). Als Beispiel für ein solches Authentifizierungsprotokoll sei SOCKS genannt. Solch ein erweiterter Circuit Level Proxy greift nicht zwangsläufig auf NAT zurück. Einige von ihnen machen dies gar vom Protokoll abhängig. So wird z. B. die TCP-Verbindung terminiert, während eine UDP-Verbindung schlicht weitergereicht wird.
Ein generischer Proxy kann auch für eine einfache Weiterleitung genutzt werden. Der denkbar einfachste Proxy ist das Linux-Programm Redir, das auf einer Schnittstelle und einem Port lauscht und die Daten auf ein anderes Interface und Port weitergibt. Dies ist auch mit dem iptables-Kommando unter Linux möglich und wird beispielsweise verwendet um den Exit-Datenverkehr eines TOR-Servers über mehrere Proxys zu leiten, um so den TOR-Server zu schützen.
Proxy-Firewall
Hauptartikel: Firewall
Eine Proxy-Firewall ist eine Firewall, die auf Dedicated Proxys und Circuit Level Proxys als Filtermodule zurückgreift. Diese Filtermodule setzen Regeln um, indem sie entscheiden, welche Daten an den tatsächlichen Kommunikationspartner weitergeleitet werden, und welche nicht. Auf diese Weise versucht die Proxy-Firewall das eigene Netz (-Segment) vor unerlaubten Zugriffen zu schützen, kann darüber hinaus aber auch eine Konvertierung der Daten vornehmen, bestimmte Inhalte zwischenspeichern und sämtliche weitere Funktionen ausüben, die einem Proxy eigen sind.
Transparenter Proxy
Ein „Transparenter Proxy“ besteht grundsätzlich aus zwei Komponenten. Zunächst werden am Router die gewünschten Ports der Protokolle abgegriffen (beispielsweise über Iptables unter Einsatz eines Redirects) und dann an einen Proxy weitergeleitet. Für den Anwender ist die Verbindung über einen transparenten Proxy in der Benutzung nicht von einer direkten Verbindung über den Router zu unterscheiden. Das Vorhandensein eines transparenten Proxys bietet daher den Nutzen, dass eine Konfiguration der Proxyeinstellungen am einzelnen PC unterbleiben kann (siehe unter Sichtbarkeiten).
Reverse Proxy
Ein Proxy tritt im Falle des Reverse Proxys als vermeintliches Zielsystem in Erscheinung, wobei die Adressumsetzung dann in der entgegengesetzten Richtung vorgenommen wird und so dem Client die wahre Adresse des Zielsystems verborgen bleibt. Während ein typischer Proxy dafür verwendet werden kann, mehreren Clients seines internen (privaten – in sich geschlossenen) Netzes den Zugriff auf ein externes Netz zu gewähren, funktioniert ein Reverse Proxy genau anders herum.
Reverse Proxy als Weiterleitungsmodul einer Firewall
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, können sie das Netzwerkprotokoll verstehen 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
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
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üsselte 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 <acl für dahinterliegende Server>
mit der abschließenden Regelhttp_access deny all
.Die Internetzugriffe des Browsers über einen Proxy leiten
Es gibt mehrere Möglichkeiten, die Zugriffe des Browsers über einen Proxy zu leiten:
- Umgebungsvariable
- Einige Browser, zum Beispiel Lynx, werten eine Umgebungsvariable (in diesem Fall 'http_proxy=') aus und verwenden den dort eingetragenen Wert, wenn er nicht leer ist.
- Direkte Konfiguration
- Hier werden der Name (oder die IP-Adresse) des Proxy-Servers und der Port, auf welchen er hört, direkt im Browser eingetragen. Der Nachteil ist, dass man dies bei jedem Client manuell tun muss und Änderungen daran auf jeden Client einzeln nachzutragen sind.
- Transparenter Proxy
- Hier wird an den Clients nichts konfiguriert; sie richten ihre Anfragen an das Ziel auf die Ports 80 (HTTP), als ob sie eine direkte Verbindung zum Internet hätten. Die Infrastruktur des Netzes sorgt dafür, dass ihre Anfragen an den Proxy geleitet werden.
- Automatische Proxy-Konfiguration
- Hier wird im Browser die URL eines Java-Skripts eingetragen, das Adresse und Port des Proxy-Servers zurückgibt. Wenn diese Arbeit einmalig getan ist, können weitere Änderungen zentral im Skript erfolgen. Das Skript kann auch auf einen Reverse-Proxy zuweisen.
Mögliche Probleme bei der Verwendung eines Proxys
Gefahren
Ein schlecht konfigurierter Proxy kann eine Gefahr darstellen, da er Dritten erlaubt, über die Adresse des Proxys im Internet zu agieren. Als Beispiel könnte der Proxy für eine Attacke oder – ähnlich einem offenen Mail-Relay – zum Versenden von Spam missbraucht werden. Bei einem Missbrauch wird dann als Quelle der Proxy ermittelt, was unter Umständen unangenehme Folgen für den Betreiber haben kann.
Statistik für Zugriffe
Besonders kommerzielle Server, die Werbeflächen vermieten, begründen ihre Attraktivität für Werbung mit Zugriffszahlen, deren Statistik vom Webserver erzeugt wird. Proxy-Server und Filter beeinflussen diese Zahlen natürlich negativ, da aus dem Cache gelieferte Inhalte dort nicht erscheinen und ein Teil der Werbung erst gar nicht geladen wird. Manche Anbieter von Webseiten bemühen sich daher, ihre Inhalte schlecht oder gar nicht cachebar zu gestalten.
Bei Wikipedia selbst sieht man dies daran, dass als IP-Adresse desjenigen, der einen Artikel bearbeitet, die IP-Adresse des letzten Proxy-Servers gespeichert wird, und die IP-Adresse des betreffenden Anschlusses in Headern wie X-FORWARDED-FOR, X_BLUECOAT_PROXY_VIA, CACHE_CONTROL, CLIENT_IP oder anderen ignoriert wird.
Proxy als Anonymisierungsdienst
In verschiedenen Internetforen, und auch der Wikipedia, wird das Anlegen oder Verändern von Beiträgen über offene Proxy-Server oft durch Sperrung der entsprechenden IP-Adressen verhindert, um eine anonyme Teilnahme zu erschweren. Sinnvollerweise wird dies oft nur für nicht angemeldete Anwender vorgenommen.
Zu bedenken bleibt, dass der Betreiber eines offenen Proxys die volle Kontrolle über die Sitzung hat, dabei Daten aufzeichnen und beliebige Webinhalte fälschen kann, ohne dass der Anwender das bemerkt. Um die Gefahr eines Missbrauchs des Anonymisierungsdienstes durch den Betreiber des Proxys einzugrenzen, könnten Konzepte wie F2F eine Lösung bieten: Bei einem F2F-Proxy werden die Daten durch einen „Freund“ geleitet; dieses erhöht die Sicherheit, da keine unbekannten Proxy-Server genutzt werden. Das Friend-to-Friend-Netzwerk garantiert, dass ausschließlich private und geprüfte Verbindungen genutzt werden.
Siehe auch
- Local Area Network (LAN), Computercluster
- Performance Enhancement Proxy
- Router
- Kommunikationstechnologie, OSI-Modell, Network Address Translation (NAT)
- Man-In-The-Middle-Angriff
- Proxy Auto-Config Proxy-Konfiguration des Webbrowsers
Weblinks
Wikimedia Foundation.