05.02.2013 Aufrufe

Firewall Handbuch für LINUX 2.0 und 2.2 - zurück

Firewall Handbuch für LINUX 2.0 und 2.2 - zurück

Firewall Handbuch für LINUX 2.0 und 2.2 - zurück

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Signale and the <strong>Firewall</strong> Pipe<br />

Der <strong>Firewall</strong>-Dämon reagiert auf alle Signale, bis auf SIGKILL <strong>und</strong> SIGSTOP. Die Signale<br />

des Signalhandlers (kill) wirken sich auf alle Funktionen der <strong>Firewall</strong> aus.<br />

Über den Signalhändler werden Timeouts von dynamischen <strong>Firewall</strong>regeln <strong>und</strong> Variablen<br />

(Alarmfunktion) geregelt, das Programm beendet (SIGTERM), <strong>und</strong> eine Kopie initiiert<br />

(SIGUSR2), sowie Variablen in eine <strong>Firewall</strong> Pipe geschrieben.<br />

Das Signal SIGUSR2 wird von dem SFC Programm gesendet, z.B. um Variablen<br />

anzuzeigen (sfc show). Der <strong>Firewall</strong>-Dämon forkt dann, um einen Schnappschuß seines<br />

momentanen Zustandes festzuhalten. Andernfalls würden sich Variablen während des<br />

Auslesens verändern, der Zustand wäre nicht eindeutig. Da nun der User mit dem SFC<br />

Programm in Ruhe den Zustand betrachten <strong>und</strong> analysieren kann, kann auch der <strong>Firewall</strong>-<br />

Dämon weiter laufen. Es ist allerdings zu beachten, daß gerade bei Hispeed Netzwerken<br />

genügend RAM zur Verfügung steht.<br />

Die <strong>Firewall</strong> Pipe ist eine "named pipe" <strong>und</strong> wird dazu benutzt, um diejenigen Daten, wie<br />

Variablen, dynamische Regeln von der Kopie des <strong>Firewall</strong>-Dämons zu erhalten. Da die<br />

Daten aus dem <strong>Firewall</strong>-Device zu dem laufenden <strong>Firewall</strong>-Dämon gehören, kann nur über<br />

dieses Ersatzdevice der Zustand der momentanen Kopie des <strong>Firewall</strong>-Dämons abgerufen<br />

werden. Diese steht unter der Kontrolle des SFC Programms.<br />

Sehr wichtig ist zu erwähnen, daß der <strong>Firewall</strong>-Dämon niemals auf die Beendigung seiner<br />

Kinder (child) wartet. Damit keine Zombies entstehen, muß dieser immun gegen das<br />

Signal SIGCHLD sein. Er ignoriert dieses, da ein Returnwert der Children (error,<br />

successfully terminated) ohne Belang ist. Diese Verhalten veranlaßt das Betriebssytem,<br />

die Prozesstabelle zu bereinigen <strong>und</strong> belegte Plätze aus der Tablle zu entfernen. Das<br />

Aufsetzen der Signaltabelle erfolgt in der Funktion start_log.<br />

Starten externer Befehle<br />

Der <strong>Firewall</strong>-Dämon benutzt auf dem Host installierte Programme, um E-Mails o.ä. zu<br />

versenden, counter intelligence Programme zu starten, oder irgendwelche Prozesse<br />

auszuführen, die mit Userrechten ausgeführt werden können. Da der <strong>Firewall</strong>-Dämon ein<br />

unprivilegierter Prozess ist, kann er auch keine privilegierten Programme starten, oder<br />

Befehlsparameter übernehmen, die von einem anderen Host übermittelt wurden. Es sollte<br />

aber stets berücksichtigt werden, daß der <strong>Firewall</strong>-Dämon über die Kernelroutine<br />

"system()" Programme startet. Die Ausführung von Programmen übergeben an den<br />

<strong>Firewall</strong>-Dämon Rückgabewerte, die zu einem "buffer overflow" führen können. Aus<br />

diesem Gr<strong>und</strong> werden "control character" aus den Rückgabedaten herausgefiltert.<br />

Endlose Datenströme als Rückgabewert (dev/random) werden nach einem Timout<br />

beendet. Die maximale Zahl der Einträge in Prozeßtabellen ist begrenzt.<br />

Der Ereignis Mechanismus<br />

Der <strong>Firewall</strong>-Dämon muß viel mit Timeouts arbeiten. Da viele Ereignisse <strong>und</strong> deren Dauer<br />

von anderen Ereignissen abhängig sind, besitzt die <strong>Firewall</strong> einen Eventmanager.<br />

Timeouts werden hierin in einer linearen Liste festgehalten, der Event Queue<br />

(event_queue). Hierin werden auch Funktionsadressen <strong>und</strong> deren Parameter festgehalten.<br />

(struct timeout in sf_log.c). Um ein Ereignis hinzuzufügen, wird die add_event() Funktion<br />

benutzt. Sie benutzt den Alarm-Mechanismus <strong>und</strong> definiert den Timeout des nachsten<br />

Ereignisses. Wenn vom Signalhändler das SIGALARM Signal an die Funktion<br />

"catch_alarm()" gesendet wird, dann wird der nächstfolgende Timeout <strong>für</strong> einen Befehl<br />

abgearbeitet. Falls der <strong>Firewall</strong>-Dämon in diesem Moment zu beschäftigt sein sollte, wird<br />

die Ausführung des Befehls von der Funktion "process_alarm" ausgeführt. Der <strong>Firewall</strong>-<br />

Dämon wird hierzu unterbrochen.<br />

Erstellt von Doc Gonzo - http://kickme.to/plugins

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!