Ambitionierte Surfer wollen ebenso wissen wie jeder Admin, was so von ihrem Rechner ins Netz fließt und was von dort eintrudelt. Sichtbar machen diesen Netzwerkverkehr zahlreiche Programme wie Tcpdump oder Ethereal. Sie beobachten die Netzwerkschnittstelle und analysieren die Paketdaten.
Gut informiert
Auch Firewalls informieren über die strömenden Datenpakete per Logmeldung. Physiologisch und psychologisch ist das Auge während des Surfens aber mehr am Inhalt einer Webseite oder den Fotos der letzten Firmenfeier interessiert als am Betrachten irgendwelcher Logdateien. Die Infos verschwinden in der Regel ungesehen.
Dabei hat der Mensch mehrere Sinne: Er könnte den Netzwerkverkehr parallel wahrnehmen, wenn er ihn in Echtzeit hören würde - eine Art akustischer (oder singender) Netzmonitor. Es gibt mehrere Möglichkeiten, dies zu realisieren. Ein eleganter Auftakt sind die Netfilter-Hooks, im Folgenden anhand des Moduls »singwall« vorgestellt.
Das Netfilter-Konzept ermöglicht es, Kernelerweiterungen zu schreiben, die sich in die Bearbeitungskette von Netzwerkpaketen über so genannte Hooks (Haken) einklinken. Dabei ist kein Kernelpatch nötig, ein ladbares Modul genügt. Das ist perfekt für Firewalls und andere paketbasierte Anwendungen.
Eingeklinkt
Die erste Aufgabe des Kernelmoduls besteht darin, einen Hook zu registrieren. Der Kernel weiß dann, wofür sich dieses Modul interessiert. Dazu gibt es die beiden nahe liegend benannten Funktionen »nf_register_hook(struct nc_hook_ops*)« und »nf_unregister_hook(struct nc_hook_ops*)«. Letztere klinkt den Hook wieder aus. Das Entladen des Moduls ist wichtig, da es sonst zu sehr unschönen Kernelfehlern kommt. Kristallisationspunkt beim Registrieren des Hook ist die Struktur »nc_hook_ops«:
struct nf_hook_ops {
struct list_head list;
nf_hookfn *hook;
struct module *owner;
int pf;
int hooknum;
int priority;
};
Sie enthält alle für den Kernel relevanten Information zum Einhängen des Hook. Der erste Eintrag dient der Verwaltung in einer verketteten Liste. Die Hook-Funktion selbst ist in »hook« als Zeiger abgelegt. Über diesen Funktionszeiger ruft der Kernel später das Kernelmodul auf. Der »owner«-Eintrag speichert das zugehörige Modul, er findet sich bei zahlreichen weiteren Strukturen im Kernel.
« Zurück
1
2
3
4
Weiter »