Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2006  »  09  »  Schnatternder Wächter  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

© photocase.com

Technologiestudie: Das Firewall-Modul Singwall meldet eintreffende Pakete akustisch

Schnatternder Wächter

von Mark Vogelsberger
Erschienen im Linux-Magazin 2006/09

Horch, was kommt von draußen rein: Eine Firewall, die losträllert, sobald Pakete eintreffen, unterrichtet den lauschenden Admin über die Lage im Netz. Damit das Spiel nicht monoton ausfällt, dirigiert die Portnummer die Tonhöhe. Diese Virtuosität gelingt mit Netfilter-Hooks und dem passenden Modul.

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.

Sie können diesen Artikel als PDF für 99 Cent kaufen. Klicken Sie dazu einfach auf eine der beiden Bezahloptionen Paypal oder ClickandBuy.


Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Vordrängler Queueing Disciplines: Traffic Control mit Linux
Die Arbeit machen andere Nach Kundenwunsch vorkonfigurierte Firewall-Appliance
Am offenen Herzen Beweise sammeln, während der Angreifer noch aktiv ist
Wer hat an der Uhr gedreht? Aus dem Nähkästchen geplaudert: NTP & Co.
Kern-Technik Kernel- und Treiberprogrammierung mit dem Kernel 2.6 - Folge 26
Erziehungsmaßnahme Firewalling und Traffic Shaping mit Analyse der Schicht-7-Protokolle
Whitepaper
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (3)
von
vizzy,
19.01.2009 16:38
nh -- network_header, immernoch compile error in kernel 2.6
auch nach dem aendern von nh in network_header gibt es immernoch einen fehler:


make
make -C /lib/modules/2.6.24-1-686/build SUBDIRS=/root/singwall modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.24-1-686'
CC [M] /root/singwall/singwall.o
/root/singwall/singwall.c: In function ‘hook_func’:
/root/singwall/singwall.c:106: error: request for member ‘iph’ in something not a structure or union
/root/singwall/singwall.c:108: error: request for member ‘iph’ in something not a structure or union
/root/singwall/singwall.c:110: error: request for member ‘iph’ in something not a structure or union
/root/singwall/singwall.c:120: error: request for member ‘iph’ in something not a structure or union
/root/singwall/singwall.c:121: error: request for member ‘iph’ in something not a structure or union
/root/singwall/singwall.c: In function ‘init_module’:
/root/singwall/singwall.c:151: warning: assignment from incompatible pointer type
/root/singwall/singwall.c:156: warning: assignment from incompatible pointer type
make[2]: *** [/root/singwall/singwall.o] Error 1
make[1]: *** [_module_/root/singwall] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.24-1-686'
make: *** [all] Error 2



das war dann doch nich alles was man anpassen muss, hat jemand eine idee wie man das unter einem aktuellen kernel zum laufen kriegt?

von
linuxkernel,
20.10.2008 10:55
network_header in Linux 2.6.24
Hallo

Ja richtig...!!

guk mal in /usr/src/...headers.../include/linux/skbuff.h

dann statt "nh" findest du "network_header"

Deswegen solltest du das anpassen

Gruesse
von
vizzy,
29.08.2008 01:36
Fehler beim compilieren
hat ejamdn ne ahnung was da los ist??? ich verwende debian etch r4 mit kernel 2.6.24-1

:~/bin/singwall$ make
make -C /lib/modules/2.6.24-1-686/build SUBDIRS=/home/voa/bin/singwall modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.24-1-686'
CC [M] /home/voa/bin/singwall/singwall.o
/home/voa/bin/singwall/singwall.c: In function ‘hook_func’:
/home/voa/bin/singwall/singwall.c:106: error: ‘struct sk_buff’ has no member named ‘nh’
/home/voa/bin/singwall/singwall.c:108: error: ‘struct sk_buff’ has no member named ‘nh’
/home/voa/bin/singwall/singwall.c:110: error: ‘struct sk_buff’ has no member named ‘nh’
/home/voa/bin/singwall/singwall.c:120: error: ‘struct sk_buff’ has no member named ‘nh’
/home/voa/bin/singwall/singwall.c:121: error: ‘struct sk_buff’ has no member named ‘nh’
/home/voa/bin/singwall/singwall.c: In function ‘init_module’:
/home/voa/bin/singwall/singwall.c:151: warning: assignment from incompatible pointer type
/home/voa/bin/singwall/singwall.c:156: warning: assignment from incompatible pointer type
make[2]: *** [/home/voa/bin/singwall/singwall.o] Error 1
make[1]: *** [_module_/home/voa/bin/singwall] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.24-1-686'
make: *** [all] Error 2