Firewall/Technologien: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „== Firewall-Technologien == Eine Firewall kann mit verschiedenen Methoden erwünschten von unerwünschtem Netzwerkverkehr unterscheiden, von denen aber nicht jedes Produkt alle unterstützt. === Paketfilter-Firewall === Zur Aufgabe einer Paketfilter-Firewall gehört es, Netzwerkpakete anhand ihrer Netzwerkadresse zu sperren oder durchzulassen. * Dafür wertet sie die [http://de.wikipedia.org/wiki/Header Header]-Informationen der Netzwerkpakete aus. D…“ |
Keine Bearbeitungszusammenfassung |
||
Zeile 398: | Zeile 398: | ||
* Die Regeln werden mit den Multicast-Adressen (224.0.0.0–239.255.255.255) eingetragen. | * Die Regeln werden mit den Multicast-Adressen (224.0.0.0–239.255.255.255) eingetragen. | ||
* Weitere Aspekte sind in [http://tools.ietf.org/html/rfc2588 RFC 2588] beschrieben. | * Weitere Aspekte sind in [http://tools.ietf.org/html/rfc2588 RFC 2588] beschrieben. | ||
== Ergänzende Technologien == | |||
=== Intrusion Detection und - Prevention === | |||
„Intrusion Detection Systeme“ (IDS) und „Intrusion Prevention Systeme“ (IPS) erkennen einen Einbruchsversuch anhand von Kommunikationsmustern. | |||
* Der Unterschied ist, dass ein IDS den Angriff nur erkennt (Detection (engl.) = Erkennung) und ein IPS (Prevention (engl.) = Verhinderung) den Angriff zu blockieren versucht. | |||
Diese Systeme gehören zwar nicht zum Firewall-Modul, können dieses aber ergänzen und werden daher vermehrt in eine Firewall-Lösung als zusätzliche Funktion aufgenommen. | |||
* Einige Firewall-Systeme bieten Erweiterungsmöglichkeiten, um ein IDS nachzurüsten, unter anderem über Slots für Erweiterungsmodule. | |||
* Diese Module sind mitunter eigenständige Recheneinheiten mit CPU und Arbeitsspeicher, da diese Funktion je nach Aufgabenfeld eine rechenintensive Leistung erfordern kann. | |||
Das Themenfeld, Angriffe zu erkennen und darauf automatisiert zu reagieren, ist sehr komplex. | |||
* Ein unbedachtes Konzept, eine schlechte Implementierung oder eine ungünstige Konfiguration kann unter Umständen erst die Möglichkeit für einen [http://de.wikipedia.org/wiki/Denial_of_Service Denial-of-Service]-Angriff schaffen. | |||
* So legen manche Systeme eine temporäre Firewall-Regel an, die alle weiteren Verbindungsversuche von der vermeintlichen angreifenden IP-Adresse blockieren. | |||
Schickt aber nun ein Angreifer Pakete mit einer gefälschten Absender-Adresse an das System (siehe [http://de.wikipedia.org/wiki/IP-Spoofing IP-Spoofing]), so kann er damit erreichen, dass der Zugriff auf die gefälschte Adresse nicht mehr möglich ist. | |||
* Wurden hierfür keine Ausnahmen definiert, so kann er nacheinander sämtliche Adressen von dem angegriffenen System abschotten, die dieses für seine Arbeit benötigt ([http://de.wikipedia.org/wiki/Domain_Name_System DNS]-Server, usw.). | |||
=== Weitere mögliche Funktionen === | |||
Folgende Funktionen können auf einem Firewall-Gerät noch Anwendung finden:* Endpunkt für [http://de.wikipedia.org/wiki/Virtual_Private_Network VPN]-Verbindungen | |||
* Berücksichtigung von [http://de.wikipedia.org/wiki/Quality_of_Service Quality of Service] bei der Verarbeitungspriorität | |||
* [http://de.wikipedia.org/wiki/Etherchannel Etherchannel] (je nach Hersteller auch Link- oder Port-Aggregation, Bonding oder Trunking genannt), um mehrere physikalische Interfaces zu einem schnellen logischen Interface zusammenzufassen, beispielsweise zwei 100 MBit-Interfaces zu 200 MBit. <br/> | |||
=== Portweiterleitung === | |||
Eine Portweiterleitung (englisch Port Forwarding) ist die Weiterleitung einer Verbindung, die über ein [http://de.wikipedia.org/wiki/Rechnernetz Rechnernetz] auf einen bestimmten [http://de.wikipedia.org/wiki/Port_%28Protokoll%29 Port] eingeht, zu einem anderen [http://de.wikipedia.org/wiki/Computer Computer]. | |||
* Da der entsprechende [http://de.wikipedia.org/wiki/Netzwerkdienst Netzwerkdienst] nicht von dem weiterleitenden Computer selbst geleistet wird, benutzt man hier auch irreführend den Begriff Virtueller Server. | |||
Die eingehenden [http://de.wikipedia.org/wiki/Datenpaket Datenpakete] werden hierbei per [http://de.wikipedia.org/wiki/Destination_NAT Destination NAT] und die ausgehenden Pakete per [http://de.wikipedia.org/wiki/Source_NAT Source NAT] maskiert, um sie an den anderen Rechner weiterzuleiten bzw. | |||
* den Anschein zu erwecken, die ausgehenden Pakete kämen von dem Computer, der die Portweiterleitung betreibt. | |||
==== Portweiterleitung durch Router ==== | |||
Ein [http://de.wikipedia.org/wiki/Router Router], der beispielsweise mit einem [http://de.wikipedia.org/wiki/Private_IP-Adresse privaten] [http://de.wikipedia.org/wiki/Local_Area_Network lokalen Netz] und dem [http://de.wikipedia.org/wiki/Internet Internet] verbunden ist, wartet dabei an einem bestimmten Port auf Datenpakete. | |||
* Wenn Pakete an diesem Port eintreffen, werden sie an einen bestimmten Computer und gegebenenfalls einen anderen Port im internen Netzwerk weitergeleitet. | |||
Alle Datenpakete von diesem Computer und Port werden, wenn sie zu einer eingehenden Verbindung gehören, per [http://de.wikipedia.org/wiki/Network_Address_Translation Network Address Translation] (NAT) so verändert, dass es im externen Netz den Anschein hat, der Router würde die Pakete versenden. | |||
Durch Portweiterleitung wird es Rechnern innerhalb eines LAN – welche von einem externen Netz nicht direkt erreichbar sind – somit möglich, auch außerhalb dieses [http://de.wikipedia.org/wiki/Rechnernetz Netzes], insbesondere auch im [http://de.wikipedia.org/wiki/Internet Internet] als [http://de.wikipedia.org/wiki/Server Server] zu fungieren, da diese somit über einen festgelegten Port (und mittels [http://de.wikipedia.org/wiki/Network_Address_Translation NAT]) eindeutig ansprechbar gemacht werden. | |||
Für alle Rechner im externen Netz sieht es so aus, als ob der Router den Serverdienst anbietet. | |||
* Dass dem nicht so ist, lässt sich anhand von [http://de.wikipedia.org/wiki/Header Header]-Zeilen oder Paketlaufzeitanalysen erkennen. | |||
Beispiel: Eine größere Firma besitzt ein lokales Netzwerk, wobei mehrere Server nach Außen (Internet) per ADSL-Router unter einer [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] (z. B. 205.0.0.1) auftreten. | |||
* Jetzt möchte ein Client aus dem externen Netz (Internet) einen Dienst (z. B. | |||
* HTTP/TCP Port 80) auf einem Server der Firma nutzen. | |||
* Er kann jedoch nur den ADSL-Router der Firma für den Dienst (HTTP/TCP Port 80) unter der ihm bekannten IP-Adresse (205.0.0.1) ansprechen. | |||
* Der ADSL-Router der Firma leitet die Anfrage für den Dienst (HTTP/TCP Port 80) an den entsprechenden Server im lokalen Netzwerk weiter. | |||
Eine Portweiterleitung wird also benötigt, wenn kein [http://de.wikipedia.org/wiki/Port_Address_Translation Port Address Translation] (PAT) möglich ist, da die erste Anfrage von Außen (z. B. | |||
* Internet) kommt und mehrere Server nur unter einer IP-Adresse von außen ansprechbar sind. | |||
==== Portweiterleitung zur Verbesserung der Sicherheit ==== | |||
Ein anderes Anwendungsbeispiel für eine Portweiterleitung ist die Sicherung eines Kanals für die Übertragung vertraulicher Daten. | |||
* Dabei wird Port A auf Rechner 1 mit Port B auf Rechner 2 verknüpft durch eine im Hintergrund aufrechterhaltene Verbindung zwischen zwei anderen Ports der beiden Rechner. | |||
* Dies bezeichnet man auch als [http://de.wikipedia.org/wiki/Tunnel_%28Rechnernetz%29 Tunneling]. | |||
So kann beispielsweise eine unsichere [http://de.wikipedia.org/wiki/POP3 POP3]-Verbindung (Login und Passwort werden in der Regel im Klartext übertragen) durch den Transport in einem [http://de.wikipedia.org/wiki/Secure_Shell SSH]-Kanal abgesichert werden: Der Port 113 auf dem POP-Server wird per SSH an den Port 113 des lokalen Rechners des Anwenders weitergeleitet. | |||
Das lokale E-Mail-Programm kommuniziert nun mit dem lokalen Port ([http://de.wikipedia.org/wiki/Localhost localhost]:113) statt mit dem Port des Servers (pop.example.org:113). | |||
* Der SSH-Kanal transportiert dabei die Daten verschlüsselt über die parallel bestehende SSH-Verbindung zwischen den zwei Adressen. | |||
* Das Abgreifen des Passworts durch einen mithörenden Dritten wird dadurch nahezu unmöglich. | |||
* Voraussetzung für einen SSH-Tunnel ist ein zumindest eingeschränkter SSH-Zugang auf dem Server (pop.example.org), was Privatanwendern im Allgemeinen nicht gestattet wird. | |||
==== Port Triggering ==== | |||
Port Triggering ist eine Technik, die das [http://de.wikipedia.org/wiki/Portweiterleitung Port Forwarding] erweitert. | |||
Beim Port Forwarding werden Daten, die auf bestimmten [http://de.wikipedia.org/wiki/TCP/IP TCP/IP]-Ports eingehen, auf eine einzelne [http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] weitergeleitet. | |||
* Es ist nicht möglich, einen [http://de.wikipedia.org/wiki/Port_%28Protokoll%29 Port] oder Portbereich auf mehrere lokale Adressen zu leiten. | |||
* Die Weiterleitung ist statisch, d. h. | |||
* es wird immer auf die gleiche IP-Adresse weitergeleitet. | |||
Beim Port Triggering legt man die Ports fest, über die die Daten des Programms nach außen gesendet werden und zusätzlich, über welche Ports die Antworten wieder eingehen. | |||
* Wenn ein Rechner über eine Anwendung, deren Ports im Port Triggering festgelegt wurden, Daten ins Internet sendet, merkt sich der Router die IP-Adresse dieses Rechners und leitet die Antworten, die wieder eingehen, entsprechend an diese IP-Adresse weiter (zurück). | |||
* Die Weiterleitung ist dynamisch, d. h. | |||
* es wird immer an die IP-Adresse weitergeleitet, von der die Anforderung kam. | |||
Allerdings ist es auch beim Port Triggering nicht möglich, ein und denselben Port auf mehrere Rechner gleichzeitig im lokalen Netz weiterzuleiten! Port Forwarding ist für [http://de.wikipedia.org/wiki/File_Transfer_Protocol FTP], [http://de.wikipedia.org/wiki/Web-Server Web-Server] oder andere [http://de.wikipedia.org/wiki/Server_%28Software%29 Server]-basierende Anwendungen geeignet. | |||
* Ein Request aus dem Internet wird immer an den richtigen Server weitergeleitet. | |||
Der Port ist immer offen, auch wenn der Dienst nicht benutzt wird. | |||
* Im Gegensatz dazu erlaubt Port Triggering den eingehenden Datenverkehr erst, nachdem ein Rechner aus dem lokalen Netz einen entsprechenden Request in Richtung Internet gesendet hat. | |||
* Der Port wird nur temporär für diesen Rechner geöffnet. | |||
* Nach einer gewissen Zeitspanne der Inaktivität wird er automatisch wieder geschlossen. | |||
===== Vorteile dieser Technik ===== | |||
Hieraus ergeben sich 2 Vorteile:* Erhöhte Sicherheit: die eingehenden Ports sind nicht die ganze Zeit geöffnet. | |||
* Das Forwarding muss nicht mehr konfiguriert werden: Es ist nicht mehr nötig, feste interne IP-Adressen für das Forwarding der Ports anzugeben, da diese IP-Adresse durch den ausgehenden Datenverkehr auf dem Trigger-Port ermittelt werden kann. | |||
===== Port Triggering in Verbindung mit VoIP ===== | |||
Wird Port Triggering auf einen Port gelegt auf dem [http://de.wikipedia.org/wiki/VoIP VoIP] betrieben wird, kann es sein, dass der VoIP Dienst nur noch erreichbar ist, wenn vorher ein ausgehender Anruf getätigt wurde. | |||
* Sobald der Port wieder geschlossen wird (siehe oben) ist es wieder nicht möglich, eingehende Anrufe zu empfangen. | |||
* Einige VoIP Endgeräte unterstützen daher die Aufrechterhaltung der Weiterleitung durch den Versand von Pseudo-Datenpaketen. | |||
=== Network Address Translation === | |||
Network Address Translation (NAT) ist in [http://de.wikipedia.org/wiki/Rechnernetz Rechnernetzen] der Sammelbegriff für Verfahren, die automatisiert Adressinformationen in Datenpaketen durch andere ersetzen, um verschiedene Netze zu verbinden. | |||
* Daher kommen sie typischerweise auf [http://de.wikipedia.org/wiki/Router Routern] zum Einsatz. | |||
==== NAT-Typen ==== | |||
NAT wird in Source-NAT und Destination-NAT unterteilt. | |||
* Während beim Source-NAT die Adresse des Computers umgeschrieben wird, der die Verbindung aufbaut, wird beim Destination-NAT die Adresse des angesprochenen Computers verändert. | |||
==== Verwendung von NAT ==== | |||
===== Verwendung von Source-NAT ===== | |||
Große Verbreitung fand Source-NAT durch die Knappheit öffentlicher [http://de.wikipedia.org/wiki/IPv4 IPv4]-Adressen und die Tendenz, private Subnetze mit dem [http://de.wikipedia.org/wiki/Internet Internet] zu verbinden. | |||
* Die einfachste Lösung dieses Problems war oft die durch NAT mögliche Verwendung mehrerer [http://de.wikipedia.org/wiki/Private_IP-Adresse privater IP-Adressen] mit nur einer öffentlichen IP-Adresse, wobei die Abbildung auf diese aufgrund der 16 Bit breiten Portnummern auf etwa 65.000 Sitzungen (Port-Address-Translation Einträge) beschränkt bleibt (siehe [http://de.wikipedia.org/w/index.php?title=Network_Address_Translation&printable=yes#Nachteile Nachteile]). | |||
Gerade in privaten oder möglichst preisgünstig ausgeführten Netzinstallationen wird Source-NAT als eine Art Sicherheitsmerkmal und zur Trennung von internem und externem Netz eingesetzt. | |||
* Während eine NAT-Installation oberflächlich tatsächlich diese gewünschte Wirkung erzielt, kann sie weder Sicherheitsinfrastruktur noch wirksame Maßnahmen zur Trennung von Netzen ersetzen. | |||
* So wird die Source-NAT-Funktion eines Routers im professionellen Bereich oft durch ein zusätzlich betriebenes [http://de.wikipedia.org/wiki/Application_Layer_Gateway Application Layer Gateway] (ALG) unterstützt. | |||
===== Verwendung von Destination-NAT ===== | |||
Destination-NAT wird beispielsweise verwendet, um mehrere, unterschiedliche Serverdienste, die auf verschiedenen Computern betrieben werden, unter einer einzigen IP-Adresse anzubieten. | |||
Auch wird es manchmal bei [http://de.wikipedia.org/wiki/Hot_Spot_%28WLAN%29 Hot Spots] benutzt, um Zugriffe auf Webseiten vor der Anmeldung auf den Rechner umzuleiten, der die Anmeldung anbietet. | |||
==== Funktionsweise ==== | |||
===== NAT-Router, NAT-Session und NAT-Table ===== | |||
Ein System mit NAT-Funktion ist zustandsbehaftet und wird auch als NAT-Router bezeichnet. | |||
* Für jede Verbindung, die ein NAT-Router aufbaut, startet er eine NAT-Session. | |||
* Die zugehörigen Verbindungsinformationen (IP-Adressen, Ports und Timeouts) speichert er in seiner NAT-Table. | |||
Anhand der gespeicherten Informationen kann der NAT-Router das jeweilige Antwort-Datenpaket dem jeweiligen Client korrekt zuordnen. | |||
* Nach Ablauf einer NAT-Session wird ihr Eintrag aus der NAT-Table gelöscht. | |||
* Die Anzahl der Sessions, die ein NAT-Router gleichzeitig offen halten kann, ist durch die Leistungsfähigkeit der jeweils im NAT-Router eingesetzten Hard- und Software begrenzt. | |||
===== Source NAT ===== | |||
Bei jedem Verbindungsaufbau durch einen internen Client wird die interne Quell-[http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] durch die öffentliche IP-Adresse des Routers ersetzt. | |||
* Außerdem wird der [http://de.wikipedia.org/wiki/Port_%28Protokoll%29 Quellport] des internen Clients durch einen freien Port des Routers ersetzt, der dadurch belegt wird. | |||
* Diese Zuordnung wird in der NAT-Table des Routers gespeichert. | |||
* Der Vorgang wird als [http://de.wikipedia.org/wiki/Port_Address_Translation PAT] (Port and Address Translation) bezeichnet. | |||
{| style="border-spacing:0;margin:auto;width:17.501cm;" | |||
|- style="background-color:#ffffff;border:none;padding:0.106cm;" | |||
| colspan="2" | lokales Netz ([http://de.wikipedia.org/wiki/Local_Area_Network LAN]) | |||
|| | |||
| colspan="2" | öffentliches Netz ([http://de.wikipedia.org/wiki/Wide_Area_Network WAN]) | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Quelle''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Ziel''' | |||
| style="background-color:#ffffff;border:none;padding:0.106cm;" | '''Router<nowiki>===== = =====></nowiki>NAT''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Quelle''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Ziel''' | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.2:4701 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 205.0.0.2:6787 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.3:5387 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 205.0.0.2:8709 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.4:1001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:23 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 205.0.0.2:4806 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:23 | |||
|- | |||
|} | |||
====== Source-NAT und IP-Routing am Beispiel ====== | |||
In diesem Beispiel nutzt das private Netz die IP-Adressen 192.168.0.0/24. | |||
* Zwischen diesem Netz und dem öffentlichen Internet befindet sich ein Source-NAT-Router mit der öffentlichen Adresse 205.0.0.2/32. | |||
Allgemein ist immer dann ein Routing erforderlich, wenn Absender und Empfänger in verschiedenen Netzen liegen. | |||
* Möchte eine über einen Source-NAT-Router angebundene Station ein Paket an einen Empfänger außerhalb ihres privaten Netzes senden, beispielsweise an einen [http://de.wikipedia.org/wiki/Telnet Telnet-Server] irgendwo entfernt im Internet, so funktioniert der Kommunikationsprozess (vereinfacht dargestellt) wie folgt: | |||
Zuerst ermittelt die Station den für das gewünschte Ziel nächstgelegenen Router (siehe [http://de.wikipedia.org/wiki/Routingtabelle Routingtabelle]), das sei hier der Source-NAT-Router, dann ermittelt die Station per ARP dessen MAC-Adresse und baut ein Paket wie folgt zusammen: | |||
Es erhält als Ziel-MAC-Adresse die MAC-Adresse des Source-NAT-Routers, die Ziel-IP-Adresse des Empfängers (hier 170.0.0.1), die Ziel-[http://de.wikipedia.org/wiki/Port_%28Protokoll%29 Portadresse] 23 für den Telnet-Server sowie die MAC- und IP-Adresse des Absenders (hier 192.168.0.4) und einen Absenderport (irgendein gerade freier Port, hier 1001) für die gerade anfragende Telnet-Sitzung sowie andere Daten. | |||
* Der Source-NAT-Router empfängt und verarbeitet das Paket, weil es an seine MAC-Adresse gerichtet ist. | |||
Bei der Verarbeitung im Router wird das Paket in abgeänderter Form weitergeleitet: der Router ermittelt anhand der Empfänger-IP-Adresse den nächsten Router, ermittelt per ARP dessen MAC-Adresse und baut das Paket wie folgt um: | |||
Es erhält nun abweichend die MAC-Adresse des nächsten Routers, die Ziel-IP-Adresse des Empfängers (170.0.0.1), Ziel-Port 23 sowie die öffentliche MAC- und IP-Adresse des Source-NAT-Routers (205.0.0.2), einen gerade freien Absender-Port aus dem Reservoir des Routers (hier 4806) und den Nutzdaten, die gleich bleiben. | |||
Diese Zuordnung der ursprünglichen Absenderadresse und des Ports (192.168.0.4:1001) zum jetzt enthaltenen Adress-Tupel (205.0.0.2:4806) wird im Router solange gespeichert, bis die Telnet-Sitzung abläuft oder beendet wird. | |||
* Bei NAT wird das Paket auf Schicht 3 ([http://de.wikipedia.org/wiki/Internet_Protocol IP]) also deutlich verändert. | |||
Bei der Bearbeitung in nachfolgenden IP-Routern wird das Paket lediglich auf Schicht 2 verändert: Der Router ermittelt den nächsten Router, ermittelt per ARP dessen MAC-Adresse und baut das Paket wie folgt um: | |||
Es erhält nun abweichend als Ziel-MAC-Adresse die MAC-Adresse des nächsten Routers und die Absender-MAC-Adresse wird gegen die eigene ausgetauscht. | |||
* Die IP-Adresse des Empfängers (170.0.0.1), Ziel-Port 23 sowie die Absender-IP-Adresse des Source-NAT-Routers (205.0.0.2), dessen Absender-Port 4806 und die Nutzdaten bleiben erhalten. | |||
Das bedeutet: Auf Schicht 3 ([http://de.wikipedia.org/wiki/Internet_Protocol IP]) wird das Paket hier nicht verändert. | |||
* Dieser Vorgang wiederholt sich, bis ein letzter Router die Zielstation in einem direkt angeschlossenen Netz findet; dann setzt sich das Paket wie folgt zusammen: | |||
es erhält als Absender-MAC-Adresse die des letzten Routers, als Ziel die MAC-Adresse der Zielstation, die IP-Adresse des Empfängers (= Zielstation, 170.0.0.1), Ziel-Port 23 sowie die IP-Adresse des Absender-Source-NAT-Routers (205.0.0.2), dessen Absender-Port 4806 und natürlich Nutzdaten. | |||
Nach erfolgreicher Verarbeitung durch den Telnet-Server wird die Rückantwort dann wie folgt zusammengestellt: MAC-Adresse des für den Rückweg zuständigen Routers (wobei Hin- und Rückroute nicht unbedingt identisch sein müssen), die IP-Adresse des anfragenden Source-NAT-Routers (205.0.0.2), die Ziel-Portadresse 4806 sowie die MAC- und IP-Adresse des Telnet-Servers (170.0.0.1) und dessen Absenderport, sowie Antwort-Daten. | |||
Nachdem alle Router durchlaufen wurden, wird daraus schließlich im Source-NAT-Router (205.0.0.2): MAC-Adresse und IP-Adresse des anfragenden Rechners (hier 192.168.0.4), und dessen Portadresse 1001 sowie die MAC des Source-NAT-Routers und IP-Adresse des Telnet-Servers (170.0.0.1) und dessen Absenderport, sowie Antwort-Daten. | |||
* Wird diese Telnet-Sitzung beendet, wird auch Port 1001 wieder freigegeben. | |||
===== Destination NAT ===== | |||
Bei jedem Verbindungsaufbau durch den Client wird die Ziel-[http://de.wikipedia.org/wiki/IP-Adresse IP-Adresse] durch die des eigentlichen Empfängers im LAN ersetzt. | |||
* Außerdem wird der [http://de.wikipedia.org/wiki/Port_%28Protokoll%29 Zielport] durch einen freien Port des Routers ersetzt, der dadurch belegt wird. | |||
* Diese Zuordnung wird in der NAT-Table des Routers gespeichert. | |||
{| style="border-spacing:0;margin:auto;width:17.501cm;" | |||
|- style="background-color:#ffffff;border:none;padding:0.106cm;" | |||
| colspan="2" | öffentliches Netz (WAN) | |||
|| | |||
| colspan="2" | lokales Netz (LAN) | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Quelle''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Ziel''' | |||
| style="background-color:#ffffff;border:none;padding:0.106cm;" | '''Router<nowiki>===== = =====></nowiki>NAT''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Quelle''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Ziel''' | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:1001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 171.4.2.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:1001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.2:80 | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:1001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 171.4.2.1:22 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:1001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.3:22 | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:1001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 171.4.2.1:81 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:1001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.3:81 | |||
|- | |||
|} | |||
==== Kategorisierung ==== | |||
[http://tools.ietf.org/html/rfc3489 RFC 3489], der das Protokoll [http://de.wikipedia.org/wiki/STUN STUN] zur Traversierung von NAT-Gateways beschreibt, ordnet diese in vier verschiedene Klassen ein, die auch außerhalb des Kontexts von STUN gerne zur Klassifizierung verwendet werden: | |||
{| style="border-spacing:0;margin:auto;width:17.501cm;" | |||
|- style="background-color:transparent;border:none;padding:0.106cm;" | |||
|| [[Image:Grafik20.png]] | |||
|| Im Full Cone NAT-Szenario setzt ein Gateway interne Adressen und Ports nach einem statischen Muster in eine externe Adresse und deren Ports um. | |||
* Es erlaubt insbesondere auch, dass so externe Hosts über die externe Adresse des NAT-Gateways Verbindungen zu internen Hosts aufbauen. | |||
|- style="background-color:transparent;border:none;padding:0.106cm;" | |||
|| [[Image:Grafik1.png|right|middle]] | |||
|| Im Restricted Cone NAT-Szenario erlaubt das Gateway die Kontaktaufnahme eines externen mit einem internen Host nur, wenn diesem Verbindungsversuch eine Kontaktaufnahme dieses internen Hosts mit dem externen Host vorausging. | |||
|- style="background-color:transparent;border:none;padding:0.106cm;" | |||
|| [[Image:Grafik22.png]] | |||
|| Das Port Restricted Cone NAT-Szenario schränkt diese Erlaubnis der Kontaktaufnahme zusätzlich auf nur den externen Port ein, über den die vorausgehende umgekehrte Kontaktaufnahme stattfand. | |||
|- style="background-color:transparent;border:none;padding:0.106cm;" | |||
|| [[Image:Grafik23.png]] | |||
|| Im Symmetric-NAT-Szenario schließlich ist eine Initiierung von Verbindungen durch externe Hosts nicht oder kaum möglich, da diese im Allgemeinen nicht abschätzen können, über welche von mehreren externen Adressen des Gateways Verbindungen zu (oder von) ihnen abgewickelt bzw. | |||
* erwartet werden. | |||
|- | |||
|} | |||
Diese prototypischen Grundszenarien bilden in modernen NAT-Systemen allerdings oft nur noch Anhaltspunkte zur Klassifizierung punktuellen Verhaltens der Gateways. | |||
* Diese benutzen teilweise Mischformen der klassischen Ansätze zur Adressumsetzung oder wechseln dynamisch zwischen zwei oder mehreren Verhaltensmustern. | |||
==== Vorteile ==== | |||
* IP-Adressen eines Netzes können vor einem anderen Netz verborgen werden. | |||
* Somit kann NAT zur Verbesserung der Netzwerksicherheit eingesetzt werden. | |||
==== Nachteile ==== | |||
* NAT wird oft nur als eine Notlösung betrachtet, um bei nicht dauerhaft verbundenen Netzinstallationen das Problem der knappen IPv4-Adressen zu umgehen. | |||
* Das größte Problem an NAT ist, dass die saubere Zuordnung „1 Host mit eindeutiger IP-Adresse“ nicht eingehalten wird. | |||
* Durch die Umschreibung von Protokoll-Headern, die einem [http://de.wikipedia.org/wiki/Man-in-the-middle-Angriff Man-in-the-middle-Angriff] ähnelt, haben so insbesondere ältere Protokolle und Verschlüsselungsverfahren auf Netzwerk- und Transportebene durch diesen Designbruch Probleme (z. B. [http://de.wikipedia.org/wiki/IPsec IPsec]-AH). | |||
* Protokollkomplikationen durch NAT werden in [http://tools.ietf.org/html/rfc3027 RFC 3027] beschrieben. | |||
* Ebenso leiden insbesondere [http://de.wikipedia.org/wiki/Netzwerkdienst Netzwerkdienste], die Out-of-Band-Signalisierung und Rückkanäle einsetzen, etwa [http://de.wikipedia.org/wiki/IP-Telefonie IP-Telefonie]-Protokolle, unter Komplikationen durch NAT-Gateways. | |||
* NAT-Gateways heben die strenge Trennung des [http://de.wikipedia.org/wiki/OSI-Schichtenmodell OSI-Schichtenmodells] auf. | |||
* Ende-zu-Ende-Konnektivität wird gebrochen, da die NAT-Übergabestelle das Ziel eingehender Verbindungen nicht automatisch ermitteln kann. | |||
==== NAT-Traversal ==== | |||
NAT-Traversal (z.T. | |||
* als NAT-Durchdringung übersetzt) bezeichnet Techniken zum Aufbau und Halten von Verbindungen über NAT-Übergabestellen hinweg. | |||
* Network Address Translation bricht die Ende-zu-Ende-Konnektivität. | |||
* Daher benötigen typischerweise Anwendungen, die von Client zu Client verbinden (zum Beispiel bei [http://de.wikipedia.org/wiki/Peer-to-Peer Peer-to-Peer]- und [http://de.wikipedia.org/wiki/IP-Telefonie IP-Telefonie]-Anwendungen oder Netzwerkspiele) NAT-Durchdringungstechniken. | |||
Es existieren mehrere Techniken, derer nicht jede in jeder Situation funktioniert, da das Verhalten von NAT nicht standardisiert ist. | |||
* Viele Techniken benötigen die Hilfe eines für beide Parteien direkt öffentlich zugänglichen Servers. | |||
Manche Methoden nutzen einen solchen Server nur für den Verbindungsaufbau, andere leiten allen Verkehr der Verbindung über diesen Hilfs-Server, was die Kosten der Datenübertragung sowie die Latenz erhöht und somit für Echtzeit-Anwendungen nachteilig ist. | |||
Die meisten verhaltensbasierten Methoden umgehen Unternehmens-Sicherheitsrichtlinien. | |||
* Daher werden in Unternehmensnetzwerken Techniken bevorzugt, die sich ausdrücklich kooperativ mit NAT und Firewalls integrieren und administrative Eingriffe an der NAT-Übergabestelle erlauben. | |||
* Deshalb sind die vielversprechendsten Standards [http://de.wikipedia.org/w/index.php?title=Realm-Specific_IP&action=edit&redlink=1 Realm-Specific IP] und Middlebox Communication (MIDCOM). | |||
SOCKS, das älteste Protokoll zur NAT-Durchdringung, ist weiterhin weit verbreitet. | |||
* In der Heimanwendung oder bei kleinen Büros wird von den meisten NAT-Übergabestellen [http://de.wikipedia.org/wiki/Universal_Plug_and_Play Universal Plug and Play] (UPnP) unterstützt. [http://de.wikipedia.org/wiki/NAT-T NAT-T] ist gebräuchlich bei [http://de.wikipedia.org/wiki/IPsec IPsec]-VPN-Clients, um [http://de.wikipedia.org/wiki/IPsec#Encapsulating_Security_Payload_.28ESP.29 Encapsulating-Security-Payload]-Pakete durch die NAT zu bringen. | |||
===== Spezifikationen ===== | |||
* [http://tools.ietf.org/html/rfc2663 RFC 2663] IP Network Address Translator (NAT) Terminology and Considerations (englisch) | |||
* [http://tools.ietf.org/html/rfc2766 RFC 2766] Network Address Translation - Protocol Translation (NAT-PT) (englisch) | |||
* [http://tools.ietf.org/html/rfc3022 RFC 3022] Traditional IP Network Address Translator (Traditional NAT) (englisch) <br/> | |||
==== Port Address Translation ==== | |||
Port and Address Translation (PAT) oder Network Address Port Translation (NAPT) ist eine Technik, die in [http://de.wikipedia.org/wiki/Computernetzwerk Computernetzwerken] verwendet wird. | |||
* Sie ist eine spezielle Form von [http://de.wikipedia.org/wiki/Network_Address_Translation NAT] (1 zu n NAT). | |||
Dabei werden im Gegensatz zu NAT nicht nur die [http://de.wikipedia.org/wiki/IP-Adresse IP-Adressen], sondern auch [http://de.wikipedia.org/wiki/Port_%28Protokoll%29 Port-Nummern] umgeschrieben. | |||
* PAT wird eingesetzt, wenn mehrere private IP-Adressen aus einem LAN zu einer öffentlichen IP-Adresse übersetzt werden sollen. | |||
===== Beispiel ===== | |||
Angenommen für das lokale Netz <tt>192.168.0.0/24</tt> steht die öffentliche IP-Adresse <tt>205.0.0.2</tt> zur Verfügung. | |||
====== Ausgehende Pakete (LAN → WAN) ====== | |||
{| style="border-spacing:0;margin:auto;width:17.501cm;" | |||
|- style="background-color:#ffffff;border:none;padding:0.106cm;" | |||
| colspan="2" | lokales Netz (LAN) | |||
|| | |||
| colspan="2" | öffentliches Netz (WAN) | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Quell IP:Port''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Ziel IP:Port''' | |||
| style="background-color:#ffffff;border:none;padding:0.106cm;" | '''Router<nowiki>===========></nowiki>Port Translation''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Quell IP:Port''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Ziel IP:Port''' | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.2:5000 | |||
| style="background-color:transparent;border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 205.0.0.2:6000 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.3:5000 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 205.0.0.2:6001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.5:5001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 205.0.0.2:6002 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
|- | |||
|} | |||
Die Quell-IP-Adressen werden durch die (einzige) öffentliche IP-Adresse ersetzt. | |||
* Die internen Port-Nummern werden durch eindeutige öffentliche Port-Nummern ersetzt. | |||
* Mittels einer Tabelle merkt sich der [http://de.wikipedia.org/wiki/Router Router] jeweils die interne Quell-IP-Adresse samt Port-Nummer und die öffentliche Port-Nummer des ausgehenden [http://de.wikipedia.org/wiki/Datenpaket Pakets]:* <tt>192.168.0.2:5000 ⇔ 6000</tt> | |||
* <tt>192.168.0.3:5000 ⇔ 6001</tt> | |||
* <tt>192.168.0.5:5001 ⇔ 6002</tt> | |||
Wie im Beispiel ersichtlich, funktioniert dies auch, wenn mehrere Geräte gleichzeitig dieselbe IP mit demselben Port aufrufen. | |||
* Zwar haben die Datenpakete alle die gleiche Ziel-IP und den gleichen Ziel-Port, jedoch werden die Antworten an die Quell-IP gesendet, mit jeweils unterschiedlichen Ports. | |||
Das aufrufende Gerät (Router oder ähnliches) kann nämlich eine HTTP Anfrage über den Port 80 stellen, dabei aber selbst als eigenen Port den Port 6001 angeben. | |||
* Die Antwort vom HTTP-Server erfolgt dann an den Router auf dem Port 6001 und dieser übersetzt zurück auf die passende IP und den Port des aufrufenden Geräts. | |||
====== Eingehende Pakete (LAN ← WAN) ====== | |||
{| style="border-spacing:0;margin:auto;width:17.501cm;" | |||
|- style="background-color:#ffffff;border:none;padding:0.106cm;" | |||
| colspan="2" | lokales Netz (LAN) | |||
|| | |||
| colspan="2" | öffentliches Netz (WAN) | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Quell IP:Port''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Ziel IP:Port''' | |||
| style="background-color:#ffffff;border:none;padding:0.106cm;" | '''Router<===========Port Translation''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Quell IP:Port''' | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | '''Ziel IP:Port''' | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.2:5000 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 205.0.0.2:6000 | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.3:5000 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 205.0.0.2:6001 | |||
|- | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 192.168.0.5:5001 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 170.0.0.1:80 | |||
| style="border:0.05pt solid #aaaaaa;padding:0.049cm;" | 205.0.0.2:6002 | |||
|- | |||
|} | |||
Bei eingehenden Paketen kann anhand der Port-Nummer der Ziel-IP und des Tabelleneintrags (connection tracking) festgestellt werden, welcher [http://de.wikipedia.org/wiki/Computer Computer] die Pakete angefordert hatte (hier: <tt>192.168.0.2</tt>, <tt>192.168.0.3</tt> und <tt>192.168.0.5</tt>). | |||
Der Router kann dadurch die Ziel-IP durch die ursprüngliche Quell-IP <tt>192.168.0.2</tt>, <tt>192.168.0.3</tt> bzw. <tt>192.168.0.5</tt> und die öffentliche Port-Nummer durch die ursprüngliche interne Port-Nummer austauschen. | |||
Da hier jede IP-Adresse zu einer einzigen IP-Adresse übersetzt wird, spricht man von einer N:1-Übersetzung. | |||
* Werden mehrere IP-Adressen zu weniger IP-Adressen abgebildet, dann handelt es sich um eine N:M-Übersetzung. |
Version vom 11. Dezember 2022, 14:54 Uhr
Firewall-Technologien
Eine Firewall kann mit verschiedenen Methoden erwünschten von unerwünschtem Netzwerkverkehr unterscheiden, von denen aber nicht jedes Produkt alle unterstützt.
Paketfilter-Firewall
Zur Aufgabe einer Paketfilter-Firewall gehört es, Netzwerkpakete anhand ihrer Netzwerkadresse zu sperren oder durchzulassen.
- Dafür wertet sie die Header-Informationen der Netzwerkpakete aus.
Die einfache (zustandslose) Paketfilterung arbeitet auf einem Firewall-Router mit statischen Regeln und betrachtet jedes Netzwerkpaket einzeln.
- Sie stellt also keine Beziehungen zu den vorherigen Netzwerkpaketen her.
Demgegenüber gibt es eine erweiterte Form der (zustandsgesteuerten) Paketfilterung, die solche Beziehungen erfasst, indem sie auf die dynamische Technik der Stateful Inspection zurückgreift.
- So wird der Zugriff auf das Quellsystem, das eine Kommunikation angefordert hat, weiter eingeschränkt.
- Eine entsprechende Firewall wird ebenfalls als reine Paketfilter-Firewall klassifiziert, zumindest solange darauf keine (möglichen) Proxyfilter installiert werden.
Netzwerkadressierung als Grundlage für die Paketfilterung
Jede Netzwerkkarte hat eine eindeutige abrufbare Seriennummer, welche man MAC-Adresse nennt.
- Sie setzt sich zusammen aus einer Herstelleridentifikationsnummer und einer angrenzenden laufenden Nummer.
Da diese Nummern eindeutig sind, lassen sie sich für eine simple aber dafür allgemeingültige Art der Adressierung in einem Netz nutzen.
- Simpel deshalb, weil sich damit zwar beispielsweise ein Computer in einem unverzweigten Netz adressieren lässt, aber in der MAC-Adresse nicht angeben werden kann, für welches Programm des Computers das Netzwerkpaket bestimmt ist.
Unverzweigt deshalb, weil die MAC-Adresse aufgrund ihres Aufbaus nicht dafür geeignet ist, in weitere Teilbereiche zerlegt zu werden.
- Eine Zuordnung des Adressaten zu einem bestimmten Subnetz ist also mit der MAC-Adresse nicht möglich.
- Anders formuliert lassen sich MAC-Adressen wie Hausnummern nutzen, aber darüber hinaus weder einer Straße noch einem Bewohner des Hauses zuordnen.
Die Lösung bieten höhere Kommunikationsprotokolle, die über die MAC-Adresse gelegt werden.
- Ein Netzwerkpaket wird also bildlich gesehen mehrfach verpackt, wobei die MAC-Adresse das äußere Paket darstellt und die weiteren Pakete Schicht für Schicht in diesem Paket stecken.
- Innerhalb eines TCP-/IP-Netzes bildet die IP-Adresse das nächsthöhere Protokoll, also die nächste Verpackung.
Es handelt sich dabei um mehrere Ziffernblöcke, vergleichbar mit einer Hausadresse, die eine Straßennummer und eine Hausnummer enthält (welcher Teil der IP-Adresse sinnbildlich die Straßennummer, genauer die Netzwerk-ID, repräsentiert und welcher Teil die Hausnummer darstellt, genauer die Rechner-ID, wird durch die Subnetzmaske definiert).
In einem solchen Netz bildet das nächsthöhere Protokoll, also die Verpackung nach der IP-Adresse, den Port ab.
- Der Port ist vergleichbar mit einer Raumnummer oder einem Namensschild.
- Er bestimmt, für wen genau „im Haus“ das Paket bestimmt ist (genauer: welches Programm das Paket erhalten soll).
All diese „Verpackungen“ kann eine Firewall auswerten und die Netzwerkpakete entsprechend filtern, indem sie anhand eines „Wer darf worauf zugreifen“-Regelwerks entscheidet, welche Anfragen zulässig sind und welche nicht.
Die Adressenfilterung bildet die Grundform sämtlicher weiterer Firewall-Arten.
- Filter, die der reinen Filterung von Netzwerkadressen dienen, also Paketfilter, kommen somit auch auf allen anderen Firewalls vor.
Firewall-Router
Ein Firewall-Router wird als Paketfilter-Firewall klassifiziert und ist eine Software, die auf einem Router installiert ist und die dort die Netzwerkverbindung beschränkt.
- Dieser Firewall-Typ kann im einseitig transparenten (Router im NAT-Modus) oder beidseitig transparenten Modus in Erscheinung treten (Router ohne NAT).
Er wird hauptsächlich mit Firewall-Geräten assoziiert, die statische (zustandslose) Paketfilter verwenden, obgleich genau genommen auch eine Stateful Inspection Firewall auf einem Router aufsetzen kann.
- Andere Firewall-Arten unterscheiden sich von einem Firewall-Router also dadurch, dass sie zumindest eine dynamische Form der Paketfilterung anbieten (Stateful Inspection) oder auf einem vom Router abweichenden Konzept basieren und dabei neben dem Paketfilter meist eine erweiterte Form der Filterung anbieten (wie Proxy Firewall und Personal Firewall).
Der Firewall-Router ist bei gleicher Hardware verglichen mit anderen Firewall-Arten sehr schnell.
OSI-Schichten
Das OSI-Schichtenmodell beschreibt die Designgrundlage von Kommunikationsprotokollen in Rechnernetzen.
- Ein Paketfilter greift nach diesem Schichtenmodell auf die OSI-Schicht 3 (IP-Adresse) und 4 (Port) aus den Header-Informationen eines Netzwerkpaketes zu.
Beispiel für ein Regelwerk
Bei den folgenden beispielhaften Filterregeln ist zu beachten, dass nicht inhaltlich nach den genannten Protokollen, sondern den zu dem entsprechenden Netzwerkdienst gehörenden TCP- bzw.
- UDP-Ports gefiltert wird:* Aus dem Internet sind zum Mailserver in der DMZ Mail-Dienste (SMTP – TCP-Port 25, POP3 – TCP-Port 110 und IMAP – TCP-Port 143) erlaubt.
- Der Mailserver darf aus der DMZ in das Internet Mails per SMTP verschicken und DNS-Anfragen stellen.
- Aus dem lokalen Netz sind Administrationsdienste (SSH, Remote Desktop, Backup – TCP-Port 22) zum Mailserver erlaubt.
- Alle anderen Pakete in oder aus der DMZ werden in eine Logdatei geschrieben und danach verworfen.
Die Filterentscheidungen werden für jedes Paket einzeln und unabhängig getroffen.
- Diese Art der Filterung ist heutzutage in zahlreichen Routern und Layer-3-Switches implementiert.
Stateful Inspection
Stateful Inspection: Die Eigenschaften ausgehender Datenpakete werden in einer Statustabelle gespeichert.
- Mit dieser werden eingehende Datenpakete verglichen.
Im Unterschied zu dem statischen (zustandslosen) Paketfilter wird hier die Firewall-Regel bei jeder Verbindungsanfrage dynamisch konkretisiert, um den Zugriff auf eine etablierte Verbindung genauer zu beschränken.
- Dabei stellt die Firewall den Rückkanal (Ziel- zu Quellsystem) in direkter Beziehung zur zuvor etablierten Verbindung (Quell- zu Zielsystem) und schränkt den Zugriff entsprechend ein, sodass ausschließlich die beteiligten Kommunikationspartner auf die Verbindung zugreifen können.
- Das ist die Grundfunktion, die alle Stateful Inspection Firewalls beherrschen.
Spezielle Filter zahlreicher Stateful Inspection Firewalls können darüber hinaus die Nutzdaten einer Kommunikation einsehen.
- Das ist beispielsweise für Netzwerkprotokolle sinnvoll, die über die Nutzdaten eine zweite Verbindung zwischen den Kommunikationspartnern aushandeln (siehe aktives FTP).
Die Einsicht in die Nutzdaten erlaubt es dem Filter, die Adressfilterung der Pakete weiter zu präzisieren, er ist im Unterschied zu einem Proxyfilter jedoch nicht in der Lage, die Verbindung selbst zu beeinflussen (er kann die Daten nicht verändern).
Je nach Produkt kann die Stateful Inspection Firewall auch nach einem Verbindungsaufbau erkennen, ob und wann der zu schützende PC (genauer der Client) mit dem Zielsystem kommuniziert, wobei die Firewall nur dann Antworten darauf zulässt.
- Sendet das Zielsystem also Daten, die von dem Client nicht angefordert wurden, so blockiert die Firewall den Transfer selbst nach erfolgter Verbindung zwischen Client und Zielsystem.
OSI-Schichten
Ein Paketfilter, der auf die Technik der Stateful Inspection basiert, greift auf die OSI-Schicht 3 (IP-Adresse), 4 (Port) und ggf. 7 (Nutzdaten) eines Netzwerkpaketes zu.
Mögliche Funktionen
Abhängig von der Konfiguration des Gerätes, auf dem die Firewall-Software installiert wurde und dem Firewall-Produkt, kann eine Stateful Inspection Firewall unter anderem die folgenden Funktionen bieten:* Schutz vor SYN-Flooding, z. B.
- durch SYN-Cookies
- Verwerfen von fehlerhaften Paketen (z. B.
- widersprüchliche TCP-Flags wie SYN-Bits, ACK-Bits und Sequenznummern)
- Schutz vor Ping of Death, Smurf-Angriffen, Teardrop-Attacken oder Land-Attacken
Proxy Firewall
Die Filter einer Proxy Firewall (auch Application Layer Firewall genannt) beachten zusätzlich zu den reinen Verkehrsdaten wie Quelle, Ziel und Dienst typischerweise noch die Nutzdaten, also den Inhalt der Netzwerkpakete.
Im Unterschied zur Stateful Inspection Technologie, die abhängig vom Produkt mitunter auch auf die Nutzdaten zugreift, reicht der typische Proxyfilter die Netzwerkanfrage des Quellsystems nicht einfach an das Zielsystem weiter.
- Vielmehr baut er selbst eine eigene Verbindung zum Zielsystem auf.
Da er stellvertretend für den anfragenden Client mit dem Zielsystem kommuniziert, kann er die Pakete zusammenhängend analysieren und Einfluss auf die Verbindung nehmen.
- So ist er in der Lage, Anfragen auch in Bezug auf den Kommunikationsfluss der Nutzdaten zu filtern und kann entscheiden, welche Antworten des Zielsystems er an den anfragenden Client weiterreicht.
- Dabei kann er den Paketinhalt beliebig verändern.
Technisch gesehen arbeitet ein solcher Filter als ein in den Verkehr eingreifender Kommunikationspartner, der die Verbindungen auf beiden Seiten terminiert (es handelt sich um zwei eigenständige Verbindungen), statt die Netzwerkpakete durchzureichen.
Der Filter selbst 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.
Da er das Kommunikationsprotokoll kennen muss, gibt es für jedes höhere Kommunikationsprotokoll (HTTP, FTP, DNS, SMTP, POP3, MS-RPC, usw.) einen eigenen Filter (man spricht daher auch von dedicated Proxys).
- Sie können u. a. unerwünschte Protokolloptionen verbieten, indem sie etwa in einer SMTP-Transaktion kein BDAT, VRFY o. Ä. zulassen.
Es kann sogar für ein und dasselbe Protokoll mehrere dedicated Proxys geben, beispielsweise um unterschiedliche Webdienste unter HTTP zu filtern; beispielsweise je einen pro genutzte Webanwendung in einem Unternehmen.
Eine Ausnahme bildet der Generische Proxy, auch Circuit Level Proxy genannt.
- Er findet als protokollunabhängiger Filter auf der Proxy Firewall Anwendung und realisiert dort ein port- und adressbasiertes Filtermodul, welches zudem eine (mögliche) Authentifizierung für den Verbindungsaufbau unterstützt.
- Dabei ist der Filter nicht in der Lage, die Kommunikation einzusehen, sie selbst zu führen und zu beeinflussen, da er das Kommunikationsprotokoll nicht kennt.
OSI-Schichten
Ein dedicated Proxy als Filter, der auf ein bestimmtes Protokoll spezialisiert ist, arbeitet als vermittelndes Dienstprogramm und greift daher (wie jedes Dienst- oder Anwendungsprogramm) auf die OSI-Schicht 7 (Application Layer) zu.
Der Circuit Level Proxy als generischer (protokollunabhängiger) Filter nutzt dagegen die OSI-Schicht 3 (IP-Adresse), 4 (Port) und ggf. 5 (bei Authentifizierung für den Verbindungsaufbau).
Hinweis: Entgegen einem populären Missverständnis besteht die grundlegende Aufgabe einer Application Layer Firewall nicht darin, bestimmten Applikationen (Programmen) den Zugriff zum Netz zu gewähren oder zu verbieten.
Der Name Application wurde lediglich aus dem Application Layer der OSI-Schicht 7 abgeleitet, der dafür steht, dass ein entsprechender Filter in die Nutzdaten der Netzwerkpakete hineinsehen kann.
- Die Aufgabe, den Netzwerkzugriff auf Anwendungen zu beschränken, die sich der Firewall gegenüber authentifiziert haben, fällt (wenn überhaupt) meist dem generischen Proxyfilter zu, also ausgerechnet dem Filter, der den Application Layer nicht einmal nutzt.
Grenzen: Durchtunnelung
Grundsätzlich kann jeder Dienst auf jeder Portnummer funktionieren.
- Wenn im Regelwerk der TCP-Port 80 für HTTP freigeschaltet ist, kann darüber trotzdem ein anderes Protokoll laufen.
- Es müssen nur beide Kommunikationspartner (der Client im internen Netz wie auch der Dienst auf dem Server aus dem externen Netz) entsprechend konfiguriert worden sein.
Einen Versuch, dies mithilfe der Firewall zu unterbinden, kann mit Application Layer Firewalls erfolgen.
- Sie können den Aufbau der Nutzdaten untersuchen und alle Pakete blockieren, welche nicht dem Protokoll des freigegebenen Dienstes entsprechen.
- Allerdings soll jedes Protokoll Daten übertragen, weshalb die Daten in diesem Fall lediglich entsprechend konvertiert werden müssen.
Bettet die Software die zu übertragenden Daten also in HTTP ein, ohne dabei den Standard des Protokolls zu verletzen, ist auch diese Firewall dagegen machtlos (die Gegenstelle, der Dienst auf dem Server also, muss diese Art der Konvertierung allerdings verstehen).
- Ein Tunnel nimmt eine solche Konvertierung vor.
- Manipulierte Daten können z. B.
- in Bilddaten verpackte Datenströme sein.
Tunnel bieten daher eine Methode, um die Kontrolle einer Firewall zu umgehen.
- Tunnel werden auch verwendet, um unsichere Netzwerkprotokolle mithilfe eines gesicherten und verschlüsselten Netzwerkprotokolls abhör- und manipulationssicher zu transportieren.
- Dies kann beispielsweise durch einen SSH- oder VPN-Tunnel innerhalb einer legitim freigeschalteten Verbindung geschehen.
Sowohl OpenVPN als auch viele SSH-Clients (z. B. PuTTY) sind zudem in der Lage, einen Tunnel über einen HTTP-Proxy aufzubauen, der eigentlich nur Webseiten weiterleiten sollte.
Insbesondere Skype ist ein Beispiel dafür, wie gut sich die meisten Firewalls von innen nach außen umgehen lassen.
- Solange die Benutzer aus dem internen Netz die Möglichkeit haben, auf Webseiten zuzugreifen, hat der Firewall-Administrator durch die Verschlüsselung technisch kaum eine Chance, eine Durchtunnelung zu verhindern.
Dank Whitelists, die den Zugriff auf bestimmte Server beschränken, können Firewalls das Durchtunneln immerhin stark erschweren.
- Organisationen erweitern die technischen Maßnahmen mitunter durch organisatorische Sicherheitsmaßnahmen, z. B.
- ein Verbot der bewussten Tunnelnutzung in der Sicherheitsrichtlinie, die der Mitarbeiter unterzeichnen muss.
Ein transparentes Durchdringen einer Firewall wird auch als Firewall Piercing oder FWPRC bezeichnet.
Paketfilter
Ein Paketfilter ist eine Software, die den ein- und ausgehenden Datenverkehr in einem Computernetz filtert.
- Dies dient in der Regel dem Schutz des Netzes vor Angreifern.
Ebenso wichtig wie der Schutz gegen Angreifer von Außen ist der Schutz gegen ungewollt ausgehende Pakete; damit kann man z. B.
- erschweren, dass der eigene Rechner ungewollt und unbemerkt Viren im Internet verbreitet.
- Ein Paketfilter kann Teil einer Firewall sein.
Verwendung
Paketfilter werden verwendet, um das Konzept einer Firewall umzusetzen.
Auf Routern kommen sie zum Einsatz um sogenannte Ingress-Filter zu implementieren.
- Mit solchen Filtern wird verhindert, dass Datenpakete aus oder in ein Netz gesendet werden, die ungültige Absender- oder Ziel-Adressen beinhalten.
Ist zum Beispiel an einer Router-Schnittstelle nur das Netz 10.1.1.0/24 angeschlossen, und es kommt ein Datenpaket mit der Absender-Adresse 172.16.1.42 aus diesem Netz, sollte der Router das Paket verwerfen.
- Es liegt entweder ein Konfigurationsfehler vor oder ein Angreifer versucht seine Absender-Adresse zu fälschen.
- Auch Multicast- und Broadcast-Absender-Adressen lassen sich so filtern.
Funktionsweise
Die Daten werden in einem Netz von dem sendenden Host in Datenpakete verpackt und versendet.
- Jedes Paket, das den Paketfilter passieren will, wird untersucht.
- Anhand der in jedem Paket vorhandenen Daten, wie Absender- und Empfänger-Adresse, entscheidet der Paketfilter auf Grund von Filterregeln, was mit diesem Paket geschieht.
Ein unzulässiges Paket, das den Filter nicht passieren darf, wird entweder verworfen (im Fachjargon DENY oder DROP genannt), an den Absender zurückgeschickt mit der Bemerkung, dass der Zugriff unzulässig war (REJECT), oder weitergeleitet (FORWARD oder PERMIT) beziehungsweise durchgelassen (ALLOW oder PASS).
Ein Paketfilter heißt „stateful“, wenn er für ein ausgehendes Paket automatisch eine Regel erzeugt, die in einem bestimmten Zeitfenster (im Minutenbereich) die Antwort auf dieses Paket akzeptiert.
- Kommt die Antwort nicht oder wird die Zeit überschritten, verfällt die Regel.
- Prinzipiell können solche Filter auch mit Protokollen umgehen, die auf zwei Ports arbeiten, zum Beispiel FTP.
Paketfilterbeispiel
Der Paketfilter ist für Aufgaben wie das Vergleichen von Quell- oder Zieladresse der Pakete, die die Firewall passieren, zuständig und muss dafür bestimmte Filterungen oder Reglementierungen im Datenverkehr vornehmen.
- Wenn man sich das Internet als eine gigantische Ansammlung von Häusern vorstellt, dann stellen die IP-Adressen sozusagen die Hausnummern dar.
- Unter einer bestimmten IP-Adresse kann man direkt mit einem Rechner kommunizieren.
In den einzelnen „Etagen“ dieser Rechner (gekennzeichnet mit einer Nummer, die man auch Port nennt) wohnen nun die verschiedenen Dienste wie HTTP, FTP oder SSH.
- Ein Paketfilter kann verschiedene Ports für die Besucher aus dem Internet sperren, d. h.
- jede Verbindung aus dem Internet wird an der Haustür abgewiesen.
- Durch die entsprechende Konfiguration einer Firewall kann so ein Rechnernetz vor Angriffen oder Zugriffen geschützt werden.
Ein Paketfilter definiert Regeln, die festlegen, ob einzelne oder zusammenhängende Pakete das Zugangsschutzsystem passieren dürfen oder abgeblockt werden.
- Eine solche Regel wäre zum Beispiel: Verwirf alle Pakete, die von der IP-Adresse 1.2.3.4 kommen.
- Da Angreifer jedoch von beliebigen IP-Adressen kommen können, ist es praktikabler, den umgekehrten Weg zu gehen und nur Pakete durchzulassen, die von bestimmten IP-Adressen kommen.
Prinzipiell ist dies aber auch kein wirklich sicherer Weg, da ein Übeltäter die Hausnummer ohne größere technische Probleme fälschen kann.
- Eine sichere Kommunikation z. B.
- zwischen Firmennetzen ist nur möglich, wenn Protokolle verwendet werden, die eine Authentifikation und Autorisierung der beteiligten Benutzer oder Systeme vornehmen.
Dies kann beispielsweise mit virtuellen privaten Netzwerken geschehen, oder einfacher durch sogenanntes Portknocking, bei dem der Absender zunächst eine vorher vereinbarte Folge von Paketen sendet (also praktisch mit einem bestimmten Rufzeichen an der Haustür anklopft), und der Port erst daraufhin geöffnet wird.
Implementierungen von Paketfiltern
- IPFilter portabler Paketfilter für Solaris, FreeBSD u. a.
- pf Paketfilter von allen BSD-Derivaten, vornehmlich OpenBSD, aber inzwischen auch FreeBSD und NetBSD
- ipfw Paketfilter von FreeBSD und Mac OS X
- ipfwadm (Linux 2.0)
- ipchains (Linux 2.2)
- iptables (Linux 2.4 + 2.6)
-
-
- Weblinks
-
-
- Linux netfilter/iptables Paket Filter (englisch)
- netfilter HOWTO
- PF: The OpenBSD Packet Filter (englisch)
Stateful Packet Inspection
Unter Stateful Packet Inspection (SPI), deutsche Bezeichnung "Zustandsorientierte Paketüberprüfung", versteht man eine dynamische Paketfiltertechnik, bei der jedes Datenpaket einer bestimmten aktiven Session zugeordnet wird.
Die Datenpakete werden analysiert und der Verbindungsstatus wird in die Entscheidung einbezogen.
- Bei dieser Technik, die in Firewalls eingesetzt wird, werden die Datenpakete (eigentlich: Segmente) während der Übertragung auf der Transportschicht (4. Schicht des OSI-Modelles) analysiert und in dynamischen Zustandstabellen gespeichert.
Auf Basis des Zustands der Datenverbindungen werden die Entscheidungen für die Weiterleitung der Datenpakete getroffen.
- Datenpakete, die nicht bestimmten Kriterien zugeordnet werden können oder eventuell zu einer DoS-Attacke gehören, werden verworfen.
- Firewalls mit SPI-Technik sind daher in sicherheitsrelevanten Anwendungen den reinen Paketfilter-Firewalls überlegen.
Die Firma Check Point Software Technologies Ltd. nimmt für sich in Anspruch, diese Technik erfunden und patentiert zu haben (U.S. Patent # 5,606,668).
Stateful Inspection: die Eigenschaften ausgehender Datenpakete werden in einer Statustabelle gespeichert.
- Mit dieser werden eingehende Datenpakete verglichen
Funktionsweise
Kommuniziert ein Rechner A mit einem Rechner B über einen einfachen Paketfilter (also ohne Stateful Packet Inspection), so muss dieser in seinem Regelwerk zwei Verbindungen erlauben:
- Quelle A nach Ziel B mit Dienst HTTP (für die Anfrage, z. B. „Schicke mir Webseite www.example.com“)
- Quelle B nach Ziel A mit Dienst HTTP (für die Antwortpakete, in diesem Beispiel der Inhalt von www.example.com)
Dadurch ist das Regelwerk unsicherer als eigentlich nötig, da B jederzeit an A senden darf, auch wenn A gar keine Webseite angefordert hat (Bei Netfilter kann mit Hilfe des 'Sync-Flags' verhindert werden, dass B zu A eine Verbindung aufbaut).
Bei der zustandsgesteuerten Filterung (also mit Stateful Packet Inspection) wird nur eine Regel benötigt (bzw.
- die zweite wird über eine allgemeine Regel (ESTABLISHED/RELATED) erlaubt.) Damit wird der Regelsatz wesentlich übersichtlicher:* Quelle A nach Ziel B
Der Paketfilter merkt sich, wenn Rechner A mit Rechner B kommuniziert, und erlaubt nur dann Antworten darauf von Rechner B an Rechner A.
- Rechner B kann dadurch nicht ohne Anforderung von A beginnen.
Die Regeln für Antwortpakete werden dynamisch erzeugt und nach Eintreffen der Antwort oder nach einem Timeout automatisch gelöscht.
Noch weitergehende Systeme prüfen zusätzlich, ob ein Paket zu einem bestimmten Zeitpunkt in der Kommunikation überhaupt erlaubt ist (zum Beispiel weitere Pakete schicken, obwohl der andere Teilnehmer die Kommunikation bereits abgeschlossen hat).
Stateful Inspection bei UDP-Paketen
Auf den ersten Blick sieht eine Stateful Packet Inspection bei UDP-Paketen wie ein Widerspruch aus, da UDP im Gegensatz zu TCP zustandsfrei arbeitet.
- Die meisten Implementierungen (z. B.
- Linux-Netfilter) behandeln UDP trotzdem als stateful, in dem Sinne, dass beim Versenden einer Anforderung per UDP für kurze Zeit eine dynamische Firewall-Regel für die Antwortpakete erzeugt wird.
- Im Beispiel DNS-Anfragen werden dadurch nur Antwortpakete von den Nameservern erlaubt, die man selbst gefragt hat.
Manche Programme – z. B. Skype – benutzen dies in einem als Hole Punching bezeichneten Verfahren, um durch Firewalls Point-Point-Verbindungen aufzubauen.
- Beide Teilnehmer erfahren vom Skype-Server, auf welcher IP-Adresse und welchem Port Skype bei der Gegenseite arbeitet.
- Dann schicken beide ein UDP-Paket an die Gegenseite.
Dort werden diese Pakete beim Eintreffen zwar verworfen, weil keine Input-Regel existiert, erzeugen aber auf der Firewall des ausgehenden Rechners eine Regel, die ab dann 'Antworten' erlaubt.
- Danach können beide Seiten miteinander kommunizieren.
- Mit TCP würde das nicht funktionieren, da die Firewall aufgrund von Sequenznummern echte Antwortpakete erkennen kann.
Stateful Inspection bei ICMP
Wer Ping-Anfragen senden will, aber nicht auf Ping antworten möchte, definiert zuerst eine ausgehende Regel für ICMP, und danach eine eingehende Regel, die generell alle eingehenden Pakete zulässt, für die es bereits eingehende Verbindungen gibt (RELATED).
- Die Antwort wird durchgelassen, wenn die Firewall eine bestehende Verbindung erkennt.
Dann kann er selbst pingen, erlaubt aber keinen eingehenden Ping.
- Dies funktioniert, obwohl ICMP anders als TCP ein verbindungsloses Protokoll ist.
- Verbindungslos bedeutet, dass die einzelnen Pakete in keinem Zusammenhang zueinander stehen.
Stateful Inspection bei FTP
FTP ist problematisch.
- Es werden zwei Ports, 'ftp' und 'ftp-data' (21 und 20), verwendet. 'ftp' wird für die Übertragung von Kommandos verwende, während ftp-data für Datenübertragung (Dateiinhalte oder Verzeichnisinhalte) verwendet wird.
- Hierbei gibt es zwei verschiedene Arten (active mode und passive mode), in welcher Richtung die Datenverbindung (ftp-data) aufgebaut wird.
- Im Linux-Kernel gibt es ein Kernelmodul, welches das Zusammenspiel beider Ports beherrscht.
Timeout
Sowohl TCP- als auch UDP-Verbindungen haben bei Stateful Packet Inspection immer einen zugewiesenen Timeout.
- Bei UDP, weil nicht erkennbar ist, wenn eine Verbindung beendet worden ist; bei TCP, weil es passieren kann, dass Verbindungen nicht ordnungsgemäß abgebaut werden.
- Der UDP-Timeout liegt üblicherweise im Bereich 20–40 Sekunden, bei TCP 15–60 Minuten.
Ist der Timeout nicht lang genug und werden legitime Verbindungen dadurch von der Firewall beendet, gibt es zwei Lösungsmöglichkeiten.
- Eine Verlängerung des Timeouts hilft zwar, erhöht aber auch den Speicherbedarf des Systems und reduziert die Sicherheit.
- Die bevorzugte Methode sollte daher der Einsatz von Keep-Alive-Paketen sein.
- Diese lassen sich in manchen Applikationen wie SSH-Clients oder auch im Betriebssystem konfigurieren.
Setzen des TCP-Keep-Alives unter Linux auf alle 120 Sekunden:
echo 120 > /proc/sys/net/ipv4/tcp_keepalive_time
Implementierungen von Stateful Firewalls
- Iptables (Linux ab 2.4)
- Pf (Paketfilter) (OpenBSD)
- Ipfw (FreeBSD)
- Check Point Firewall-1 (Solaris, Windows, IPSO, RHEL, SPLAT)
Weitere Funktionen und Aspekte
Anti-Spoofing (Ingress filtering)
Eine wichtige Funktion von Firewalls ist das Verhindern von IP-Spoofing.
- Da die Filterung sich wesentlich an den IP-Adressen orientiert, muss so gut wie möglich sichergestellt werden, dass diese nicht gefälscht sind.
- Firewalls mit Anti-Spoofing-Funktionalität bieten daher die Möglichkeit, bestimmten Netzwerk-Schnittstellen bestimmte IP-Adressen und Netze zuordnen zu können.
Der Internet-Schnittstelle werden dann automatisch alle IP-Adressen außer den anderweitig genutzten zugeordnet.
- IP-Pakete, die an einer falschen Schnittstelle ankommen, werden protokolliert und verworfen.
- Firewalls mit Internetanbindung können auf der Internet-Schnittstelle alle Pakete von und an Private IP-Adressen (RFC 1918) verwerfen, da diese im Internet sowieso nicht geroutet werden.
Dadurch ist ein IP-Spoofing mit diesen Adressen aus dem Internet ausgeschlossen.
- Obwohl die Zuordnung von IP-Netzen zu bestimmten Netzwerk-Schnittstellen eigentlich eindeutig sein sollte, treten in der Praxis manchmal Probleme auf mit Dual homed host und Routing-Loops (Pakete die auf Hin- und Rückweg unterschiedliche Routen nehmen).
Authentifizierung
Da der Filterung anhand von IP-Adressen wegen potenziellem IP-Spoofing niemals vollständig vertraut werden kann, bieten manche Firewalls die Möglichkeit sich authentifizieren zu lassen und erst dann bestimmte Regeln zeitbeschränkt freigeschaltet zu bekommen.
- Für eine starke Authentifizierung bieten zum Beispiel die Check Point Firewall-1 und die Juniper Networks Firewalls die Kompatibilität zu den SecurID-Token der Firma RSA Security.
Intrusion Detection und Intrusion Prevention Systeme
„Intrusion Detection Systeme“ (IDS) und „Intrusion Prevention Systeme“ (IPS) werden mitunter auf einem Firewallgerät installiert, gehören jedoch nicht zum Firewallmodul.
Während das Firewallmodul keine Angriffe erkennt, sondern lediglich dafür gedacht ist, bestimmte Kommunikationsbeziehungen – basierend auf Absender- oder Zieladresse und genutzten Diensten – zu erlauben, ergänzen diese zusätzlichen Module das System um die Eigenschaft, nun auch einen Einbruchsversuch anhand von Kommunikationsmustern zu erkennen.
Im Unterschied zum IPS kann ein IDS den Einbruch nur erkennen (Detection (engl.) = Erkennung), während ein IPS (Prevention (engl.) = Verhinderung) den unerwünschten Zugriff auch zu blockieren versucht.
Ein solches System kann mitunter auch erst die Möglichkeit für einen Denial of Service-Angriff schaffen.
- So legen manche Systeme eine temporäre Firewall-Regel an, die alle weiteren Verbindungsversuche von der vermeintlichen angreifenden IP-Adresse blockieren.
Schickt aber nun ein Angreifer Pakete mit einer gefälschten Absender-Adresse an das System, so kann er damit erreichen, dass der Zugriff auf die gefälschte Adresse nicht mehr möglich ist.
- So kann er nacheinander sämtliche Adressen von dem angegriffenen System abschotten, die dieses für seine Arbeit benötigt (DNS-Server usw.).
Hochverfügbarkeit
Durch die Bedeutung des Internets sind Firewalls in vielen Firmen mittlerweile zu kritischen Netzwerkkomponenten geworden und stellen teilweise sogar einen Single Point of Failure für wichtige Geschäftsprozesse dar.
- Daher wird durch Hochverfügbarkeits-Techniken wie Failover- oder Cluster-Betrieb versucht, das Risiko eines Ausfalls zu reduzieren.
Ein weiterer Vorteil dieser Techniken ist, dass einzelne Firewalls zu Wartungszwecken oder für Software-Aktualisierungen abgeschaltet werden können, ohne die Verbindung zu unterbrechen.
Zur Umsetzung werden oft die gleichen Lösungen wie bei hochverfügbaren Routern eingesetzt (beispielsweise HSRP, VRRP oder CARP) oder spezielle Produkte wie Rainwall von EMC2.
Für den Failover-Fall gibt es zwei Möglichkeiten, wie die übernehmende Stateful Inspection-Firewall mit den bestehenden Verbindungen umgeht.
- Eine Methode ist, dass alle Firewalls permanent ihre dynamische Verbindungstabellen untereinander synchronisieren, damit ist jede Firewall in der Lage alle Verbindungen korrekt zuzuordnen.
Das andere Verfahren arbeitet ohne Abgleich, aber alle bestehenden Verbindungen werden nach dem Wechsel von der übernehmenden Firewall nochmals gegen das Regelwerk geprüft.
- Diese Lösung ist einfacher, bereitet aber Probleme bei komplexen Protokollen wie aktivem FTP.
- Da die hierbei ausgehandelten Ports für die Daten-Verbindungen zufällig sind, kann die übernehmende Firewall diese Pakete keiner Regel zuordnen und wird sie verwerfen.
Eine Synchronisation der Verbindungstabellen bieten unter anderem die Firewalls von Check Point, OpenBSD (über pf_sync) und Linux (über ct_sync).
Hochsicherheitsumgebungen
Eine hundertprozentige Sicherheit gibt es nicht, erst recht nicht gegen sämtliche nur denkbaren Angriffsformen.
- Auch eine gut konfigurierte Firewall stellt keinen Sicherheitsmechanismus dar, der nicht über kurz oder lang überwunden werden kann.
- Bestenfalls lässt sich die Barriere zu einer großen Herausforderung für einen Eindringling gestalten, die so groß ist, dass sich der Angriff für ihn nicht lohnt.
Verschiedene Installationen haben verschiedene Sicherheitsanforderungen.
- Beispielsweise bei Banken, Börse, Militär usw.
- gibt es ein hohes Sicherheitsbedürfnis.
Es ist wichtig zunächst herauszufinden, gegenüber welchen Szenarien man ein bestimmtes Maß an Sicherheit erreichen will.
Wenn es beispielsweise darum geht, die Ausnutzung von Sicherheitslücken innerhalb der Firewall zu minimieren, können mehrstufige Lösungen helfen.
- Im Extremfall könnte ein Netzwerkpaket beispielsweise mehrere hintereinander geschaltete Firewallsysteme mit weitestgehend gleicher Konfiguration passieren, die verschiedene Hardwarearchitekturen und verschiedene Betriebssystem- und Firewallsoftware verwenden.
- So verlieren systembedingte Fehler oder eventuell von Programmierern/Herstellern eingebaute Hintertüren einen Großteil ihrer Wirksamkeit.
Bei Softwareprodukten ist eine freie Einsicht in deren Quellcode ein Aspekt der Computersicherheit, so auch bei einer Firewallsoftware.
- Dabei gilt es unter anderem die Gefahr zu minimieren, dass ein Produkt Funktionalitäten enthalten kann, von denen der Anwender nichts wissen soll.
- Die Verfügbarkeit von Open Source-Produkten lassen es zu, dass ein Audit und eine eigene Übersetzung des Quellcodes durchgeführt werden kann.
Stellt die Durchtunnelung ein Risiko dar, welches minimiert werden soll, kann dies eventuell durch die Regelung des Verkehrs explizit durch Whitelists umgesetzt werden.
- In einer Hochsicherheitsumgebung bietet es sich ohnehin an, jeglichen Verkehr, der nicht unbedingt benötigt wird, zu unterbinden.
Virtual Local Area Networks
Moderne Firewalls unterstützen Virtual Local Area Networks (VLANs), d. h. über eine physische Netzwerkschnittstelle lassen sich mehrere logische Netze erreichen.
- Dadurch lassen sich mehr Netze an die Firewall anschließen, als das physikalische Limit an Netzwerk-Interfaces erlaubt.
Die Benutzung von VLANs ist unter Umständen billiger, als weitere Netzwerkschnittstellen für die Firewall zu kaufen.
- Ein weiterer Vorteil ist, dass zur Verbindung neuer Netze allein eine Software-Konfiguration von Firewall und den weiteren Netzwerkkomponenten ausreicht; es müssen keine neuen Kabel gezogen werden.
Nachteilig ist, dass alle VLANs die Kapazität der LAN-Verbindung teilen.
- Sicherheitstechnisch bedenklich ist, dass die Trennung der verschiedenen Netze nicht der Hoheit der Firewall unterliegt; das System ist somit leichter kompromittierbar.
In einem solchen Fall ist die Firewall auf die Zusammenarbeit mit den eingesetzten Netzwerkkomponenten angewiesen.
- Diese Komponenten sind in der Regel aber keine gehärteten Systeme und bieten oft zusätzliche Angriffsflächen (WWW, SNMP, Telnet usw.).
- Folglich sind sie für Sicherheitslösungen nicht oder nur bedingt geeignet.
Sicherheitsprobleme können aus verschiedenen Gründen auftauchen: durch eine fehlerhaft arbeitende Netzwerkkomponente, durch eine falsche Konfiguration der Komponente (z.
- B.
- SNMP), eine fehlerhafte Implementierung oder Konfiguration der VLAN-Trennung oder auch durch einen Einbruch in die Administration des Netwerkgerätes.
Möglicherweise wird auch ein Konfigurations-Reset einer Komponente nicht sofort auffallen, denn beispielsweise viele Switches transportieren VLAN-Pakete (solche mit VLAN-TAGs) auch ohne eine entsprechende VLAN-Konfiguration.
- Weiter können beispielsweise durch Einschleifen eines Hubs LAN-Segmente des VLANs gleichzeitig und unbemerkt abgehört werden.
Auf der WAN-Seite können VLANs wertvolle Dienste leisten, im Bereich der DMZ sind die Nachteile je nach Umgebung mitunter noch akzeptabel; in einer sicherheitsrelevanten Umgebung werden die Nachteile jedoch überwiegen.
Routing und Multicast
Die meisten Firewalls sind als Router aufgebaut.
- Das ist gerade im SoHo-Bereich praktisch, denn zum Anschluss mehrerer Rechner wird dort üblicherweise ein Router mit kombinierter NAT- und PPPoE-Funktionalität benötigt.
- Bei Firmennetzwerken wird oft auch die Routingfunktionalität gewünscht, denn hier ersetzt die Routing-Firewall das früher übliche "default Gateway".
Genauso wie das Routing hängt die IP-Multicasting-Fähigkeit einer Firewall vom Betriebssystem des Gerätes ab, auf dem die Firewallsoftware läuft.
- Die Regeln werden mit den Multicast-Adressen (224.0.0.0–239.255.255.255) eingetragen.
- Weitere Aspekte sind in RFC 2588 beschrieben.
Ergänzende Technologien
Intrusion Detection und - Prevention
„Intrusion Detection Systeme“ (IDS) und „Intrusion Prevention Systeme“ (IPS) erkennen einen Einbruchsversuch anhand von Kommunikationsmustern.
- Der Unterschied ist, dass ein IDS den Angriff nur erkennt (Detection (engl.) = Erkennung) und ein IPS (Prevention (engl.) = Verhinderung) den Angriff zu blockieren versucht.
Diese Systeme gehören zwar nicht zum Firewall-Modul, können dieses aber ergänzen und werden daher vermehrt in eine Firewall-Lösung als zusätzliche Funktion aufgenommen.
- Einige Firewall-Systeme bieten Erweiterungsmöglichkeiten, um ein IDS nachzurüsten, unter anderem über Slots für Erweiterungsmodule.
- Diese Module sind mitunter eigenständige Recheneinheiten mit CPU und Arbeitsspeicher, da diese Funktion je nach Aufgabenfeld eine rechenintensive Leistung erfordern kann.
Das Themenfeld, Angriffe zu erkennen und darauf automatisiert zu reagieren, ist sehr komplex.
- Ein unbedachtes Konzept, eine schlechte Implementierung oder eine ungünstige Konfiguration kann unter Umständen erst die Möglichkeit für einen Denial-of-Service-Angriff schaffen.
- So legen manche Systeme eine temporäre Firewall-Regel an, die alle weiteren Verbindungsversuche von der vermeintlichen angreifenden IP-Adresse blockieren.
Schickt aber nun ein Angreifer Pakete mit einer gefälschten Absender-Adresse an das System (siehe IP-Spoofing), so kann er damit erreichen, dass der Zugriff auf die gefälschte Adresse nicht mehr möglich ist.
- Wurden hierfür keine Ausnahmen definiert, so kann er nacheinander sämtliche Adressen von dem angegriffenen System abschotten, die dieses für seine Arbeit benötigt (DNS-Server, usw.).
Weitere mögliche Funktionen
Folgende Funktionen können auf einem Firewall-Gerät noch Anwendung finden:* Endpunkt für VPN-Verbindungen
- Berücksichtigung von Quality of Service bei der Verarbeitungspriorität
- Etherchannel (je nach Hersteller auch Link- oder Port-Aggregation, Bonding oder Trunking genannt), um mehrere physikalische Interfaces zu einem schnellen logischen Interface zusammenzufassen, beispielsweise zwei 100 MBit-Interfaces zu 200 MBit.
Portweiterleitung
Eine Portweiterleitung (englisch Port Forwarding) ist die Weiterleitung einer Verbindung, die über ein Rechnernetz auf einen bestimmten Port eingeht, zu einem anderen Computer.
- Da der entsprechende Netzwerkdienst nicht von dem weiterleitenden Computer selbst geleistet wird, benutzt man hier auch irreführend den Begriff Virtueller Server.
Die eingehenden Datenpakete werden hierbei per Destination NAT und die ausgehenden Pakete per Source NAT maskiert, um sie an den anderen Rechner weiterzuleiten bzw.
- den Anschein zu erwecken, die ausgehenden Pakete kämen von dem Computer, der die Portweiterleitung betreibt.
Portweiterleitung durch Router
Ein Router, der beispielsweise mit einem privaten lokalen Netz und dem Internet verbunden ist, wartet dabei an einem bestimmten Port auf Datenpakete.
- Wenn Pakete an diesem Port eintreffen, werden sie an einen bestimmten Computer und gegebenenfalls einen anderen Port im internen Netzwerk weitergeleitet.
Alle Datenpakete von diesem Computer und Port werden, wenn sie zu einer eingehenden Verbindung gehören, per Network Address Translation (NAT) so verändert, dass es im externen Netz den Anschein hat, der Router würde die Pakete versenden.
Durch Portweiterleitung wird es Rechnern innerhalb eines LAN – welche von einem externen Netz nicht direkt erreichbar sind – somit möglich, auch außerhalb dieses Netzes, insbesondere auch im Internet als Server zu fungieren, da diese somit über einen festgelegten Port (und mittels NAT) eindeutig ansprechbar gemacht werden.
Für alle Rechner im externen Netz sieht es so aus, als ob der Router den Serverdienst anbietet.
- Dass dem nicht so ist, lässt sich anhand von Header-Zeilen oder Paketlaufzeitanalysen erkennen.
Beispiel: Eine größere Firma besitzt ein lokales Netzwerk, wobei mehrere Server nach Außen (Internet) per ADSL-Router unter einer IP-Adresse (z. B. 205.0.0.1) auftreten.
- Jetzt möchte ein Client aus dem externen Netz (Internet) einen Dienst (z. B.
- HTTP/TCP Port 80) auf einem Server der Firma nutzen.
- Er kann jedoch nur den ADSL-Router der Firma für den Dienst (HTTP/TCP Port 80) unter der ihm bekannten IP-Adresse (205.0.0.1) ansprechen.
- Der ADSL-Router der Firma leitet die Anfrage für den Dienst (HTTP/TCP Port 80) an den entsprechenden Server im lokalen Netzwerk weiter.
Eine Portweiterleitung wird also benötigt, wenn kein Port Address Translation (PAT) möglich ist, da die erste Anfrage von Außen (z. B.
- Internet) kommt und mehrere Server nur unter einer IP-Adresse von außen ansprechbar sind.
Portweiterleitung zur Verbesserung der Sicherheit
Ein anderes Anwendungsbeispiel für eine Portweiterleitung ist die Sicherung eines Kanals für die Übertragung vertraulicher Daten.
- Dabei wird Port A auf Rechner 1 mit Port B auf Rechner 2 verknüpft durch eine im Hintergrund aufrechterhaltene Verbindung zwischen zwei anderen Ports der beiden Rechner.
- Dies bezeichnet man auch als Tunneling.
So kann beispielsweise eine unsichere POP3-Verbindung (Login und Passwort werden in der Regel im Klartext übertragen) durch den Transport in einem SSH-Kanal abgesichert werden: Der Port 113 auf dem POP-Server wird per SSH an den Port 113 des lokalen Rechners des Anwenders weitergeleitet.
Das lokale E-Mail-Programm kommuniziert nun mit dem lokalen Port (localhost:113) statt mit dem Port des Servers (pop.example.org:113).
- Der SSH-Kanal transportiert dabei die Daten verschlüsselt über die parallel bestehende SSH-Verbindung zwischen den zwei Adressen.
- Das Abgreifen des Passworts durch einen mithörenden Dritten wird dadurch nahezu unmöglich.
- Voraussetzung für einen SSH-Tunnel ist ein zumindest eingeschränkter SSH-Zugang auf dem Server (pop.example.org), was Privatanwendern im Allgemeinen nicht gestattet wird.
Port Triggering
Port Triggering ist eine Technik, die das Port Forwarding erweitert.
Beim Port Forwarding werden Daten, die auf bestimmten TCP/IP-Ports eingehen, auf eine einzelne IP-Adresse weitergeleitet.
- Es ist nicht möglich, einen Port oder Portbereich auf mehrere lokale Adressen zu leiten.
- Die Weiterleitung ist statisch, d. h.
- es wird immer auf die gleiche IP-Adresse weitergeleitet.
Beim Port Triggering legt man die Ports fest, über die die Daten des Programms nach außen gesendet werden und zusätzlich, über welche Ports die Antworten wieder eingehen.
- Wenn ein Rechner über eine Anwendung, deren Ports im Port Triggering festgelegt wurden, Daten ins Internet sendet, merkt sich der Router die IP-Adresse dieses Rechners und leitet die Antworten, die wieder eingehen, entsprechend an diese IP-Adresse weiter (zurück).
- Die Weiterleitung ist dynamisch, d. h.
- es wird immer an die IP-Adresse weitergeleitet, von der die Anforderung kam.
Allerdings ist es auch beim Port Triggering nicht möglich, ein und denselben Port auf mehrere Rechner gleichzeitig im lokalen Netz weiterzuleiten! Port Forwarding ist für FTP, Web-Server oder andere Server-basierende Anwendungen geeignet.
- Ein Request aus dem Internet wird immer an den richtigen Server weitergeleitet.
Der Port ist immer offen, auch wenn der Dienst nicht benutzt wird.
- Im Gegensatz dazu erlaubt Port Triggering den eingehenden Datenverkehr erst, nachdem ein Rechner aus dem lokalen Netz einen entsprechenden Request in Richtung Internet gesendet hat.
- Der Port wird nur temporär für diesen Rechner geöffnet.
- Nach einer gewissen Zeitspanne der Inaktivität wird er automatisch wieder geschlossen.
Vorteile dieser Technik
Hieraus ergeben sich 2 Vorteile:* Erhöhte Sicherheit: die eingehenden Ports sind nicht die ganze Zeit geöffnet.
- Das Forwarding muss nicht mehr konfiguriert werden: Es ist nicht mehr nötig, feste interne IP-Adressen für das Forwarding der Ports anzugeben, da diese IP-Adresse durch den ausgehenden Datenverkehr auf dem Trigger-Port ermittelt werden kann.
Port Triggering in Verbindung mit VoIP
Wird Port Triggering auf einen Port gelegt auf dem VoIP betrieben wird, kann es sein, dass der VoIP Dienst nur noch erreichbar ist, wenn vorher ein ausgehender Anruf getätigt wurde.
- Sobald der Port wieder geschlossen wird (siehe oben) ist es wieder nicht möglich, eingehende Anrufe zu empfangen.
- Einige VoIP Endgeräte unterstützen daher die Aufrechterhaltung der Weiterleitung durch den Versand von Pseudo-Datenpaketen.
Network Address Translation
Network Address Translation (NAT) ist in Rechnernetzen der Sammelbegriff für Verfahren, die automatisiert Adressinformationen in Datenpaketen durch andere ersetzen, um verschiedene Netze zu verbinden.
- Daher kommen sie typischerweise auf Routern zum Einsatz.
NAT-Typen
NAT wird in Source-NAT und Destination-NAT unterteilt.
- Während beim Source-NAT die Adresse des Computers umgeschrieben wird, der die Verbindung aufbaut, wird beim Destination-NAT die Adresse des angesprochenen Computers verändert.
Verwendung von NAT
Verwendung von Source-NAT
Große Verbreitung fand Source-NAT durch die Knappheit öffentlicher IPv4-Adressen und die Tendenz, private Subnetze mit dem Internet zu verbinden.
- Die einfachste Lösung dieses Problems war oft die durch NAT mögliche Verwendung mehrerer privater IP-Adressen mit nur einer öffentlichen IP-Adresse, wobei die Abbildung auf diese aufgrund der 16 Bit breiten Portnummern auf etwa 65.000 Sitzungen (Port-Address-Translation Einträge) beschränkt bleibt (siehe Nachteile).
Gerade in privaten oder möglichst preisgünstig ausgeführten Netzinstallationen wird Source-NAT als eine Art Sicherheitsmerkmal und zur Trennung von internem und externem Netz eingesetzt.
- Während eine NAT-Installation oberflächlich tatsächlich diese gewünschte Wirkung erzielt, kann sie weder Sicherheitsinfrastruktur noch wirksame Maßnahmen zur Trennung von Netzen ersetzen.
- So wird die Source-NAT-Funktion eines Routers im professionellen Bereich oft durch ein zusätzlich betriebenes Application Layer Gateway (ALG) unterstützt.
Verwendung von Destination-NAT
Destination-NAT wird beispielsweise verwendet, um mehrere, unterschiedliche Serverdienste, die auf verschiedenen Computern betrieben werden, unter einer einzigen IP-Adresse anzubieten.
Auch wird es manchmal bei Hot Spots benutzt, um Zugriffe auf Webseiten vor der Anmeldung auf den Rechner umzuleiten, der die Anmeldung anbietet.
Funktionsweise
NAT-Router, NAT-Session und NAT-Table
Ein System mit NAT-Funktion ist zustandsbehaftet und wird auch als NAT-Router bezeichnet.
- Für jede Verbindung, die ein NAT-Router aufbaut, startet er eine NAT-Session.
- Die zugehörigen Verbindungsinformationen (IP-Adressen, Ports und Timeouts) speichert er in seiner NAT-Table.
Anhand der gespeicherten Informationen kann der NAT-Router das jeweilige Antwort-Datenpaket dem jeweiligen Client korrekt zuordnen.
- Nach Ablauf einer NAT-Session wird ihr Eintrag aus der NAT-Table gelöscht.
- Die Anzahl der Sessions, die ein NAT-Router gleichzeitig offen halten kann, ist durch die Leistungsfähigkeit der jeweils im NAT-Router eingesetzten Hard- und Software begrenzt.
Source NAT
Bei jedem Verbindungsaufbau durch einen internen Client wird die interne Quell-IP-Adresse durch die öffentliche IP-Adresse des Routers ersetzt.
- Außerdem wird der Quellport des internen Clients durch einen freien Port des Routers ersetzt, der dadurch belegt wird.
- Diese Zuordnung wird in der NAT-Table des Routers gespeichert.
- Der Vorgang wird als PAT (Port and Address Translation) bezeichnet.
lokales Netz (LAN) | öffentliches Netz (WAN) | |||
Quelle | Ziel | Router===== = =====>NAT | Quelle | Ziel |
192.168.0.2:4701 | 170.0.0.1:80 | 205.0.0.2:6787 | 170.0.0.1:80 | |
192.168.0.3:5387 | 170.0.0.1:80 | 205.0.0.2:8709 | 170.0.0.1:80 | |
192.168.0.4:1001 | 170.0.0.1:23 | 205.0.0.2:4806 | 170.0.0.1:23 |
Source-NAT und IP-Routing am Beispiel
In diesem Beispiel nutzt das private Netz die IP-Adressen 192.168.0.0/24.
- Zwischen diesem Netz und dem öffentlichen Internet befindet sich ein Source-NAT-Router mit der öffentlichen Adresse 205.0.0.2/32.
Allgemein ist immer dann ein Routing erforderlich, wenn Absender und Empfänger in verschiedenen Netzen liegen.
- Möchte eine über einen Source-NAT-Router angebundene Station ein Paket an einen Empfänger außerhalb ihres privaten Netzes senden, beispielsweise an einen Telnet-Server irgendwo entfernt im Internet, so funktioniert der Kommunikationsprozess (vereinfacht dargestellt) wie folgt:
Zuerst ermittelt die Station den für das gewünschte Ziel nächstgelegenen Router (siehe Routingtabelle), das sei hier der Source-NAT-Router, dann ermittelt die Station per ARP dessen MAC-Adresse und baut ein Paket wie folgt zusammen:
Es erhält als Ziel-MAC-Adresse die MAC-Adresse des Source-NAT-Routers, die Ziel-IP-Adresse des Empfängers (hier 170.0.0.1), die Ziel-Portadresse 23 für den Telnet-Server sowie die MAC- und IP-Adresse des Absenders (hier 192.168.0.4) und einen Absenderport (irgendein gerade freier Port, hier 1001) für die gerade anfragende Telnet-Sitzung sowie andere Daten.
- Der Source-NAT-Router empfängt und verarbeitet das Paket, weil es an seine MAC-Adresse gerichtet ist.
Bei der Verarbeitung im Router wird das Paket in abgeänderter Form weitergeleitet: der Router ermittelt anhand der Empfänger-IP-Adresse den nächsten Router, ermittelt per ARP dessen MAC-Adresse und baut das Paket wie folgt um:
Es erhält nun abweichend die MAC-Adresse des nächsten Routers, die Ziel-IP-Adresse des Empfängers (170.0.0.1), Ziel-Port 23 sowie die öffentliche MAC- und IP-Adresse des Source-NAT-Routers (205.0.0.2), einen gerade freien Absender-Port aus dem Reservoir des Routers (hier 4806) und den Nutzdaten, die gleich bleiben.
Diese Zuordnung der ursprünglichen Absenderadresse und des Ports (192.168.0.4:1001) zum jetzt enthaltenen Adress-Tupel (205.0.0.2:4806) wird im Router solange gespeichert, bis die Telnet-Sitzung abläuft oder beendet wird.
- Bei NAT wird das Paket auf Schicht 3 (IP) also deutlich verändert.
Bei der Bearbeitung in nachfolgenden IP-Routern wird das Paket lediglich auf Schicht 2 verändert: Der Router ermittelt den nächsten Router, ermittelt per ARP dessen MAC-Adresse und baut das Paket wie folgt um:
Es erhält nun abweichend als Ziel-MAC-Adresse die MAC-Adresse des nächsten Routers und die Absender-MAC-Adresse wird gegen die eigene ausgetauscht.
- Die IP-Adresse des Empfängers (170.0.0.1), Ziel-Port 23 sowie die Absender-IP-Adresse des Source-NAT-Routers (205.0.0.2), dessen Absender-Port 4806 und die Nutzdaten bleiben erhalten.
Das bedeutet: Auf Schicht 3 (IP) wird das Paket hier nicht verändert.
- Dieser Vorgang wiederholt sich, bis ein letzter Router die Zielstation in einem direkt angeschlossenen Netz findet; dann setzt sich das Paket wie folgt zusammen:
es erhält als Absender-MAC-Adresse die des letzten Routers, als Ziel die MAC-Adresse der Zielstation, die IP-Adresse des Empfängers (= Zielstation, 170.0.0.1), Ziel-Port 23 sowie die IP-Adresse des Absender-Source-NAT-Routers (205.0.0.2), dessen Absender-Port 4806 und natürlich Nutzdaten.
Nach erfolgreicher Verarbeitung durch den Telnet-Server wird die Rückantwort dann wie folgt zusammengestellt: MAC-Adresse des für den Rückweg zuständigen Routers (wobei Hin- und Rückroute nicht unbedingt identisch sein müssen), die IP-Adresse des anfragenden Source-NAT-Routers (205.0.0.2), die Ziel-Portadresse 4806 sowie die MAC- und IP-Adresse des Telnet-Servers (170.0.0.1) und dessen Absenderport, sowie Antwort-Daten.
Nachdem alle Router durchlaufen wurden, wird daraus schließlich im Source-NAT-Router (205.0.0.2): MAC-Adresse und IP-Adresse des anfragenden Rechners (hier 192.168.0.4), und dessen Portadresse 1001 sowie die MAC des Source-NAT-Routers und IP-Adresse des Telnet-Servers (170.0.0.1) und dessen Absenderport, sowie Antwort-Daten.
- Wird diese Telnet-Sitzung beendet, wird auch Port 1001 wieder freigegeben.
Destination NAT
Bei jedem Verbindungsaufbau durch den Client wird die Ziel-IP-Adresse durch die des eigentlichen Empfängers im LAN ersetzt.
- Außerdem wird der Zielport durch einen freien Port des Routers ersetzt, der dadurch belegt wird.
- Diese Zuordnung wird in der NAT-Table des Routers gespeichert.
öffentliches Netz (WAN) | lokales Netz (LAN) | |||
Quelle | Ziel | Router===== = =====>NAT | Quelle | Ziel |
170.0.0.1:1001 | 171.4.2.1:80 | 170.0.0.1:1001 | 192.168.0.2:80 | |
170.0.0.1:1001 | 171.4.2.1:22 | 170.0.0.1:1001 | 192.168.0.3:22 | |
170.0.0.1:1001 | 171.4.2.1:81 | 170.0.0.1:1001 | 192.168.0.3:81 |
Kategorisierung
RFC 3489, der das Protokoll STUN zur Traversierung von NAT-Gateways beschreibt, ordnet diese in vier verschiedene Klassen ein, die auch außerhalb des Kontexts von STUN gerne zur Klassifizierung verwendet werden:
Datei:Grafik20.png | Im Full Cone NAT-Szenario setzt ein Gateway interne Adressen und Ports nach einem statischen Muster in eine externe Adresse und deren Ports um.
|
Im Restricted Cone NAT-Szenario erlaubt das Gateway die Kontaktaufnahme eines externen mit einem internen Host nur, wenn diesem Verbindungsversuch eine Kontaktaufnahme dieses internen Hosts mit dem externen Host vorausging. | |
Datei:Grafik22.png | Das Port Restricted Cone NAT-Szenario schränkt diese Erlaubnis der Kontaktaufnahme zusätzlich auf nur den externen Port ein, über den die vorausgehende umgekehrte Kontaktaufnahme stattfand. |
Datei:Grafik23.png | Im Symmetric-NAT-Szenario schließlich ist eine Initiierung von Verbindungen durch externe Hosts nicht oder kaum möglich, da diese im Allgemeinen nicht abschätzen können, über welche von mehreren externen Adressen des Gateways Verbindungen zu (oder von) ihnen abgewickelt bzw.
|
Diese prototypischen Grundszenarien bilden in modernen NAT-Systemen allerdings oft nur noch Anhaltspunkte zur Klassifizierung punktuellen Verhaltens der Gateways.
- Diese benutzen teilweise Mischformen der klassischen Ansätze zur Adressumsetzung oder wechseln dynamisch zwischen zwei oder mehreren Verhaltensmustern.
Vorteile
- IP-Adressen eines Netzes können vor einem anderen Netz verborgen werden.
- Somit kann NAT zur Verbesserung der Netzwerksicherheit eingesetzt werden.
Nachteile
- NAT wird oft nur als eine Notlösung betrachtet, um bei nicht dauerhaft verbundenen Netzinstallationen das Problem der knappen IPv4-Adressen zu umgehen.
- Das größte Problem an NAT ist, dass die saubere Zuordnung „1 Host mit eindeutiger IP-Adresse“ nicht eingehalten wird.
- Durch die Umschreibung von Protokoll-Headern, die einem Man-in-the-middle-Angriff ähnelt, haben so insbesondere ältere Protokolle und Verschlüsselungsverfahren auf Netzwerk- und Transportebene durch diesen Designbruch Probleme (z. B. IPsec-AH).
- Protokollkomplikationen durch NAT werden in RFC 3027 beschrieben.
- Ebenso leiden insbesondere Netzwerkdienste, die Out-of-Band-Signalisierung und Rückkanäle einsetzen, etwa IP-Telefonie-Protokolle, unter Komplikationen durch NAT-Gateways.
- NAT-Gateways heben die strenge Trennung des OSI-Schichtenmodells auf.
- Ende-zu-Ende-Konnektivität wird gebrochen, da die NAT-Übergabestelle das Ziel eingehender Verbindungen nicht automatisch ermitteln kann.
NAT-Traversal
NAT-Traversal (z.T.
- als NAT-Durchdringung übersetzt) bezeichnet Techniken zum Aufbau und Halten von Verbindungen über NAT-Übergabestellen hinweg.
- Network Address Translation bricht die Ende-zu-Ende-Konnektivität.
- Daher benötigen typischerweise Anwendungen, die von Client zu Client verbinden (zum Beispiel bei Peer-to-Peer- und IP-Telefonie-Anwendungen oder Netzwerkspiele) NAT-Durchdringungstechniken.
Es existieren mehrere Techniken, derer nicht jede in jeder Situation funktioniert, da das Verhalten von NAT nicht standardisiert ist.
- Viele Techniken benötigen die Hilfe eines für beide Parteien direkt öffentlich zugänglichen Servers.
Manche Methoden nutzen einen solchen Server nur für den Verbindungsaufbau, andere leiten allen Verkehr der Verbindung über diesen Hilfs-Server, was die Kosten der Datenübertragung sowie die Latenz erhöht und somit für Echtzeit-Anwendungen nachteilig ist.
Die meisten verhaltensbasierten Methoden umgehen Unternehmens-Sicherheitsrichtlinien.
- Daher werden in Unternehmensnetzwerken Techniken bevorzugt, die sich ausdrücklich kooperativ mit NAT und Firewalls integrieren und administrative Eingriffe an der NAT-Übergabestelle erlauben.
- Deshalb sind die vielversprechendsten Standards Realm-Specific IP und Middlebox Communication (MIDCOM).
SOCKS, das älteste Protokoll zur NAT-Durchdringung, ist weiterhin weit verbreitet.
- In der Heimanwendung oder bei kleinen Büros wird von den meisten NAT-Übergabestellen Universal Plug and Play (UPnP) unterstützt. NAT-T ist gebräuchlich bei IPsec-VPN-Clients, um Encapsulating-Security-Payload-Pakete durch die NAT zu bringen.
Spezifikationen
- RFC 2663 IP Network Address Translator (NAT) Terminology and Considerations (englisch)
- RFC 2766 Network Address Translation - Protocol Translation (NAT-PT) (englisch)
- RFC 3022 Traditional IP Network Address Translator (Traditional NAT) (englisch)
Port Address Translation
Port and Address Translation (PAT) oder Network Address Port Translation (NAPT) ist eine Technik, die in Computernetzwerken verwendet wird.
- Sie ist eine spezielle Form von NAT (1 zu n NAT).
Dabei werden im Gegensatz zu NAT nicht nur die IP-Adressen, sondern auch Port-Nummern umgeschrieben.
- PAT wird eingesetzt, wenn mehrere private IP-Adressen aus einem LAN zu einer öffentlichen IP-Adresse übersetzt werden sollen.
Beispiel
Angenommen für das lokale Netz 192.168.0.0/24 steht die öffentliche IP-Adresse 205.0.0.2 zur Verfügung.
Ausgehende Pakete (LAN → WAN)
lokales Netz (LAN) | öffentliches Netz (WAN) | |||
Quell IP:Port | Ziel IP:Port | Router===========>Port Translation | Quell IP:Port | Ziel IP:Port |
192.168.0.2:5000 | 170.0.0.1:80 | 205.0.0.2:6000 | 170.0.0.1:80 | |
192.168.0.3:5000 | 170.0.0.1:80 | 205.0.0.2:6001 | 170.0.0.1:80 | |
192.168.0.5:5001 | 170.0.0.1:80 | 205.0.0.2:6002 | 170.0.0.1:80 |
Die Quell-IP-Adressen werden durch die (einzige) öffentliche IP-Adresse ersetzt.
- Die internen Port-Nummern werden durch eindeutige öffentliche Port-Nummern ersetzt.
- Mittels einer Tabelle merkt sich der Router jeweils die interne Quell-IP-Adresse samt Port-Nummer und die öffentliche Port-Nummer des ausgehenden Pakets:* 192.168.0.2:5000 ⇔ 6000
- 192.168.0.3:5000 ⇔ 6001
- 192.168.0.5:5001 ⇔ 6002
Wie im Beispiel ersichtlich, funktioniert dies auch, wenn mehrere Geräte gleichzeitig dieselbe IP mit demselben Port aufrufen.
- Zwar haben die Datenpakete alle die gleiche Ziel-IP und den gleichen Ziel-Port, jedoch werden die Antworten an die Quell-IP gesendet, mit jeweils unterschiedlichen Ports.
Das aufrufende Gerät (Router oder ähnliches) kann nämlich eine HTTP Anfrage über den Port 80 stellen, dabei aber selbst als eigenen Port den Port 6001 angeben.
- Die Antwort vom HTTP-Server erfolgt dann an den Router auf dem Port 6001 und dieser übersetzt zurück auf die passende IP und den Port des aufrufenden Geräts.
Eingehende Pakete (LAN ← WAN)
lokales Netz (LAN) | öffentliches Netz (WAN) | |||
Quell IP:Port | Ziel IP:Port | Router<===========Port Translation | Quell IP:Port | Ziel IP:Port |
170.0.0.1:80 | 192.168.0.2:5000 | 170.0.0.1:80 | 205.0.0.2:6000 | |
170.0.0.1:80 | 192.168.0.3:5000 | 170.0.0.1:80 | 205.0.0.2:6001 | |
170.0.0.1:80 | 192.168.0.5:5001 | 170.0.0.1:80 | 205.0.0.2:6002 |
Bei eingehenden Paketen kann anhand der Port-Nummer der Ziel-IP und des Tabelleneintrags (connection tracking) festgestellt werden, welcher Computer die Pakete angefordert hatte (hier: 192.168.0.2, 192.168.0.3 und 192.168.0.5).
Der Router kann dadurch die Ziel-IP durch die ursprüngliche Quell-IP 192.168.0.2, 192.168.0.3 bzw. 192.168.0.5 und die öffentliche Port-Nummer durch die ursprüngliche interne Port-Nummer austauschen.
Da hier jede IP-Adresse zu einer einzigen IP-Adresse übersetzt wird, spricht man von einer N:1-Übersetzung.
- Werden mehrere IP-Adressen zu weniger IP-Adressen abgebildet, dann handelt es sich um eine N:M-Übersetzung.