Firewall

Aus Linupedia.org
Wechseln zu: Navigation, Suche
Dieser Artikel nimmt am Linux-Club Wiki Wettbewerb teil, aus diesem Grunde soll an dem Artikel nur von dem Erstautor Änderungen bis zum 22. Mai 2007 um 20:00Uhr gemacht werden. Danach wird die Jury die Artikel in dieser Kategorie beurteilen, und die Sieger bekannt geben.

Eine Firewall (auch der Firewall) ist eine Netzwerkkomponente, die den Zweck der Netzwerksicherheit dient. Sie soll zwei oder mehr Netzwerksegmente kontrollierbar miteinander verbinden. Das bedeutet die einzelnen Rechner in den verschiedenen Netzwerksegmenten sollen bestimmte Verbindungen untereinander aufbauen können, jedoch nicht jede beliebige Kommunikation durchführen können.

Firewalltypen

Netzwerkfirewall

Eine Netzwerkfirewall läuft auf einem Rechner mit mindestens zwei Netzwerkkarten. Diese Netzwerkkarten sind an die Netzwerksegmente angeschlossen deren Verbindungen kontrolliert werden soll. Die Firewall ist somit Teil beider Netzwerke und hat somit auch zwei IP Adressen; jeweils eine aus dem entsprechenden Netz. Damit Daten von einem Netzwerk in das andere Netzwerk gesendet werden können muss die Firewall auch als Router dienen und das Routing innerhalb der Netzwerke richtig gesetzt werden.

Tatsächlich kann man eine Netzwerkfirewall auch als Layer-4 Firewall bezeichnen, denn sie arbeitet im Layer 4 des ISO OSI Modells (http://de.wikipedia.org/wiki/ISO/OSI#Schicht_4_.E2.80.93_Transportschicht). Eine Firewall die keinerlei Verbindungen blockiert verhält somit für alle anderen Netzwerkkomponenenten wie ein normaler Router.

Hostfirewalls

Neben der Firewall als Netzwerkkomponente gibt es auch noch Firewalls die auf einem Rechner mit nur einer Netzwerkkarte laufen, also keine verschiedenen Netzwerksegemente miteinander verbinden können. Solche Firewalls werden als Host- oder auch Desktopfirewall bezeichnet. Ihre Aufgaben bestehen darin den Rechner vor Angriffen von außen zu schützen. Der Sinn einer Hostfirewall ist umstritten, da man auch ohne Firewall den Rechner vor Zugriffen von außen schützen kann, in dem einfach keine Dienste wie SSH oder VNC an der physikalischen Netzwerkkarte lauschen lässt. Dadurch reagiert der eigene Rechner überhaupt nicht auf Anfragen und diese müssen somit nicht von einer Firewall geschützt werden.

Applicationlayerfirewalls

Unter dem Begriff Applicationlayerfirewall versteht man Firewalls welche den Datenverkehr nicht nur auf Basis von Quelladdresse, Zieladresse und Service, sondern auch auf Basis des Programms welche die Verbindung öffnet steuern können. Eine Applicationlayerfirewall könnte also den Zugriff auf eine Webseite (z.B. www.linux-club.de) sperren wenn als Browser Opera verwendt wird, den Zugriff aber erlauben wenn als Browser Firefox verwendet wird.

Solche Firewalls können nur als Hostfirewalls eingesetzt werden. Eine Applicationlayerfirewall als Netzwerkkomponente ist nicht möglich, da die Information über das Programm welche die Verbindung öffnen möchte verloren geht sobald das Datenpaket den Rechner verlässt.

Der Sinn von Applicationlayerfirewalls ist umstritten, da sie relativ aufwendig zu konfigurieren sind und man sich die Frage stellen muss, warum man ein Programm von dem man nicht möchte das es Datenverbindungen öffnet, nicht gleich deinstalliert.

Firewalltechnologien

Paketfilter

Praktisch alle gängigen Firewalls sind Paketfilterfirewalls. D.h. sie anaylsieren einzelne Datenpakete und entscheiden anhand bestimmter Kriterien ob diese Paket weitergeleitet oder vernichtet wird.

Wenn z.B. ein Webbrowser Daten von einem Webserver abruft, so packt der Webserver die Daten in Pakete zusammen und schickt diese an den Browser. Bevor diese Pakete den Browser erreichen müssen sie durch die Firewall durch, da diese "im Weg" der Datenpakete liegt. Die Firewall nimmt das Datenpaket und extrahiert, von wo die Daten kommen (QuellIP), nach wo die Daten sollen (ZielIP), sowie welcher Port verwendet wurden (z.B. http oder ssh, also der Port und das Protokoll). Diese Daten vergleicht sie mit ihrem Regelwerk.

Wenn es eine Regel gibt welche diese Verbindung explitziert erlaubt wird das Datenpaket weitergeleitet. Gibt es eine Regel welche diese Verbindung verbietet wird das Paket verworfen. Gibt es keine Regel handelt die Firewall nach ihrer Defaultpolicy. Dies ist im Prinzip eine Regel die angewendet wird wenn keine andere Regel zu finden ist.


Statefullinspection

Eine Firewall die Statefullinspection beherrscht handelt erstmal wie ein reiner Paketfilter, kann jedoch zusätzlich den Status einer Verbindung berücksichtigen. D.h. wenn Rechner A eine Verbindung zu Rechner B aufbaut, in dem er ein Datenpaket schickt, lässt die Firewall automatisch die Antwort von Rechner B zu, sofern dies vom Administrator entsprechend eingestellt wurde.

Versucht der Rechner B allerdings Daten an Rechner A zu schicken, ohne das vorher Rechner A ein Paket geschickt hat würde die Firewall die Verbindung blockieren.

Man kann sich das wie bei einer Schulklasse vorstellen, bei der zwischen Schülern und Lehreren noch ein Aufpasser sitzt. Dieser Aufpasser ist die Firewall. Der Aufpasser hat vom Administrator die Regel bekommen, dass Daten vom Lehrer zu den Schülern immer durchgelassen werden dürfen. Der Lehrer kann somit zu den Schülern sprechen.

Wenn die Schüler auch Daten an den Lehrer schicken können sollen braucht der Aufpasser auch eine entsprechende Regel. Wenn der Aufpasser nun kein Statefullinspection kann, so muss der Administrator eine Regel einbauen welche den Schülern immer erlaubt Daten an den Lehrer zu schicken. Das würde bedeutet die Schüler könnten dem Lehrer ständig ins Wort fallen.

Kann der Aufpasser aber Statefullinspection, so kann der Administrator dem Aufpasser sagen, dass dieser nur Daten von den Schülern zum Lehrer durchlassen soll, wenn der Lehrer vorher eine entsprechende Verbindung aufgebaut hat. Die Schüler könnten also nur Daten schicken wenn der Lehrer vorher eine Frage gestellt hat und auf eine Antwort warten. Wenn der Lehrer nur am erklären ist und keine Antwort möchte, würde der Aufpasser jeden Zwischenruf von den Schülern zum Lehrer verhindern.

Proxyfirewalls

Proxyfirewalls setzen dem Statefullinspection noch etwas oben drauf. Eine Statefullinspectionfirewall kann zwar erkennen ob ein eingehendes Datenpaket eine Antwort zu einem vorherigen Datenpaket war, jedoch nicht ob die Antwort auch Sinn macht.

Ein Proxyfirewall kann genau das. D.h. eine Proxyfirewall "weiß" welche Antwort Sinn macht und lässt ein Datenpaket nur dann zu. Die Idee hinter einer solchen Firewall ist, zu verhindern das z.B. ein Browser eine Verbindung zu einem Webserver aufmacht und dieser im eine mit einem Trojaner gespickte Seite zurückliefert.

Um im Beispiel des Aufpassers zu bleiben: Bisher konnte der Lehrer z.B. die Frage stellen: "Was ist die Hauptstadt von Deutschland" und ein Schüler konnte antworten "Der Lehrer ist doof" und den Lehrer somit trauig machen und ihn an seinen Fähigkeiten zweifeln lassen, so dass er irgendwann eine Neurose bekommt und krank wird. Ein Aufpasser mit Proxyfähigkeiten könnte dies Verhindern und nur Antworten wie "Karlsruhe", "Frankfurt", oder eben auch "Berlin" durchlassen. Damit ist der Lehrer geschützt, allerdings leuchtet es ein, dass der Aufpasser hierfür Ahnung von Geograhpie haben muss.

Entsprechendes gilt auch für echte Firewalls. Sie müssen "wissen" was eine gültige Antwort darstellt, was relativ aufwendig ist und dementsprechend nicht immer zuverlässig.

Antispoofing

Unter Antispoofing versteht man die Fähigkeit einer Firewall Pakete aufgrund ihrer physikalischen Herkunft zu kontrollieren. D.h. die Firewall würde eine Verbindung kontrollieren wenn sie nicht über die "richtige" Netzwerkkarte reinkommt. Die Idee dahinter ist zu verhindern das ein Angreifer seine QuellIP fälscht und somit Daten über die Firewall schicken zu können.

Um wieder das Beispiel der Schulklasse zu nötigen: Stellen wir uns vor der Lehrer hat eine Frage gestellt auf die er eine Note vergeben will. Derjenige welcher die richtige Antwort gibt bekommt eine 1. Der Schüler Ben weiß die Antwort nicht. Die Schülerin Nicole mag den Schüler Ben aber sehr und möchte ihm deshalb eine gute Note verschaffen. Dafür verstellt sie ihre Stimme und gibt die richtige Antwort.

Der Aufpasser beherrscht aber Antispoofing und weiß das der Schüler Ben vorne rechts in der Klasse sieht. Die Anwort kam aber von hinten links (da sitzt Nicole). Deshalb verwirft er die Antwort und die Note konnte nicht gefälscht werden.<ref name="nioleundben" />.


Statefullfailover

Firewalls unter Linux

Aktuelle Linuxkernel haben eine Firewall mit eingebaut. Diese nennt sich "Netfilter" und kann über den Befehl "iptables" konfiguriert werden. Oftmals wird auch einfach von iptables gesprochen wenn man von Netfilter spricht. Ein älteres Frontend für Netfilter war ipchains. Dieses sollte man heute allerdings nicht mehr einsetzen, da iptables ipchains vollkommen ersetzt.

Für Linux gibt es auch eine Applicationlayerfirewall namens Tuxguardian. Darüber hinaus bieten einige kommerzielle Anbieter die Möglichkeit ihre Firewallsoftware auf einem Linuxsystem laufen zu lassen. Checkpoint bietet z.B. die Möglichkeit seine Firewallsoftware (Firewall 1 / VPN 1) auf einem Linux zu installieren.

Des Weiteren bieten einige Linuxdistributionen eigene Firewalls an, wie z.B. OpenSuSE die SuSE Firewall. Tatsächlich handelt es sich hierbei aber meist um Oberflächen zur Konfiguration von Netfilter und nicht um eigene Firewallsoftware.

Neben Distributionsabhängigen Werkzeugen zur Firewallkonfiguration gibt es auch unabhängige Softeware zur Konfiguration von Netfilter wie z.B. Firewall Builder.

Iptables näher betrachtet

Wichtige Sicherheitshinweise zu Firewalls

Links