Aus Linux-Magazin 09/2009

Netfilter-Tables schicken sich an, das Erbe von IP-Tables anzutreten

© mrberger, Photocase.com

Auch für einen weisen Hüter der Netzwerkeingänge ist es irgendwann an der Zeit, den Stab weiterzugeben. Das Netfilter-Team bereitet gerade den Firewall-Umstieg von IP-Tables zu NF-Tables vor. Der Kernel profitiert von schlankeren Strukturen, Anwender dürfen sich auf eine echte Filtersprache freuen.

Manch Admin wird aufstöhnen. Nicht schon wieder ein neues Firewall-Subsystem im Linux-Kernel”, denken vielleicht diejenigen, die von der Ankündigung Patrick McHardys gehört haben, dass das Paket NF-Tables den aktuellen Status Quo beim Linux-Firewalling ablösen soll [1]. Sie erinnern sich an den Reigen aus dem von FreeBSD entlehnten »ipfw« der Serie 1.x, »ipfwadm« aus Kernel 2.0, »ipchains« aus Version 2.2 und den anschließenden Wechsel auf die Netfilter-Architektur mit seinem Tool »iptables« sowie diversen Geschwisterprogrammen.

Doch die letzte Programmfamilie hat sein ursprünglicher Autor Rusty Russell bereits im Jahr 1998 aus der Taufe gehoben. So waren sich seine Nachfolger Harald Welte und später Patrick McHardy einig, dass es irgendwann Zeit für eine neue Runde würde, um das Filtern von Netzpaketen im Linux-Kern zu verjüngen.

In Würde gealtert

Netfilter zeigt seit Jahren gute Leistungen, wie viele Zusatzmodule und der Einsatz in vielen kommerziellen Softwareprodukten und Appliances belegen. Dennoch ärgern geplagte Admins auch eine Reihe von Widrigkeiten, mit denen sie umgehen müssen: Die Befehlssyntax, um Regeln in Ketten anzuordnen, hat viele Sonderfälle und gilt als komplex und unhandlich.

Etwas Linderung verspricht zwar ein Füllhorn voll von Hilfsskripten, Programme und Generatoren, die die konkreten Befehlszeilen vor dem Admin verstecken, aber einige architektonische Probleme können auch die Tools nicht lösen. So ist es gegenwärtig nicht möglich, einzelne Regeln inkrementell einer laufenden Netfilter-Instanz hinzuzufügen. Stattdessen lädt das Werkzeug den aktuellen Regelsatz in den Userspace, fügt die neue Regel hinzu und überträgt die Vereinigungsmenge wieder in den Kernel. Gerade bei großen Regelsätzen wird das schnell zu einem ernsthaften Performance-Problem.

Das galt auch für einige Eigenschaften hinter den Kulissen des Kernels: So verarbeitet der Netfilter-Kern eine Regel nach der anderen. Zwar hatten einige Entwickler mit NF-Hipac ein Matching auf Grundlage von Baumstrukturen vorgeschlagen und implementiert [2]. Das Projekt führten sie aber seit 2005 weder fort, noch integrierten sie es in den Netfilter-Code, was sich dessen damaliger Chef Harald Welte erhofft hatte.

Trotz der Fülle an Erweiterungen sah der jetzige Projektleiter Patrick McHardy, dass sich nicht alle Ideen im aktuellen Netfilter-Code realisieren lassen und setzte sich an einen Neuanfang, den er gegenwärtig NF-Tables nennt [3]. Die Schnittstellen zum eigentlichen Linux-Kernel lässt er dabei weitgehend unangetastet. Die Einstiegspunkte für Pakete, die vom Userspace den Kernel betreten, die von einem Interface kommen oder den Kern wieder verlassen sollen, bleiben also bestehen (Abbildung 1).

Abbildung 1: Eine einfache Grafik als Ascii-Art ist auch heute noch Grundlage des Linux-Firewall-Subsystems Netfilter. An den Schnittstellen und Einhängepunkten ändert sich auch unter NF-Tables wenig.

Abbildung 1: Eine einfache Grafik als Ascii-Art ist auch heute noch Grundlage des Linux-Firewall-Subsystems Netfilter. An den Schnittstellen und Einhängepunkten ändert sich auch unter NF-Tables wenig.

Tradition neu geboren

Neu hingegen ist die Engine, die die Pakete filtert. Sie wird deutlich schlanker als ihr Vorgänger, da sie nur einfache Operationen ausführt, etwa ob ein Paket an einem Offset einen festgelegten Wert besitzt (siehe Abbildung 2). Außerdem hat McHardy den Kern um Basis-Operatoren wie einen Match auf Mengen erweitert.

Abbildung 2: NF-Tables setzt wie sein Vorgänger auf den Hooks des Linux-Netzwerkstacks auf. Die Entwickler haben jedoch die Filter-Engine verschlankt und viel Wissen über Protokolle in den Userspace verlegt.

Abbildung 2: NF-Tables setzt wie sein Vorgänger auf den Hooks des Linux-Netzwerkstacks auf. Die Entwickler haben jedoch die Filter-Engine verschlankt und viel Wissen über Protokolle in den Userspace verlegt.

Wer früher eine Zahl von unzusammenhängenden Subnetzen filtern wollte, die sich nur durch ein Oktett unterschieden, musste auf jedes Segment einzeln prüfen. Nun übernimmt dies eine einzige atomare Operation. Der frühere Code hatte viel mehr Wissen über den Aufbau einzelner Protokolle eingebaut. Diese Aufgabe übernehmen nun Userspace-Tools, die Regeln in eine binäre Darstellung übersetzen – analog zum Bytecode einer virtuellen Maschine.

Der neue NF-Tables-Kern ordnet die Regeln in Bäumen an und nutzt dazu stärker TLV genannte Datenstrukturen, die für Type-Length-Value stehen. Die Änderungen führen nebenbei dazu, dass ein Subsystem künftig praktisch jedes Protokoll filtern kann, also neben IP, IPv6 und ARP auch solche des Link-Layers. So fallen allein gut 10 000 Zeilen duplizierten Codes aus dem Kernel weg.

Der Netfilter-Kern wird außerdem schneller, weil er auf Funktionen wie Paketzähler in der Grundeinstellung verzichtet. Nur wenige Netfilter-Anwender nutzten sie. Wer will, darf sie wieder aktivieren. Dies geschieht mit Verdicts genannten Markierungen, von denen Paketen mehrere anheften dürfen. Sie legen fest, was mit ihnen geschieht: In einem Schritt statt mittels mehrerer Checks legt die neue Engine das Schicksal jedes Datenpakets fest.

Weise Worte

Einige Admins wünschen sich eine Linux-Portierung der OpenBSD-Firewall »pf«, die mit einer leistungsfähigen Filtersprache aufwartet. Dazu wird es dem Vernehmen nach jedoch nicht kommen. – zu groß sind die architektonischen Unterschiede im Kern, lässt das Netfilter-Team wissen. Dennoch dürfen sich Admins auf ein neues User-Interface freuen: Anstelle des unhandlichen Tools »iptables« mit seinen vielen, teilweise voneinander abhängiger Kommandozeilenoptionen spendiert das Netfilter-Team nun eine eigene Beschreibungssprache. An den Details der Syntax feilen die Entwickler noch, haben sich dazu aber extra einige Sprachdesigner ins Boot geholt. Die Anweisungen

define local_ifs = { eth0, eth1 }
filter input meta iif $local_ifs daddr 10.0.0.0/8 counter accept

lassen Pakete für das Netz 10.0.0.0/8 passieren, wenn sie von den lokalen Interfaces aus kommen. NF-Tables loggt dies. Das deutet bereits an, dass es wohl möglich ist, Regelsätze von IP-Tables in solche für NF-Tables zu übersetzen, wenn sie überschaubar sind. Gleichwohl existiert so ein Werkzeug bislang nur in den Köpfen der Entwickler und Wünschen der Anwender.

In der Ruhe liegt die Kraft

Nach einigen Vorstellungsrunden im Kreise der Netfilter-Programmierer ging McHardy im März 2009 an die Öffentlichkeit und präsentierte die erste Version des Subsystems den Linux-Entwicklern. Der herunterladbare Code sei zwar prinzipiell funktionsfähig, aber noch weit von der Produktionsreife entfernt. Aktuell arbeitet das Team daran, gleich auch die Mechanismen des Traffic-Shaping mit dem Kommando »tc« in die Beschreibungssprache mit aufzunehmen.

Der Entwickler steckt den Migrationszeitraum, in dem Distributionen und Produktanbieter auf NF-Tables umsteigen, mit mindestens drei Jahren ab. Um das zu schaffen, sei noch intensives Testen nötig. Um dafür die Voraussetzungen zu schaffen, will McHardy seinen Code möglichst bald in die Breite tragen. Im Gespräch mit dem Linux-Magazin verriet er: “Ich hoffe, den Code bis Linux 2.6.33 im Kernel zu haben.” Gelänge dies, dürfen Experimentierfreudige zum Ende des Jahres bereits einen reinkarnierten Hüter ihrer Systeme beschäftigen.

Infos

[1] Patrick McHardy, “First release of nftables”: [http://lwn.net/Articles/324251/]

[2] NF-Hipac: [http://www.hipac.org]

[3] Nils Magnus, “Firewall-Nachfolger Nftables stellt sich dem Kernel vor”: [http://linux-magazin.de/NEWS/Firewall-Nachfolger-Nftables-stellt-sich-dem-Kernel-vor]

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 2 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben