Login
Newsletter
Werbung

Do, 2. Dezember 2004, 00:19

Rope: Filterbeschreibungssprache für IPTables

Mit Rope steht eine Skriptsprache zur Beschreibung von Filtern für IP-Tables - dem Linuxpaketfilter seit dem Kernel 2.4 - zur Verfügung.

Rope basiert auf der Idee des IP-Tables-Moduls "String", welches Pakete nach bestimmten Zeichenketten zu durchsuchen vermag. Rope ist hingegen ein Filtermodul, welches eine eigene Sprache zur Definition komplexer Regeln bereitstellt - aus einem darauf basierenden Wortspiel rührt auch der Name des Projektes: eine starke Schnur (String) ist ein Seil oder Tau (Rope). Filtermodule für IP-Tables sind normalerweise in C programmiert und geben dem Paketfilter darüber Auskunft, ob ein Paket bestimmten Kriterien entspricht oder nicht.

Rope soll die Implementierung solcher Programme auch ohne die Kenntnisse von C ermöglichen und wird deshalb in einer Einführung auf der Rope-Homepage beleuchtet. Diese behandelt Themen wie die Syntax der Sprache, die auf Grund der Stackorientierung im Wesentlichen auf der Postfixnotation basiert, und die elementaren Operationen in den Programmen, wie das Lesen von Zeichen auf den Stack, Verbeinbarungen (Assertions) und die Kombination aus beidem: Expect. Über spezielle Variablen stehen dem Programmierer alle Felder des Paketkopfes zur Verfügung.

Normalerweise laufen Rope-Programme als IP-Tables-Modul im Kernelspace, allerdings ist Interpreter zu Testzwecken auch im Userspace lauffähig. Die Rope-Homepage stellt ein Tutorial zur Verfügung, welches die Kompilierung des Userspace-Interpreters und das Testen mit vorher abgefangenen Paketen beschreibt. Als Praxisbeispiele liefern die Entwickler Rope-Skripte zum Blockieren von Gnutella und Bittorrent. Ein drittes Skript identifiziert HTTP-Transferdaten, die die angegebene Content-Length überschreiten.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung