tag_error <txp:output_form form="piwik_code" /> ->  Textpattern Notice: Baustein nicht gefunden: piwik_code  on line 1598
Paketfilter, NAT-Router und die Sicherheit beim Internetzugang

Paketfilter, NAT-Router und die Sicherheit beim Internetzugang


Es war eine längere Diskussion in den Newsgruppen de.comp.security.misc und de.comp.security.firewall, deren Inhalte schließlich unter anderem in diesem Beitrag mündeten. Dazu vorab einmal allen Teilnehmern einen herzlichen Dank. Diese Diskussion hatte jedenfalls bei mir zu einer gewissen Klarheit in den unterschiedlichen Begriffsdefinitionen geführt und auch zu dem Verständnis dafür, dass es unsichere Router auf dem Markt gibt und warum dies der Fall ist.

Zur Fragestellung

Doch beginnen wir einfach einmal mit einem Zitat aus den FAQ’s der Newsgruppe de.comp.security.firewall, die seinerzeit auf Grund dieser Diskussionen angepasst wurde:

Ich zitiere den Text Ist NAT ein ausreichender Schutz für Surfer?:

Adressumsetzung (NAT) wurde entwickelt, um Kommunikation zwischen Anwendungen auch dann zu ermöglichen, wenn die Adressen der Gegenstellen nicht direkt gegenseitig erreichbar sind.

Die meisten Anwendungen verwenden nicht allein eine Verbindung, die von dem Surfersystem zum jeweiligen Server aufgebaut wird, sondern eine Vielzahl von unterstützenden Diensten und damit auch unterschiedlichen Protokollen. Die Richtung dieser unterstützenden Verbindungen ist dabei oft auch vom Server zum Client(Surfer).

Erreicht einen NAT-Router ein Paket für eine umgesetzte Adresse, so wird er versuchen, irgendwie den eigentlichen Empfänger zu erraten und das Paket zuzustellen. Das gilt insbesondere dann, wenn der NAT-Router keine intime Protokollkenntnis der Anwendung hat. Oft besteht keine Chance für den NAT-Router, selbst bei Kenntnis des Protokolls, den Empfänger sicher zu ermitteln. Dann wird mittels einer Heuristik der Empfänger erraten. Dies gilt insbesondere bei verschlüsselten Verbindungen und verbindungslosen Protokollen.

Ein NAT-Router ist deswegen keine Sicherheitskomponente.

Das ist ein langer Text, der für Unbedarfte doch einige Fragen aufwirft.

Einfache Grundlagen bei der Kommunikation mehrerer Rechner

Nehmen wir an, Sie haben einen Zugang zum Internet und betreiben einen NAT-Router und dahinter 3 Rechner sowie einen Netzwerkdrucker. Eine ähnliche Konfiguration habe ich selbst in Betrieb (Virtuelle Rechner). Schalte ich den Router ein, dann loggt er sich automatisch ein und baut eine Verbindung auf zum Internet. Dabei bekommt er automatisch eine IP zugewiesen und diese hat heute den Wert: 84.160.7.213. Das ist für heute meine Hausnummer, unter der ich erreichbar bin. Und da diese für jede Sitzung neu zugeordnet wird, ist diese jeden Tag, bzw. nach jedem neuen Login eine andere.

Jeder Rechner – und auch der Drucker – im Intranet bekommt eine sogenannte lokale IP-Adresse zugewiesen. Das kann auf unterschiedliche Arten geschehen und die einfachste ist eine feste Zuordnung. In dem Fall bekommen die Rechner die Adressen 10.0.0.0 bis 10.0.0.2 und der Drucker bekommt 10.0.1.0. Ganz zum Schluss fehlt noch eine Adresse unter der der Router von innen erreichbar ist und hier setze ich einfach einmal 10.0.2.0 ein.

Ein kleines Netzwerk: 3 Rechner und ein Drucker sind über einen Nat-Router an das Internet angebunden.

Auf Grund der oben skizzierten Verdrahtung kann man nun auch ein Modell von Straßen (Verkabelung) und Hausnummern (IP-Adressen sehen. Man kann auch den Rechnern Namen geben, wie es im Internet üblich ist. Der Rechner 1 bekommt dann zum Beispiel die URL www.rechner-1.lan und so weiter. Doch im Kern bedeutet das nur, dass der Rechner einen sogenannten DNS-Server – einen Domain-Names-Server – abfragt und dann eben die zur URL gehörende IP zurückgeliefert bekommt.

Die Berücksichtigung dieser Details würde die Erklärung unnötig aufblähen und verkomplizieren. Die Details der Namenszuordnung und abfragen bleiben also unbeantwortet und wir gehen davon aus, dass die Zieladresse als IP bekannt ist.

Nehmen wir an, auf dem Rechner 2 ist eine Datenbank installiert, die den beiden anderen Rechnern zur Verfügung stehen sollte. Nehmen wir weiter an, dass Rechner 1 eine Abfrage startet. Neben der IP (10.0.0.1) muss der Rechner 1 bei der Eröffnung einer Kommunikation auch einen “Betreff” mitgeben und das ist eine Portnummer. Beispiele für solche Portnummern sind:

Port Anfragegrund
80 Eine Webseite soll herunter geladen werden
123 Die Uhrzeit zwischen zwei Servern soll abgeglichen werden
3306 Eine Anfrage an den My-SQL-Server liegt vor

Dann schickt der Rechner 1 also eine Eröffnungsanfrage an den Rechner mit der IP 10.0.0.1 und dem Port 3306 also an 10.0.0.1:3306. Von dort bekommt er eine Antwort, mit der er dann die Kommunikation auf einem freien Port fortsetzen kann. Der Rechner 3 möchte dann einen Uhrzeitabgleich durchführen und fragt auf 10.0.0.0:123 diesbezüglich an.

In beiden Fällen werden unterschiedliche Dienste eines Rechners – und damit eben auch unterschiedliche Programme – angesprochen. In beiden Fällen wird damit nur die Kommunikation begonnen und dann auf einem frei verfügbaren Port fortgesetzt.

Auf eine Anfrage auf Port 80 bekommt der Anfragerechner den Inhalt einer Webseite zurückgeliefert, allerdings – auch das sollte logisch sein – nur dann, wen auf dem angefragten Rechner auch eine Webserversoftware wie zum Beispiel Apache installiert ist. Ist kein Webserver installiert, dann bleibt die Anfrage unbeantwortet – es ist dann noch nicht einmal ein Programm vorhanden, dass eine Fehlermeldung zurückliefert. Der Rechner gibt einfach keine Antwort.

Damit ein Rechner im Netzwerk genutzt werden kann, muss er eine Netzwerkleistung – ein Netzwerkdienst – anbieten. Ein solcher Dienst ist ein Programm, dass auf ein Datenpaket mit einer vorher festgelegten Portnummer wartet.

Man kann übrigens die Portnummern, mit denen man einen Dienst abfragt, auch ändern. Bei der Abfrage einer Webseite geht das recht einfach in dem man hinter die URL per Doppelpunkt die Portnummer schreibt. Einen korrekten Aufruf dieser Seite erhält man mit http://betrieblicher-datenschutz-extern.de:80/artikel/…. Wenn Sie über diesen Link die Seite in einem neuen Fenster öffnen und die 80 durch einen anderen Wert ersetzen, dann bekommen Sie eine Fehlermeldung. Unter einem anderen Wert wird ein solcher Dienst nicht angeboten, wobei es zwar möglich aber weitgehend sinnfrei wäre, eine Webseite unter einem anderen Wert auch anzubieten.

Eine Verbindung von innen nach außen

Neben der hier oben genannten internen Verbindung gibt es nun auch Verbindungen nach außen. So kann man auf dem Rechner 1 zum Beispiel einen Browser starten und damit diese Seite hier besuchen wollen. Der Server, auf dem unter anderem diese Webseite gehostet wird, der hat die IP 81.169.149.60. Der lokale Rechner fragt also zunächst einmal über den Router einen anderen Rechner ab, den DN-Server und bekommt die Adresse dieses Rechners genannt.

Eine solche Adresse wird als “externe Adresse” erkannt und als “nicht zum lokalen Netzwerk zugehörig” einfach an den Router gesendet mit der IP 10.0.2.0. Das bedeutet: Rechner 1 (10.0.0.0) beantragt bei 10.0.2.0 eine externe Verbindung zum Rechner 81.169.149.60:80 im öffentlichen Netz. Der Router initiiert diese Verbindung und merkt sich dessen Details in einer internen Tabelle und leitet dann jeweils die Datenpakte von dem einen Rechner an den anderen weiter.

Eine zweite Instanz des gleichen Browsers, ein anderer Browser oder eben auch ein anderer Rechner (Rechner 2) kann nun ähnliche Verbindungen abfragen. Auch diese werden von dem Router entsprechend initiiert und dann werden die Datenpakete entsprechend weitergeleitet. In allen diesen Fällen ist eine Anfrage von innen nach außen gestartet worden.

Eine Verbindung von Außen nach Innen

Nun das umgekehrte Problem: Stellen wir uns vor, dass der Server für diese Webseite 81.169.149.60 auf den My-SQL-Server des internen Rechners 2 zugreifen möchte. Das kann er nur tun, wenn er eine Anfrage richtet an die öffentliche “Tagesadresse” des NAT-Routers, in dem Fall eben 84.160.7.213 und zwar in dem Fall unter dem Port 3306. Was macht der Router? Er kann mit dieser Anfrage nichts anfangen und verwirft diese. Selbst wenn der Server 81.169.149.60 die lokale IP des My-SQL-Servers kennen würde – also 10.0.0.1 – gäbe es keinen Befehl, mit dem er von außen diese Weiterleitung erreichen könnte.

In der Standardausführung eines solchen guten und sicheren Routers würde diese Anfrage abgelehnt werden auf eine ähnliche Art wie der Aufruf einer Webseite unter einer von 80 verschiedenen Portnummer. Die einzige Abhilfe ist hier eine sogenannte Port-Weiterleitung, die man in den Router eingeben muss. Der Router bekäme dann eine Einstellung, die besagt, dass alle 3306-Anfragen an Rechner-1 weiterzuleiten sind und zwar auch nur dann, wenn diese Abfrage von 81.169.149.60 stammt. Dann könnte dieser MySQL-Server nur von diesem Webserver wirklich genutzt werden.

Das ist das Grundprinzip einer einfachen aber sehr wirkungsvollen Schutzvorrichtung. Man hat einen Dienst, der im internen Netz zur Verfügung steht, der aber aus dem Internet heraus zunächst nicht erreichbar ist, der dann aber individuell nach eigenen Wünschen freischaltbar ist.

Deshalb: Bei einem guten NAT-Router sind Anfragen von innen nach außen jederzeit problemlos möglich, Anfragen von außen nach innen allerdings setzen eine entsprechende Einstellung am Router voraus.

Warum aber ist NAT nun keine Sicherheitskomponente, oder: Was ist ein schlechter NAT-Router?

Was würde geschehen, wenn der Router die Weiterleitung einer Internetanfrage an den Routerport 3306 nun sukzessive antesten würde, in dem er diese an alle netzwerkfähigen Geräte sendet, die angeschlossen sind? Nehmen wir an, alle drei Rechner sind eingeschaltet, es kommt die besagte Anfrage und alle drei Rechner werden durchprobiert. Im Falle des Rechner 2 käme die Antwort und dann würde die Verbindung zwischen der Außenstelle und diesem Rechner aufgebaut? Wäre dann der Router immer noch ein NAT-Router? – Natürlich, warum nicht?

Es ist sogar so, dass dieser Router sogar noch einfacher und problemloser funktionieren würde als derjenige, bei dem eine Portweiterleitung manuell einzustellen wäre. Das Handbuch wäre dünner, eine Hotline wird unnötig und Programme, die auf File-Sharing basieren, Skype und Bit-Torrent und so weiter, die würden alle auf anhieb in dieser Konfiguration ausgeführt werden können.

File-Sharing ist zum Beispiel nötig, wenn man Musik-Files “tauschen” möchte, die Musikindustrie spricht in dem Zusammenhang von Raubkopien und Urheberechtsverletzungen und diese Aussagen sind keineswegs immer unberechtigt.

Im Kern geht es darum, dass man selbst eigene Dienste im Internet anbieten möchte oder im Gegenzug einer bezogenen Leistung anbieten muss und sich nicht um irgendwelche Einstellungen kümmern möchte. Und dann greift man gerne zu einem Router, der solche Anfragen automatisch durchreicht.

Und solche automatischen Router sind natürlich auch noch Preiswerter, weil:

  1. die Stückzahlen größer sind – wegen des Interesses
  2. man einfacherer Handbücher und keine Hotlines benötigt

Worin unterscheiden sich nun die NAT-Router?

Wenn zwei NAT-Router nebeneinander im Regal stehen, dann lautet das Leistungsmerkmal, dass den blockierenden und den durchreichenden Router unterscheidet “Paketfilter” oder man kann auch vornehm und vollausgeschrieben sagen “Statefull Inspection Paketfilter”. Sagen Sie das aber im Geschäft nicht – wenn Sie diesen kaufen möchten – Paketfilter genügt – nur wenn Sie googlen wollen, dann könnte der Begriff helfen!

Ein Datenpaket ist eine Bitfolge von einem Byte bis maximal ca. 1 kByte, dass mit einer Absender und Empfänger-IP und einer Port-Nummer – einen Betreff – versehen wird. Diese wird dann von einem Rechner zum anderen geschickt. Der Paketfilter filtert dabei alle aus dem Internet kommenden Datenpakete heraus, die nicht zu einer Kommunikation gehören, die von innen initiiert wurde und für die keine Weiterleitungsanweisung vorliegt.

Die Probleme der automatischen Port-Weiterleitung

Es gibt derzeit Viren, Würmer und Trojaner, die Schwachstellen des Betriebsystems Windows nutzen und zwar auf Diensten, die eigentlich gedacht sind für den Betrieb des Rechners in einem lokalen Netzwerk. Eine gute Übersicht von Ports und Diensten findet man auf der Seite NT-Dienste sicher konfigurieren und Windows Dienste abschalten.

Es gibt also Ports – und damit Dienste – die anfällig sind gegen Angriffe von außen. Diese schaltet man entweder ab oder man schützt sich vor Zugriffen aus dem Internet. Dabei kann der Schutz in regelmäßigen aufspielen von Patches und Systemupdates bestehen aber eben auch in einem Paketfilter.

Wer also in einem Home-Office wie angedeutet mehr als einen Rechner betreibt und wechselweise auf Festplatten oder einen Netzwerkdrucker zugreifen möchte, der muss diese Dienste zwar aktiviert lassen, sollte aber eben mit einem Paketfilter sicherstellen, dass kein Zugriff von außen erfolgt.

Weiter: In einem lokalen Netzwerk, dass durch einen Paketfilter geschützt ist, ist es problemlos möglich, einen Windows-Rechner ohne Service-Packs komplett neu aufzusetzen bei bestehender Internetanbindung. Vorraussetzung ist nach erfolgter Installation ein Erstbesuch von update.windows.com ausschließlich zur Installation der Service-Packs und Patches. Das ist allerdings nur nötig, um zu verhindern, dass man beim Besuch einer “agressiven Webseite” ein Tierchen untergeschoben wird. Homebanking bei Ihrere Hausbank können Sie problemlos vor dem Update ausführen.

Mit einem automatisch weiterleitenden Router können Sie letzteres nicht. Das bedeutet aber weiterhin, dass Sie auch vor unbekannten Angriffstypen grundsätzlich erst einmal geschützt sind, wenn diese eine Schwachstelle eines Windows-Betriebsystems nutzen. Das Windows hat keinen unmittelbaren Kontakt mehr zum Internet!

Und ein Schädling, der eine Schwachstelle des Paketfilters nutzt, der ist zwar im lokalen Netz, nicht aber in einem der angeschlossen Rechner. Für eine solche Hürde benötigt man eine zweistufige Angriffssoftware, jedenfalls, wenn man diese von außen überwinden möchte.