Proxy

aus HaBo WiKi, der freien Wissensdatenbank von http://www.hackerboard.de
Wechseln zu: Navigation, Suche

Ein Proxy (dt.: „Stellvertreter“) arbeitet vorwiegend als aktiv in die Kommunikation eingreifende Vermittlungsstelle, welche Anfragen der einen Seite entgegennimmt, um dann eine eigene Verbindung zur anderen Seite aufzubauen. Er übernimmt somit stellvertretend für den Anfragenden (Client) die Kommunikation mit dem Ziel, wodurch eine Adressumsetzung realisiert wird. Die wahre Absenderadresse des Clients bleibt so dem Ziel gegenüber verborgen. Als Kommunikationspartner operieren diese Proxies auf der OSI-Schicht 7 und können den Inhalt der Pakete zusammenhängend analysieren, dabei 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 dienen sie auch dazu, bestimmte Antworten zwischenzuspeichern, damit sie bei wiederkehrenden Anfragen schneller abrufbar sind, ohne sie erneut vom Ziel anfordern zu müssen.

Ein solcher Proxy terminiert die Verbindungen auf beiden Seiten (es handelt sich somit um zwei eigenständige Verbindungen), statt die Pakete wie ein NAT-Gerät einfach weiterzuleiten. Dagegen gibt es bei generischen Proxies durchaus Überschneidungen zu NAT: Als Paketfiltermodul auf einer Firewall eingesetzt, realisiert der circuit level Proxy die Adressumsetzung unter Umständen mithilfe einer einfachen Weiterleitung, ohne die Verbindung zu terminieren. Von einem solchen generischen (Layer 3 + 4) Proxy einmal abgesehen, nimmt NAT jedoch eine zu vernachlässigende und daher kaum beachtete Rolle unter den Proxies ein. Daher wird im Folgenden von der erstbeschriebenen Variante ausgegangen, wenn allgemein von einem (typischen) Proxy die Rede ist.

Der Artikel versucht die Arbeitsweise der unterschiedlichen Proxies aufzuzeigen, die als lokale Software oder als Netzwerkkomponente installiert werden können und dabei für beide Seiten sichtbar oder auch für eine der beiden Kommunikationspartner transparent (nahezu unsichtbar) in Erscheinung treten.

Inhaltsverzeichnis


leicht erklärt

Ein Erklärungsversuch der Arbeitsweise anhand einer einfachen Analogie

Freunde kommen zu Besuch. Sie wollen etwas essen und jemand 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. Auf das Gleichnis bezogen, hat er sich wie ein 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 er der Ansprechpartner (der Proxy - zu deutsch: 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 Schlauchsystem 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.

Ü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.

Ein Proxy tritt also immer für wenigstens einer der beiden Seiten selbst als vermeintlicher Kommunikationspartner in Erscheinung.

Lage

Ein Proxy als separate Netzwerkkomponente befindet sich physisch zwischen dem Quell- und Zielsystem. Während die Pakete durch das Netz hindurch auf ihren Weg zum Ziel den Proxy passieren, nimmt er eine Konvertierung der IP-Adresse vor. 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 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 prädestinierten 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. Als Teil seiner internen Arbeitsweise nimmt auch er eine Adressumsetzung vor. Das kann sich auf eine Umleitung des Ports beschränken, bezieht sich aber meist auf die komplette IP-Adresse (in der Regel wird eine Umsetzung auf localhost, der so genannte Loopback-Schnittstelle 127.0.0.1, vorgenommen). Da dies geschieht bevor die Netzwerkpakete in das Netz geleitet werden oder nachdem sie das Zielsystem erreicht haben, lässt sich dadurch nicht die IP-Adresse des Computers verbergen. Das unterscheidet ihn maßgeblich von anderen Proxies.

technische Details

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:

[Client]--internes Netz (Absenderadresse: Client)-->[Proxy]--externes Netz (Absenderadresse: Proxy)-->[Server]

Das Zielsystem schickt seine Antwortpakete nun zurück zum Postfach (Proxy), welcher die empfangenen Pakete ggf. analysiert und danach an den internen Client weiterreicht:

[Client]<--internes Netz (Zieladresse: Client)--[Proxy]<--externes Netz (Zieladresse: Proxy)--[Server]

Auf diese Weise leitet der Proxy alle aus dem externen Netz eingehenden Pakete 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. Da dies jedoch vor Ort geschieht, 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), eignet sich diese Art der Adressumsetzung nicht dafür, die wahre IP-Adresse der Kommunikationssysteme zu verbergen.

... 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.

[Client: Anwendung=Anfrage an den lokalen Proxy stellen (localhost:PortX) -> Proxy richtet die Anfrage an Server:PortY]--Netz-->[Server:PortY=Anfrage wird bearbeitet, Absender ist Client:RückgabeportDerProxysoftware]
[Server: Antwort an Client:RückgabeportDerProxysoftware]--Netz-->[Client:RückgabeportDerProxysoftware=Proxysoftware erhält die Antwort -> Weiterleiten an localhost:RückgabeportDerAnwendung]

... auf dem Zielsystem

Hierbei schickt die Anwendung auf dem Quellsystem ihre Anfragen direkt zum Zielsystem. Ohne dass es dem Quellsystem bewusst ist, 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 kann, bevor er sie zum tatsächlichen Client weiterleitet.

[Client: Anwendung=Anfrage an Server:PortX]--Netz-->[Server:PortX=Proxysoftware welche die Anfrage an den PortY 
des tatsächlichen Dienstes weiterleitet -> Dienst: Anfrage wird bearbeitet, Absender ist   
localhost:RückgabeportDesProxys]

[Server: Proxysoftware hat die Antwort des Dienstes erhalten -> Weiterleiten an Client:RückgabeportDerAnwendung]--
Netz-->[Client:RückgabeportDerAnwendung=Antwort erhalten]

Proxybezeichnungen

dedicated Proxy

Ein "dedicated Proxy" ist eine Filtersoftware, die in der Lage ist, ein bestimmtes Kommunikationsprotokoll zu analysieren und bei Bedarf deren Inhalt zu manipulieren. Da er in die Pakete hineinsehen muss, verrichtet ein dedicated Proxy seine Arbeit auf der OSI-Schicht 7.

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 Filtermodul handeln, das auf einer Proxyfirewall aufgesetzt wird.

Für jedes Protokoll gibt es einen eigenen dedicated Proxy, welche man technisch gesehen auch als spezialisierten Content-Filter bezeichnen kann. Sie kommen z.B. als SMTP-Virenscanner, http-Filter, ftp-Verbindungs- und Befehlsfilter auf einer Proxyfirewall zum Einsatz. Auf einer einzigen Firewall können mehrere dedicated Proxies gleichzeitig laufen.

Einige Hersteller bieten für ihre „Stateful Inspection Firewall“, kurz SIF, ebenfalls dedicated Proxies 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 und gehört dann eher in die Rubrik „Proxy-Firewall mit zusätzlicher SPI-Analyse (Stateful Packet Inspection)“. Diese exakte Unterscheidung wird in der Fachwelt jedoch selten vorgenommen, wodurch eine SIF in der Praxis nur zum Teil der Definition einer „Paketfilter-Firewall“ gerecht wird.

reverse Proxy

Die Reverse Proxies einer Firewall bieten die gleiche Funktionalität wie Port Forwarding. Da sie das Netzwerkprotokoll verstehen, sind sie 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 Proxies, die nicht Bestandteil der Firewallsoftware sind. Sie werden auf dem Rechner installiert, mit dem Ziel, aus dem externen Netz heraus auf einen internen Rechner zugreifen zu können, ohne die Firewall manuell entsprechend konfigurieren zu müssen. Dazu baut der interne Rechner zunächst eine Verbindung zu dem externen Rechner auf, wodurch der externe Rechner über die Firewall hinweg mit dem internen Rechner kommunizieren kann (PAT). 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).

circuit level Proxy / generischer Proxy

Als generischer Proxy 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, wird auch circuit level Proxy genannt. Er 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 die Port-Filterung auf der vierten OSI-Schicht.

Es gibt auch circuit level Proxies, die dank eines speziellen Protokolls zudem 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). Solch ein erweiterter cicuit 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.

NAT als ursprünglicher „Proxy-Modus“ für Firewalls

Nach Aufkommen der ersten Firewalls bezeichnete man den Modus, in dem sich eine Firewall transparent (nahezu unsichtbar) zwischen beide Netzwerke legt, als „Router-Modus“. Stellte sich die Firewall hingegen für beide Kommunikationspartner sichtbar zwischen das Quell- und Zielsystem, so nannte man dies den „Proxy-Modus“, wobei man sich damit zunächst auf „circuit level Proxies“ bezog (nicht zu verwechseln mit dem wesentlich jüngeren Begriff ‚Proxyfirewall’, der sich auf eine Application Level Firewall bezieht). Da der circuit level Proxy NAT realisiert, würden demnach sämtliche NAT-Geräte zu den Proxies gehören, wobei es NAT-Router nicht geben dürfte (dies wäre ein Widerspruch in sich).

Allerdings hat sich diese Art der Unterteilung allgemein nicht durchgesetzt. Heute gehört NAT zu den gängigen Eigenschaften eines Routers (es gibt kaum noch Router auf dem Markt, die nicht auch NAT beherrschen). Dagegen zeichnet sich ein Proxy eher durch die im ersten Absatz der Einleitung beschriebene Arbeitsweise aus.

siehe auch

Weblinks (externe Links)

Computer Forum
Computer Forum
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Werkzeuge