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.

Dieser Artikel beschäftigt sich mit Firewalls allgemein. Es geht nicht um die Konfiguration einer spezielle Firewall. Anleitungen und Artikel darüber finden sich am Ende der Seite in den Quellen.

Eine Firewall (auch der Firewall) ist eine Netzwerkkomponente, die 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 (meistens) im Layer 4 des ISO OSI Modells. Eine Firewall die keinerlei Verbindungen blockiert verhält somit für alle anderen Netzwerkkomponenenten wie ein normaler Router.

Desktop- oder Hostfirewall

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

  1. den Rechner vor Angriffen von außen zu schützen, sowie
  2. zu verhindern das bestimmte Programme eine Verbindung vom eigenen Rechner ins Netzwerk aufbauen.

Der Sinn einer Desktopfirewall 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. Auch das zweite Argument hält einer sachlichen Prüfung nicht stand: Wen man nicht möchte das Programm ABC Daten ins Netzwerk sendet, warum deinstalliert man es dann nicht einfach?

Applicationlayerfirewalls

Unter dem Begriff Applicationlayerfirewall versteht man Firewalls welche den Datenverkehr nicht nur auf Basis von Quelladdresse, Zieladresse und Service, sondern auch anhand des tatsächlichen Inhalts eines Datenpaketes. Eine Applicationlayerfirewall kann also erkennen ob das was ein Rechner sendet wirklich eine Webanfrage ist, oder ob der Anfragende Rechner versucht unerlaubt Daten durch die Firewall zu schicken in dem er so tut als wäre es eine Webanfrage.

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.

Proxy

Viele Firewalls haben inzwischen Proxies integriert, oder bieten zumindest Teilweise solche Fähigkeiten an.

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

Eine Firewall mit Proxyfunktionalität 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. (Aber keine Sorge: Nicole und Bens Geschichte hatte ein glückliches Ende mit einer Hochzeit in Weiß und einem berauschenden Fest.)

Hochverfügbarkeit (Statefullfailover)

Unter Statefullfailover versteht man die Fähigkeit zwei Firewalls zu koppeln so dass keine Verbindung unterbrochen wird, auch wenn eine der beiden Firewalls ausfällt. Die Firewall wird also hochverfügbar.

Um wieder im Beispiel zu bleiben: Man stelle sich vor der Aufpasser in der Klasse hat einen drigenden Arztermin und muss weg (wer möchte kann sich auch vorstellen das der Aufpasser einen Herzinfarkt hat und tot umfällt, aber das war dem Autor ein wenig zu blutig, deshalb der Arzttermin). Da der Aufpasser nicht mehr da ist und alle Verbindung von Lehrer zu Schüler über ihn laufen können Lehrer und Schüler nicht mehr miteinander sprechen.

Deshalb hat der Administrator einen zweiten Aufpasser in die Klasse gesetzt. Sobald der erste ausfällt übernimmt der zweite und es kann weiter gehen. Somit hätte man ein Failover realisiert, allerdings noch kein Statefullfailover. Im Moment schreibt sich nämlich nur der aktive Aufpasser die Fragen des Lehrers auf. Somit kann nur er erkennen ob ein Datenpakt von einem Schüler eine Antwort darstellt. Fällt er aus weiß der zweite Aufpasser nicht welche Fragen schon gestellt wurden da er sich die Fragen nicht mitgeschrieben hat. Der Lehrer müsste also alle Fragen neu stellen damit die Antworten durch kommen.

Ein Statefullfailover-Aufpasser (oder -Firewall) schreibt sich also die Fragen mit auch wenn er gerade nicht aktiv ist. Fällt der aktive Aufpasser/Firewall aus, braucht der Lehrer die Fragen nicht nochmal neu stellen. Die Verbindungen werden also nicht unterbrochen.

Open Source Firewalls

Echte Firewallsysteme

netfilter/iptables

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.

netfilter beherrscht das Statefullinspection, kann also Verbindung anhand ihrem Zustand zulassen oder verbieten. Darüber hinaus setzt man netfilter auch zur Manipulation von Datenpaketen wie z.B NAT ein.

Es wird auch schon an Hochverfügbarkeit, also an Statefullfailover-Funktionalität gearbeitet. Das entsprechende Modul, welches hierfür benötigt wird nennt sich ct_sync (siehe Ende der Seite). Es ist allerdings noch nicht standardmäßig in den Linuxkernel integriert.

Tuxguardian

Für Linux gibt es auch eine Desktopfirewall namens Tuxguardian. TuxGuardian ermöglicht es für jedes Programm individuell zu bestimmen ob es ins Internet darf oder nicht. Hierfür öffnet sich ein kleines Fenster welches den Benutzer fragt ob er/sie den Zugriff zulassen möchte oder nicht.

Administrationsoberflächen

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.


Wichtige Sicherheitshinweise zu Firewalls

Die Firewall als Allheilmittel?

Eine Firewall alleine macht noch kein sichers Netzwerk. Gerade wenn man Verbindungen zulässt öffent man ja die Firewall und stetzt die dahinterliegenden Systeme potentiellen Angriffen aus. Man muss also noch zusätzliche Sicherheitsmaßen ergreifen um die Dienste welche die Firewall erlauben soll abzusichern. Eine Firewall kann somit nur Teil eines Sicherheitskonzeptes sein, nicht jedoch das Konzept alleine.

Darüber hinaus muss man sicherstellen das die Firewall "im Weg" steht. D.h. es darf keine Verbindungsmöglichkeiten um die Firewall herum geben (Bypass). Das wäre wie wenn man eine Vordertür mit Sicherheitsschlössern, Fingerabdrucksensor und Stahlpanzerung hat, die Rückseite des Hauses aber ein Loch in der Mauer hat.

Auch kann man eine Firewall relativ leicht durchtunneln wenn man ein System innen und außen unter Kontrolle hat. PC im eigenen Netzwerk mit einem Trojaner machen also selbst die beste Firewall u.U. löchrig.

Natürlich kann auch die Firewall selbst einen Bug haben welche Sicherheitslücken aufmacht.

Grundsätze zur Gestaltung des Regelwerkes

Wie man eine Firewall und deren Regelwerk aufbaut hängt natürlich von den Anforderungen ab. Allerdings lassen sich einige ganz nützlich Grundregeln festhalten, welche nachfolgend aufgeführt werden. Die Regeln sind nicht für eine spezifische Firewallsoftware, sondern können im Prinzip für alle Firewalls gelten.


Quelle Ziel Service Aktion Log? Begründung ANY Broadcast ANY DROP Nein Broadcasts sollten niemals über Netze hinweg gehen.

Quellen & Weiterführendes