Loading AI tools
vermittelnder Server zwischen Client und Server Aus Wikipedia, der freien Enzyklopädie
In einem Computernetzwerk ist der Proxy ein Vermittler zwischen Client und Server. Anstatt sich direkt mit einem Server zu verbinden, wird die Anfrage vom Client über den Proxy geleitet, der sie filtern und verändern kann, bevor der sie an den tatsächlichen Server weiterleitet.[1]
Der Begriff kommt von englisch proxy representative „Stellvertreter“ bzw. lateinisch Procurator „Stellvertreter, Besorger, Verwalter“. Er wurde von William R. Cheswick geprägt.
Der Proxy soll die Sicherheit und Leistung (über Lastausgleich) verbessern oder dient als Translating Proxy. Er kann verteilte Systeme strukturieren und kapseln.[2]
Wird der Proxy auf einem Server (und nicht als lokaler Proxy) eingesetzt, maskiert er dabei meist den wahren Ursprung der Anfrage gegenüber dem Server, was eine gewisse Anonymität schafft.
Zwar kann ein Proxy als Bindeglied zwischen unterschiedlichen Netzwerken agieren, damit eine Verbindung zwischen Kommunikationspartnern zustande kommen kann, wenn deren Adressen inkompatibel sind und eine direkte Adressierung nicht möglich wäre.
Aber im Unterschied zu einer einfachen Adressumsetzung (NAT) kann ein Proxy-Server, auch Dedicated Proxy genannt, die Kommunikation 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 Client weitergereicht wird. Früher diente er als Cache, um wiederkehrenden Anfragen schneller zu beantworten. Auf einem einzigen Gerät kommen oft mehrere Dedicated Proxies parallel zum Einsatz, um unterschiedliche Protokolle bedienen zu können.
Ein Generischer Proxy, auch Circuit Level Proxy genannt, wird als protokollunabhängiger Filter als Teil einer Firewall angewandt. Er realisiert dort eine port- und adressbasierte Filterung, welche zudem eine mögliche Authentifizierung für den Verbindungsaufbau unterstützt. Daneben kann er für eine einfache Weiterleitung genutzt werden, indem er auf einem Port einer Netzwerkschnittstelle lauscht und die Daten auf eine andere Netzwerkschnittstelle weitergibt. Da er das Kommunikationsprotokoll nicht kennt, kann er die Kommunikation weder einsehen noch beeinflussen.
Technisch gesehen arbeitet ein typischer Proxy als ein 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 also ein Dienstprogramm, 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.
Ein konventioneller Proxy tritt beiden Seiten selbst als Kommunikationspartner gegenüber. Er wird von ihnen also bewusst adressiert. Hier bittet der Client den Proxy, stellvertretend für ihn die Kommunikation mit dem Zielsystem zu übernehmen. So wird z. B. der Webbrowser derart konfiguriert, dass er sämtliche Anfragen 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 automatisch über den Proxy dorthin 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. siehe auch: #Transparenter Proxy
Somit tritt ein Proxy generell für wenigstens eine der beiden Seiten selbst als vermeintlicher Kommunikationspartner in Erscheinung.
Ein Proxy als separate Netzwerkkomponente befindet sich physisch zwischen dem Quell- und Zielsystem. Innerhalb eines IP-Netzes nimmt er eine Übersetzung der IP-Adresse vor, sobald die Datenpakete durch das Netz hindurch auf ihrem Weg zum Ziel den Proxy passieren. Dadurch lässt sich die 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 wird durch eine Netzwerkadressübersetzung (NAT) ermöglicht, die es einem Proxy z. B. gestattet, ein 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 auf den Proxy gerichtet und treffen nicht direkt den Client.
Der lokale Proxy läuft dagegen direkt auf dem Quell- oder Zielsystem und befindet sich 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 IP-Netzwerkes. Allerdings kann ein lokaler Proxy auf dem Quellsystem dabei behilflich sein, einen Teil der Netzwerkzugriffe automatisiert über einen externen Proxy zu schicken.
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.
Auch bei einer lokal auf dem Quell- oder Zielsystem installierten Proxy-Software 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 (Loopback-Schnittstelle 127.0.0.1).
Als Beispiel könnte eine Anwendung ihre Internetanfragen nicht mehr direkt zum Zielsystem, sondern an ihr eigenes System zum Port der dort installierten Proxysoftware schicken. Dafür muss die Anwendung entsprechend konfiguriert werden. Die Proxy-Software 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 Proxy-Software angegeben, damit die Antwortpakete wieder den lokalen Proxy erreichen, der sie dann an die ursprüngliche Anwendung durchreichen kann. Auf diese Weise kann ein solcher Proxy ausgehende Anforderungen genauso analysieren (und ggf. filtern) wie die Antworten des Zielsystems. Polipo ist so eine freie Proxy-Software für das Hypertext Transfer Protocol (HTTP) mit Caching- und Filterfunktionalität, z. B. für den Laptop oder das Netbook. Ein anderes Beispiel für einen lokalen Proxy ist Proxomitron, der unter anderem verhindert, dass JavaScripte die Browseridentität und dessen Versionsnummer auflösen und das Betriebssystem auslesen. Auch der Spam-Filter SpamPal wird mit einem lokalen Proxy installiert, zumindest für gewisse Mailclients wie Vivian Mail.
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 adressierten Port des Zielsystems nicht der begehrte Netzwerkdienst, sondern eine Proxy-Software.
Die Proxy-Software 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 Proxy-Software, welche sie nun analysieren und beliebig verändern oder auch nur statistisch auswerten kann, bevor sie sie zum tatsächlichen Client weiterleitet.
Ein Dedicated Proxy ist ein Dienstprogramm, das im Datenverkehr zwischen dem anfragenden Client und dem Zielsystem vermittelt. Er ist auf das Kommunikationsprotokoll spezialisiert, das der Dienst verwendet, und kann daher die Kommunikation analysieren und bei Bedarf deren Inhalt manipulieren. Darüber hinaus kann er eigenständig Anfragen an den Kommunikationspartner senden und mitunter als Zwischenspeicher (Cache) fungieren.
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:
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 einem speziellen Protokoll eine Authentifizierung auf der OSI-Schicht 5 realisieren können. 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.
Eine Proxy-Firewall ist eine Firewall, die auf Dedicated Proxys oder 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. Sie kann darüber hinaus aber auch eine Konvertierung der Daten vornehmen, bestimmte Inhalte zwischenspeichern und sämtliche weiteren Funktionen ausüben, die einem Proxy eigen sind.
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 einem 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.
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 aber den Vorteil, dass eine Konfiguration der Proxyeinstellungen am einzelnen PC unterbleiben kann (siehe Abschnitt Sichtbarkeiten).
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 eines internen (privaten – in sich geschlossenen) Netzes den Zugriff auf ein externes Netz zu gewähren, funktioniert ein Reverse Proxy genau andersherum.
Es gibt mehrere Möglichkeiten, die Zugriffe des Browsers über einen Proxy zu leiten:
http://wpad.example.com/wpad.dat
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 einen Angriff 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.
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 cache-fähig zu gestalten.
Proxy-Protokolldateien können anwenderspezifisch ausgewertet werden. So können Statistiken über Benutzer (oder IP-Adressen), deren besuchte Webseiten und Verweildauer auf den Webseiten erstellt werden.
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 nur für nicht angemeldete Anwender vorgenommen, somit bleibt eine pseudonyme Nutzung möglich.
Zu bedenken bleibt, dass der Betreiber eines offenen Proxys nahezu die volle Kontrolle über die Sitzung hat, dabei Daten aufzeichnen und beliebige Webinhalte fälschen kann, ohne dass der Anwender davon etwas bemerkt.
Um die Gefahr eines Missbrauchs des Anonymisierungsdienstes durch den Betreiber des Proxys einzugrenzen, könnten Konzepte wie Friend-to-Friend (F2F) eine Lösung bieten: Bei einem F2F-Proxy werden die Daten durch einen „Freund“ geleitet; dies erhöht die Sicherheit, da keine unbekannten Proxy-Server genutzt werden. Das F2F-Netzwerk garantiert, dass ausschließlich private und geprüfte Verbindungen genutzt werden. Abhilfe können auch gängige Verschlüsselungs- und Zertifizierungsverfahren bieten, wie SSL/TLS mit dem Zielsystem hinter dem Proxy, beispielsweise durch die Nutzung einer HTTPS-Verbindung. Hierbei kann der Proxy keine Manipulation vornehmen, zumindest solange die Implementierung des genutzten Verfahrens nicht fehlerhaft ist und das Verfahren selbst nicht untergraben wird.