Open Source im professionellen Einsatz

Userspace-Zugriff

Listing 1 ist ein Beispiel-C-Programm, das Datenfelder von ICMP-Echo-Request-Paketen [7] verändert, abhängig vom Inhalt einer angegebenen Datei. Diese Aufgabe ausschließlich im Kernelspace zu lösen wäre relativ schwierig - mit Iptables und NFQueue kann ein Userspace-Programm sie hingegen einfach und elegant lösen. Nicht nur C-Programme können die NFQueue-Bibliothek nutzen. Es ist genauso denkbar, die Entwicklung in einer anderen Hochsprache wie C++ oder auch mit einer interpretierten Sprache wie Perl durchzuführen. Dafür bietet sich das SWIG-Framework [8] an, es gibt aber auch Pakete für Skriptsprachen wie Perl und Python [9].

Andocken an die Warteschlange

Wenn das Beispielprogramm die Kommandozeilenparameter überprüft hat (Zeilen 56 bis 59), folgen die ersten Schritte in der Funktion »main()« (ab Zeile 48). Hinweise zu den verwendeten Funktionen gibt Tabelle 1. Wichtig ist vor allem Zeile 78, die die Callback-Funktion »callback_funktion()« an die NFQueue-Funktion »nfq_create_queue()« übergibt. Ihr viertes Argument (hier »(void *)fd«) ist optional und für Verweise auf private Daten bestimmt. Der Programmierer kann damit einen Zeiger auf Daten übergeben, die das Netfilter-Subsystem an die Callback-Funktion weiterreicht. Der Beispielcode verwendet das Argument, um ihr den lokalen Datei-Deskriptor mitzuteilen.

Die Funktion »nfq_fd()« (Zeile 89) erzeugt aus dem übergebenen Handle einen Deskriptor, den das Programm an den »recv()«-Systemaufruf übergeben kann. Er dient dazu, Daten von der Warteschlange zu lesen. Die im Schleifenrumpf aufgerufene Funktion »nfq_handle_packet()« (Zeile 91) nimmt diese Daten entgegen und ruft im Anschluss die Callback-Funktion auf.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook