Port Forwarding
- Port Forwarding
- In Bezug auf eine externe Firewall versteht man unter Port Forwarding das statische Durchschleifen eines Ports der Firewall zu einem Rechner aus dem internen Netz. Auf diese Weise kann ein interner Rechner trotz externer Firewall Internetdienste bereitstellen. Ein Rechner aus dem Internet erreicht den Dienst über die Adresse der Firewall, welche alle an den entsprechenden Port gerichteten Anfragen nun an den internen Rechner weiterreicht. Der interne Rechner kann so die Anfragen der Internetrechner genauso verarbeiten und beantworten, als wenn er direkt angesprochen wurde.
- 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, etc.
- Ergänzend sei erwähnt, dass es auch Reverse Proxies gibt, 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).
Port Forwarding sollte mit bedacht eingesetzt werden, da hierdurch bildlich gesehen eine Tür in der Firewall geöffnet wird, welche direkt auf den Dienst des internen Rechners zeigt. Ein Angriff auf diesen Port geht zwar noch immer an die Adresse der Firewall, jedoch werden die Netzwerkpakete nun geradewegs an den dazugehörigen Rechner weitergereicht, was einem direkten Zugriff auf den internen Rechner gleichkommt. Damit ist dieser Rechner für DoS-Attacken prädestiniert. Zudem lässt sich dadurch die Übernahme des Rechners durchführen, wenn dies über eine mögliche Schwachstelle im Dienst realisierbar ist. Steht der Rechner im internen Netz, so geht der Firewallschutz dann auch für alle anderen Rechner verloren, da der Angreifer über den Rechner hinweg ungehindert auf das interne Netz zugreifen kann. Aus diesem Grund gehört ein solcher Rechner in eine echte DMZ.
Die zuvor getätigte Bezeichnung „echte DMZ“ suggeriert folgerichtig, dass es auch eine unechte DMZ gibt, in die man seinen Rechner möglichst nicht stellen sollte. Sie wird in vielen billigen Geräten (meist DSL-Router für den Heimbereich) angeboten. Um Kosten zu sparen, nehmen die Hersteller hier ein vollkommen anderes Feature namens „exposed Host“ und nennen es aus marketingtechnischen Gründen „DMZ“. Mehr darüber kann im DMZ-Beitrag nachgelesen werden. Dort wird auch erklärt, wie man ermitteln kann, ob die eigene Firewall eine echte DMZ unterstützt.
Die Kommunikation ohne Port Forwarding
Für jede Verbindung, die ein interner Rechner zu einem Server aus dem Internet aufnimmt, wird innerhalb der Firewall ein eigener Rückgabeport verwaltet, der sich in der Regel von dem originalen Rückgabeport des internen Rechners unterscheidet. Der kontaktierte Internetserver erhält also die Mitteilung, dass die Antwortpakete an den zugewiesenen Port zur IP-Adresse der Firewall zu schicken sind. Der Internetserver erfährt so weder die IP-Adresse des internen Rechners, noch den tatsächlichen Rückgabeport. Zur Sicherheit akzeptiert die Firewall an dem zugewiesenen Port auch nur Pakete, die von der IP-Adresse des Internetservers stammen. Alle gültigen Pakete, die an diesen Port eintreffen, leitet die externe Firewall nun an die IP-Adresse und den ursprünglichen Rückgabeport des internen Rechners zurück, welcher die Anfrage gestellt hat. Auf diese Weise gelangen die ausgehenden Pakete zum Internetserver und die eingehenden Pakete wieder zurück zur anfragenden Applikation des internen Rechners.
ausgehende Verbindung: [interner Rechner (IP1) / Applikation1 = Port 123] -- Anforderung an Internetserver (IP3:Port80) / Absender IP1:Port123 --> [Firewall (IP2) / diese Verbindung = Port 456] – Anforderung an Internetserver (IP3:Port80) / Absender IP2:Port456 -->[Internetserver (IP3) / Port 80=http-Dienst]
Antwortpakete: [Internetserver (IP3) / http-Dienst = Port 80 (der Einfachheit halber)] -- Antwort an Firewall (IP2:Port456) / Absender IP3:Port80 -->[Firewall (IP2) / Port 456 = Rückkonvertierung zur IP1:Port 123] -- Antwort an internen Rechner (IP1:Port123) / Absender IP3:Port80 -->[interner Rechner (IP1), Port 123=Applikation1]
Stellt ein Rechner aus dem Internet jedoch eine Anfrage an einen Port der Firewall, welcher ihm nicht zugewiesen wurde, so wird die Anfrage abgelehnt oder einfach ignoriert. Dadurch werden die Rechner im internen Netz vor unerlaubten Zugriffen aus dem externen Netz geschützt.
Die Kommunikation mit Port Forwarding
Möchte ein interner Rechner einen Dienst bereitstellen, auf den beliebige Rechner aus dem externen Netz (dem Internet) zugreifen sollen, so muss man der externen Firewall einen Port bekannt geben, dessen Anfragen nicht blockiert werden dürfen. Man legt auf der Firewall also eine Port-Regel an, die besagt, dass alle Anfragen auf diesen Port von außen automatisch an den internen Rechner weitergereicht werden sollen. Der interne Rechner kann die Anfragen nun bearbeiten.
Anforderung aus dem Internet: [externer (Internet-) Rechner (IP3) / Applikaiton5 = Port 789] -- Anforderung an IP2:Port80 / Absender IP3:Port789 -- externes Netz (Internet) --> [Firewall (IP2) / Port 80 = Weiterleitung an internen Rechner IP1:Port80] -- internes Netz -- Anforderung an internen Rechner (IP1:Port80) / Absender IP3:Port789 -->[interner Rechner (IP1) / Port 80=http-Dienst, der die Anfrage nun entgegennimmt]
Die weitere Kommunikation dieser Sitzung: wie oben beschrieben (Die Kommunikation ohne Port Forwarding / ausgehende Verbindung & Antwortpakete)
|