Open Source im professionellen Einsatz
Linux-Magazin 09/2009
© mrberger, Photocase.com

© mrberger, Photocase.com

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

Wiedergeborener Wächter

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.

702

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.

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.

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.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 2 Heftseiten

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

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • NFtables landet in Linus' Kernel-Tree

    NFtables könnte in naher Zukunft IPtables als Standardpaketfilter für Linux ablösen. Nun ist der zugehörige Code in Linus' Hauptzweig gelandet.

  • Firewall-Nachfolger Nftables stellt sich dem Kernel vor

    Schon seit längerem diskutiert das Netfilter-Team über eine weitere Renovierung des Firewall-Codes im Linux-Kernel. Jetzt hat der Teamleiter Patrick McHardy die Ergebnisse monatelanger Arbeit unter dem Namen Nftables vorgestellt.

  • NFtables

    Seit knapp 13 Jahren macht IPtables den Türsteher für Linux und kontrolliert den Fluss der ein- und ausgehenden Netzwerkpakete mit Hilfe der Netfilter-Module. Mit dem anvisierten Einzug von NFtables in den Kernel bahnt sich jedoch eine Wachablösung an, die IPtables womöglich den Job kostet.

  • In eigener Sache: Artikel-Bundle "Netzwerk total" für echte Profis

    Effiziente Netzwerke betreiben ist die Domäne von Linux schlechthin - da macht ihm kein anderes System etwas vor. Offen und pragmatisch, effizient und anpassbar sind seine Tools und Protokolle. Dieser Schwerpunkt widmet sich dem Klassiker und nimmt Neues und Nützliches unter die Lupe.

  • Kostenloses Lesefutter aus dem Linux-Magazin 09/2009 "Netzwerk Total"

    Mit Erscheinen von Linux-Magazin 08/2010 sind die Artikel der Linux-Magazin-Ausgabe 09/2009 "Netzwerk total: Neue Sicherheits-, Performance- und HA-Tools für den Admin" in den frei zugänglichen Bereich von Linux-Magazin Online gerückt.

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.