01/2014

Packet Filtering mit Know-how Neue Türpolitik NFtables

84 Seit knapp 13 Jahren macht den Türsteher für und kontrolliert den Fluss der ein- und ausge- henden Netzwerkpakete mit Hilfe der -Module. Mit dem anvisierten Einzug von NFtables in den Kernel

bahnt sich jedoch eine Wachablösung an, die IPtables womöglich den Job kostet. Martin Loschwitz www.linux-magazin.de

NFtables ­ gehört haben. Dieser Artikel fragt darum, was die Software ausmacht und wieso sie besser als IPtables ist.

Revolution auf Raten

Ein Rückblick auf den Werdegang der diversen Paketfilter unter Linux führt schnell vor Augen, dass jeder neu einge- führte Filter stets das direkte Resultat ei- ner Unzufriedenheit mit der bestehenden Lösung war. Der Paketfilter bie- tet sich dafür wunderbar als Beispiel an. Sein Vorgänger IPfwadm war im Grunde eine Portierung des IPfw-Werkzeugs aus dem BSD-Universum und verfügte nicht über besonders ausgefeilte Fähigkeiten.

© Wattana Tasanart, 123RF.com Tasanart, © Wattana Welche Netzwerkpakete rein und wieder raus durften, ließ sich noch einstellen, Firewalls sind keine Software, sondern Kernel, das die Entwickler seither konti- aber nach diversen fortgeschrittenen Fea- ein umfassendes Konzept – das beteuern nuierlich verbessert und funktional aus- tures suchten Administratoren damals jedenfalls die Konstrukteure von Sicher- gebaut haben. Bis heute bewährt sich vergeblich. heitslösungen immer wieder. Und ein IPtables als alleiniger Standardfilter für Der Einsatz von Konditionen blieb in gewichtiger Bestandteil dieses Konzepts Pakete unter Linux. der Ägide von IPfwadm beispielsweise sind die Paketfilter (Packet Filter): Das Mit der Linux-Version 3.13 könnte sich Wunschdenken – Konstrukte wie „Falls sind Werkzeuge, die es Administratoren jedoch eine Wachablösung anbahnen: ein Paket von der IP 192.168.0.1 kommt, ermöglichen, auf Kernelebene bestimm- Die Maintainer des Paketfilters NFtables springe zur Kette XYZ“ waren daher nicht ten Netzwerkpaketen den Zutritt zum [1] haben offiziell beantragt [2], ihre Lö- umsetzbar. Auch Quality of Service, also System zu erlauben oder zu verbieten, sung in den Mainline-Kernel aufzuneh- eine eingebaute Kontrolle der Bandbreite, was sie gewissermaßen zu Türstehern men. Zwar steht der Erfolg dieser Bestre- hatte IPfwadm schlicht nicht implemen- von Linux macht. bung bei Redaktionsschluss noch nicht tiert. Und wer etwas anderes als TCP, fest, weil der Release-Zyklus für Linux UDP oder ICMP filtern wollte, der stand Startschuss: Kernel 3.13 3.13 noch nicht begonnen hat. Doch dass auf verlorenem Posten. Linux-Chef Torvalds dem Ansinnen Folge Der Nachfolger IPchains räumte mit die- Jene Tools haben eine wechselhafte leisten könnte, gilt als ziemlich wahr- sen Schwierigkeiten auf, doch waren die Geschichte hinter sich – zwischen den scheinlich. Sollte NFtables den Einzug Entwickler und Admins auch mit diesem Linux-Versionen 2.0 und 2.4 wechselte in den Kernel schaffen, dürfte IPtables Produkt nicht wirklich zufrieden. Wie der Kernel gleich zweimal das Standard- keine glorreiche Zukunft mehr haben: IPfwadm­ beherrschte auch IPchains di- werkzeug zum Filtern von Paketen: Kam Nicht nur kann NFtables die bisherige verse Funktionen nicht, die einen ordent- in Linux 2.0 noch IPfwadm zum Einsatz, Lösung vollständig ersetzen, es hat sogar lichen Packet Filter ausmachen: So arbei- setzte Version 2.2 lieber auf IPchains. In deutlich mehr drauf. tete die Lösung durchgehend stateless Linux 2.4 hielt dann schließlich IPtables ­ Frappierend ist, dass selbst viele ein- (Details im Kasten „Stateful und state- (Abbildungen 1 und 2) Einzug in den gefleischte Admins noch nichts von less“), beherrschte nur eingeschränktes 01/2014 Know-how D-NAT (das so genannte Masquerading) und kämpfte mit einer ganzen Reihe wei- terer Unzulänglichkeiten.

Defizite von IPtables NFtables

Auch die aktuelle Filter-Implementierung hat Nachteile. Aus den Diskussionen der 85 Entwickler in den letzten Jahren kristal- lisierten sich gleich mehrere Probleme heraus. Derzeit besteht der auf IPtables

aufbauende Stack aus vier Teilen: www.linux-magazin.de n IPtables selbst fungiert als Stateful- Abbildung 1: IPtables heißt schon seit Jahren der Standardpaketfilter von Linux. Aus einer tabellarischen Filter für Verbindungen nach dem Anordnung wie dieser generiert IPtables … IPv4-Standard. n IP6tables tut das Gleiche wie IPtables, allerdings für IPv6-Verbindungen. n setzt im Stack weiter unten an und filtert bereits auf ARP-Ebene unerwünschte Pakete. n EBtables kümmert sich als Sonderfall um Pakete, die Linux über Netzwerk- brücken (Bridges) empfängt und die so dem normalen IPtables entgehen. Der Haken an der Sache: Es gibt kaum IPtables-Bestandteile, die sich von den vier Abteilungen gemeinsam nutzen las- Abbildung 2: … im Stile eines Stateful-Filters Regeln, aufgrund derer er dann Netzwerkpaketen eine Aufent- sen. Vielmehr existieren jeweils eigene haltsgenehmigung erteilt oder eben nicht. Unterbereiche im Code, die weitgehend Duplikate sind. Einige Admins werfen teile beseitigen und den Linux-Kernel mit lerteam auch Pablo Neira Ayuso, doch IPtables zudem eine miserable Usability einem Framework zum Filtern von Pake- dann tat sich ein paar Jahre lang gar und ein mangelhaftes Error Reporting ten ausstatten, das den Anforderungen nichts: 2009 verschwand die Projektweb- vor. Da es aber der Standard im Kernel der Zeit besser gewachsen ist als IPtables seite und die meisten Interessenten hiel- ist, haben sich die meisten mit der Situ- (siehe Kasten „Unter der Haube“). ten die Lösung bereits für tot. ation arrangiert. Ins Leben gerufen hat das NFtables- Zu Unrecht wie sich herausstellte, denn Projekt ursprünglich Patrick McHardy: im Oktober 2012 zeigte sich, dass mit Scheintot Bereits im September 2008 stellte er es NFtables noch zu rechnen war. Der auf dem Netfilter-Workshop in Paris der zweite Core-Entwickler Ayuso stellte auf Genau hier bringt sich NFtables ins Spiel: Öffentlichkeit vor (Abbildung 3). Zwi- der Netfilter-Mailingliste [3] einen Ent- Die Lösung möchte die erwähnten Nach- schenzeitlich gesellte sich zum Entwick- wurf für einen NFtables-Layer vor, der

Stateful und stateless Im Bereich der Paketfilter unterscheidet man zelne Paket im Grunde nur eine Hopp-oder- Einerseits ist das vorteilhaft, weil der Paketfil- üblicherweise die Stateful- von den Stateless- Top-Entscheidung nötig ist, arbeiten Stateless- ter so viel flexibler funktioniert, andererseits Filtern. Beide Systeme haben ihre spezifischen Firewalls sehr genügsam. Der Nachteil liegt birgt eine solche Lösung auch einen unschönen Vor- und Nachteile. Eine Stateless- darin, dass solche Lösungen keine Einzelver- Nachteil: Stateful-Filter sind in aller Regel sehr zeichnet sich dadurch aus, dass sie eingehende bindungen verfolgen können und daher nicht viel anspruchsvoller bei den Systemressourcen Netzwerkpakete einzeln analysiert und für je- wissen, welche Pakete zu einer aktiven Verbin- als die Stateless-Systeme. des Paket auf der Grundlage der festgelegten dung gehören. Trotzdem haben sich in den vergangenen Jah-

Regeln eine Entscheidung trifft – aber ohne ren die Stateful-Tools in der IT weitgehend Zustandsvolle Feuerwände den Zusammenhang zwischen den einzelnen durchgesetzt. Angesichts der immer größer Paketen zu beachten. Bei einer Stateless- Stateful-Firewalls kennen hingegen den Zu- werdenden Hardwarekapazitäten und der im- Firewall merkt die Firewall sich also nicht, ob sammenhang zwischen einzelnen Paketen mer sparsamer arbeitenden Programme scheint eingehende Pakete möglicherweise zu einer und ordnen die eingehenden Pakete den vom es keinen Grund zu geben, die Ressourcen des bereits aufgebauten und legitimen Verbindung System bereits aufgebauten Verbindungen zu. Paketfilters zu beschneiden. Die Vorteile eines gehören. Das geschieht mittels diverser Memory-Mecha- gezielten Filterns nach Verbindungen überwie- Der Vorteil einer solchen Lösung ist der sehr nismen innerhalb des Paketfilters selbst, der gen für die meisten Admins offenbar den pro- geringe Ressourcenbedarf: Weil für jedes ein- einen Überblick aller Systemverbindungen hat. duzierten Overhead. 01/2014 Know-how

Programme Rule- Sets

NFtables NFtables- Parser Compiler Tool »nftables«

Userspace Kernel- NF-Lib 86 Kommunikation Abbildung 4: Hilfswerkzeuge wie Firehol sorgen dafür, dass Benutzer die kompli-

NFtables- Filter- Netlink- zierte Syntax von IPtables etwas einfacher nutzen können. Core Engine Interface

www.linux-magazin.de lichen Funktionen Freilich ist NFtables kein Quasi-Nachbau »INPUT« »OUTPUT« Netfilter- ... anbieten. von KVM & Co., der neue Paketfilter be- API »FORWARD«

Kernelspace Das ist gut, weil nötigt deren Funktionen größtenteils gar Network- Systemcalls NFtables auf diese nicht. Aber das Grundprinzip ist dem der Stack Interfaces Netz Weise jede Menge gängigen Virtualisierer sehr ähnlich: Ein duplizierten Code Paket landet im Netzwerkstack, wo es Abbildung 3: Im Jahre 2009 stellte Patrick McHardy erstmals seine Ideen für vermeidet und die der Bytecode-Interpreter analysiert, um NFtables vor, eine neue Art von Paketfilter. Pflege des ganzen dann zu entscheiden, was mit dem Paket Projekts deutlich passieren soll. vollständige Kompatibilität zu IPtables­ erleichtert. Zugleich macht sich die Ver- Letztlich versprechen sich die Entwickler herstellt und dieses damit faktisch über- zahnung mit dem Netzwerkstack des Li- von NFtables dank der beschriebenen flüssig macht. Nach dem üblichen Hick- nux-Kernels auch in Sachen Performance Architektur massive Performancege- hack um eine Mainline-Integration er- bemerkbar. winne, eine deutlich höhere Flexibilität suchten die Entwickler Linus Torvalds Während IPtables stets auf dem Netz- des Codes und eine bessere Wartbarkeit um die Aufnahme in den Kernel 3.13 werkstack aufbaut und sich aus diesem im Kernel. Die größte Herausforderung – nun wird es also langsam ernst für den zum Filtern von Paketen erst die not- besteht aber weniger in der Technik, son- Nachfolger von IPtables. wendigen Informationen besorgen muss, dern eher darin, den Anwendern einen steckt NFtables direkt im Netzwerkstack. fließenden Übergang von IPtables hin zu Einheitliche Architektur Es ist damit deutlich näher am Geschehen NFtables zu ermöglichen. und kann sich direkt mit den Paketen be- NFtables unterscheidet sich in vieler- schäftigen, die durch den Stack wandern, Mühsame Migration lei Hinsicht von seinem Vorgänger. Die statt sie erst separat anzufordern. wichtigste Differenz besteht zweifellos Auch sonst geht NFtables durchaus cle- Denn genau dort liegt eigentlich der Hase in der Architektur, die beiden Lösungen ver zu Werke und orientiert sich an den im Pfeffer. Nach den Wirren um den zugrunde liegt: Wirkt IPtables mittler- Berkeley Packet Filters (BPF). Wichtiges Paketfilter in früheren Linux-Versionen weile wie ein großes Flickwerk, greifen Herzstück der gesamten Lösung ist eine haben sich die meisten Anwender und bei NFtables alle Komponenten ineinan- virtuelle Maschine innerhalb des Kernels, Distributoren mittlerweile mit IPtables der: IPv4, IPv6, ARP und Bridging greifen die das eigentliche Packet Filtering über- arrangiert. Praktisch alle Firewall-Werk- im Kernel auf die gleichen, abstrahierten nimmt. Das ist genau der Teil, der im zeuge, die den gängigen Systemen bei- Features zurück, die ihrerseits die eigent- Netzwerkstack eingebettet ist. liegen, sind tief in IPtables verwurzelt

Unter der Haube Zwar wird NFtables mit einer eingebauten Kom- bereit, um Regeln für NFtables in den Kernel zu Sachen Syntax eher den BSD-Paketfiltern nach, patibilitätsschicht für IPtables ausgestattet integrieren. Im Grunde könnte jede Applikation die beschreibende Regeln nutzen statt die we- sein, doch langfristig lautet der Plan eher, die unter Einsatz dieser beiden Bibliotheken selbst nig intuitive Syntax von IPtables nachzubilden. jetzigen IPtables-Programme auf NFtables um- NFtables-Regeln erstellen, Nft ist im Normalfall Die folgende Regel würde beispielsweise Traffic zustellen. Die Lösung ist ein eigenes Userland- nur noch ein Frontend von vielen. Diese Art des auf Port 22, also dem SSH-Port, zulassen: Werkzeug namens Nft. Umgangs mit Kernelfunktionen entspricht dem U Zwei Abhängigkeiten bringt Nft dabei mit: akzeptierten Standard und ist in vielen anderen nft add rule ip filter input tcp dport Abgesehen vom Kernel mit NFtables-Support Teilen des Kernels ebenfalls präsent. 22 accept

benötigt es die Bibliothek Libmnl (Minimalis- Ein kleines Trostpflaster ist, dass die Regeln Das Nft-Programm tic Netlink Library, [4]). Sie exponiert alle im von NFtables deutlich intuitiver sind als das Netlink-Teil des Kernels vorhandenen Funkti- Zumindest anfangs werden Admins wohl auf bis dato Bekannte. Wer schon einmal IPtables- onen ins Userland, wodurch Programme auf Nft setzen, wenn sie Filterregeln im Kernel ak- Regeln konstruiert hat und diese Erfahrung mit sie zugreifen können. Ihr zur Seite steht die tivieren möchten. Wer die Syntax von IPtables dem gezeigten Befehl vergleicht, wird die neue Bibliothek LibNFtables für NFtables selbst. Sie gewohnt ist, wird sich allerdings an eine neue Syntax aufgrund ihrer Einfachheit vermutlich wiederum stellt die notwendigen Funktionen Syntax gewöhnen müssen, denn Nft eifert in willkommen heißen. 01/2014 Know-how und darauf ausgelegt, aus ihm das Beste patibilität erhalten, im Kernel wäre den- Zwar werden wohl nicht sämtliche Dis- herauszuholen. Admins haben nicht sel- noch der neue Paketfilter tätig. tributoren sofort auf den neuen Zug ten eigene Skripte verfasst, die spezifi- Freilich hängt die Akzeptanz einer sol- aufspringen, aber sollte es NFtables in sche IPtables-Konfigurationen nach ihren chen Lösung immer von der technischen absehbarer Zeit in den Kernel schaffen

Wünschen umsetzen. Auch Drittanbieter- Qualität ihrer Implementation ab, und und erreicht die IPtables-Kompatibilität NFtables Software wie die des Firehol-Projekts [5] relativ sicher ist, dass die Entwickler nur einen stabilen Zustand, wird es für das sind stark mit IPtables verbandelt (Ab- eine Chance haben, um einen guten ers- altgediente IPtables eng. Bis es jedoch bildung 4). ten Eindruck zu erzeugen. Dass sie ihren angepasste Tools gibt, die sich auch die 87 Die NFtables­-Entwickler müssen die Code nun in den Kernel bringen wollen, spezifischen Vorteile von NFtables zu- starken Verbindungen mit bereits existie- zeigt jedoch, dass sie zumindest selbst nutze machen, dürfte noch etwas Zeit render Software beachten, wenn sie ihr davon überzeugt sind, eine stabile Code- vergehen. (kki/mfe) n

neues Filtersystem in den Kernel integ- qualität erreicht zu haben. www.linux-magazin.de rieren wollen. Ein inkompatibles System ließe die Akzeptanz der neuen Lösung Fazit Infos vermutlich auf null sinken, das Projekt [1] NFtables-Website: wäre zum Scheitern verurteilt. Mit NFtables könnte erstmals seit Kernel [http://​­netfilter.​­org/​­projects/​­NFtables/] Nicht zufällig erhielt NFtables in dem 2.4 eine neue Generation von Paketfil- [2] NFtables bereit für den Kernel: Augenblick Aufwind, als seine Entwick- ter in Linux einziehen. Technisch ist die [http://​­lwn.​­net/​­Articles/​­570921/] ler auf der Netfilter-Mailingliste eine Software IPtables überlegen, denn sie ist [3] IPtables-Kompatibilität für NFtables: Kompatibilitätsschicht zu IPtables vor- stateful, modularer, lässt sich einfacher [http://​­www.​­spinics.​­net/​­lists/​ stellten. Der Layer soll ein zu IPtables an Protokolle und Techniken anpassen, ­netfilter‑devel/​­msg23831.​­html] kompatibles Kernelinterface anbieten, weil sie dafür vorhandenen Code nutzt, [4] Libmnl: das die IPtables-Aufrufe­ im Hintergrund und dürfte aus diesem Grund auch ver- [http://netfilter.org/projects/libmnl/] auf NFtables umbiegt. So bliebe die Kom- gleichsweise wartungsarm sein. [5] Firehol: [http://​­www.​­firehol.​­org]