Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING

14.22 Übersicht

Die Komponenten

Die sf Firewall besteht aus folgenden Komponenten:

Man beachte die Trennung von Kernel-Filter-Modul und Firewall-Daemon.

Das Kernel Filter-Modul ist ein sogenanntes "loadable module" welches während der Laufzeit in den Linux Kernel eingefügt wird. Es ist von diesem Zeitpunkt an Teil des Kernels, so als ob es direkt in den Kernel hinein kompiliert worden wäre. "Loadable modules" sind eine der besonderen Eigenschaften von LINUX.

Der Firewall-Daemon läuft als unprivilegierter User-Prozeß. Er hat keine besonderen Zugriffsrechte, außer denen, die notwendig sind, um mit der Firewall-Schnittstelle zu kommunizieren und in Log-Dateien zu schreiben.

Das "sfc" Programm kann zu Darstellung eines momentanen Abbildes der aktivierten Filterregeln und Variablen der Firewall genutzt werden.

Die Firewall Pipe wird zur Kommunikation zwischen dem sfc Programm und dem Firewall-Daemon genutzt.

Paket-Filter

Der Paketfilter der Firewall nimmt an einer Netzwerk-Schnittstelle (1) ein IP-Paket an, welches zur zweiten Netzwerkschnittstelle (2) weitergeleitet werden soll. Dies stellt den Normalfall dar, wenn die Firewall als Router eingesetzt wird.

Bei der Ankunft wird das Paket in die Warteschlange der Netzwerkschnittstelle (1) geschickt und dann an den Kernel IP Code übergeben. Von dort wird das Kernel Filter-Modul aufgerufen (über den Zeiger sf_fw_chk). Die sf_fw_chk() Funktion gibt die Ergebnisse der Untersuchungen an den Kernel zurück. Hier übergibt sie als Ergebnis, wie mit dem IP-Paket zu verfahren ist: verwerfen, zurückweisen oder annehmen. Falls das Paket angenommen ist, wird es successive an die Netzwerkschnittstelle (2) gesendet und verläßt die Firewall.

Wenn ein IP-Paket das Kernel-Filter-Modul erreicht, durchsucht dies seine internen Tabellen und sendet unverzüglich einen Code zurück(verwerfen, zurückweisen, annehmen). Wurde der Firewall-Daemon über das Ereignis unterrichtet, wird eine Nachricht erstellt und an den Nachrichten-Buffer gesendet.

Linux Kernel-Änderungen

Um die Komponenten Kernel Filter-Modul und Firewall-Daemon in das Betriebssystem einzubinden, sind einige Änderungen vorzunehmen. Das sfc User Programm und die Komponenten des Firewall-Device benötigen keine Änderungen, und können während der Laufzeit geladen werden.

Ein Ziel der Entwicklung der SINUS Firewall-1 war es, die Anzahl und Komplexität der Kernel-Änderungen gering zu halten, um ein einfaches Aktualisieren des Kernels und eine gute Portierbarkeit zu ermöglichen. Dazu wurde soviel "code" als möglich in das Kernel Filter-Modul und in den Firewall-Daemon eingebaut.

Dies sind die neuen Dateien: Die Datei config.in, welche die Anfragen für die "make config facility" enthält. Ein Makefile und die Dateien ip.c und tcp.c um Anrufe zum Kernel-Filter-Modul "stub" hinzuzufügen. Die Datei ksyms.c, welche alle exportierten Symbole auflistet. Die Datei sf_kernel.h (neu), die die Kernel-Filter-Modul-Schnittstelle beinhaltet. sf_stub.c (neu), das Kernel-Filter-Modul "stub".

Beschreibung der Kernel-Filter-Module Stub

Die Stub-Datei, sf_stub.c, enthält den Filter-Funktions-Zeiger sf_fw_chk() und zwei Dummy-Routinen, welche alle Pakete entweder zurückweisen oder passieren lassen. Die Filter-Funktion wird jedoch nie direkt aufgerufen, sondern ausschließlich nur durch den Funktions-Zeiger im Filter. In der momentanen Implementierung zeigt der Funktions-Zeiger im Filter entweder auf die Funktion des Kernel Filter-Moduls, oder auf eine der Dummy-Routinen der Stub-Datei.

Um Aufrufe zum Filter-Funktions-Zeiger hinzuzufügen, muß die Datei ip.c modifiziert werden. Beim starten des Systems ist der Funktions-Zeiger des Filters auf die "Paket passieren lassen" Dummy-Routine eingestellt, sodaß die Firewall nicht arbeitet. Ohne das freigeschaltete Dummy Interface ist die Firewall nicht in der Lage, Informationen an das Monitor Interface zu senden. Vorsicht also mit der Einstellung "block all pakets" !


Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING