cherezoff - stock.adobe.com

nftables versus iptables: Das müssen Linux-Admins beachten

Unter Linux werden nun iptables & Co durch nftables abgelöst. Dank geschickter Programmierung ändert sich zunächst zwar wenig, aber Vorsicht ist geboten.

Seit mehr als eineinhalb Dekaden ist iptables als Stateful-Filter das Firewall-Herzstück unter Linux und ein fester Bestandteil der meisten Distributionen. Konzeptionelle Schwächen der so genannten Netfilter-Module zur Kontrolle des ein- und ausgehenden Netzwerkdatenverkehrs erschweren Administratoren seit Jahren die Verwaltung der Firewall. Einen Nachfolger gibt es mit nftables schon seit einigen Jahren und die Verankerung im Kernel ist bereits vollzogen.

Im praktischen Tagesgeschäft ist nftables bisher kaum verbreitet, das wird sich nun jedoch ändern. Kommende Distributionen ersetzten iptables durch nftables und dennoch wird auch dieser Wechsel sehr schleichend vonstattengehen. Eine Kompatibilitätsschicht rund um nftables sorgt dafür, dass alle Kommandos und Konfigurationsbefehle von iptables zunächst auch auf dessen Nachfolger funktionieren.

Unterschiede und Gemeinsamkeit im Kernel

Aber noch einmal ganz von vorn: Über eine sehr lange Zeit hat sich iptables als Stateful-Filter für Verbindungen gemäß dem IPv4-Standard unter Linux etabliert. Sofern erforderlich, mussten Administratoren für die Absicherung der IPv6-Verbindungen auf IP6tables zurückgreifen – der IPv4-Variante nicht unähnlich, aber nicht exakt dasselbe. In einigen speziellen Fällen kommen Netzwerkbrücken zum Einsatz, deren Pakete an iptables vorbeiziehen und die daher überwachungstechnisch durch eine weitere Instanz – ebtables –  zu verarbeiten wären. Bezüglich der ARP-Ebene man kann es beinahe erahnen, kommt noch ein weiterer Filter zum Einsatz: arptables, im Stack technisch gesehen weiter unten angesiedelt.

Vier verschiedene Filtersysteme in einer Konstellation mit kaum wirklich verwendbaren administrativen Gemeinsamkeiten – eine über Jahre gewachsene Herausforderung für Linux-Administratoren. Programmtechnisch, so einige Quellen, seien die Unterbereiche im Quellcode weitgehend Duplikate, die für jede Firewall-Ebene einzeln im Einsatz sind. Das geht zu Lasten der Geschwindigkeit und Benutzbarkeit. Anders als sein Vorgänger, greift nftables im Kernel auf dieselben, abstrahierten Funktionen zu, die wiederum einheitliche Features bieten. Salopp formuliert hat die Entwicklungsgruppe rund um nftables aus den Fehlern der Vorgänger gelernt und möchte es nun besser machen.

Schon vor vielen Jahren wurden diese Nachteile erkannt und mit nftables ein entsprechender Nachfolger entwickelt. nftables ist ein Subsystem im Linux-Kernel zur Paketfilterung und zur Klassifizierung von Netzwerkpaketen, Datagrams und Frames. Seit der Version 3.13, veröffentlicht am 19.01.2014, ist nftables ein fester Bestandteil im Kern.

Praktischerweise nutzen die Entwickler eine eingebaute Kompatibilitätsschicht. Daher brauchen sich die meisten Anwender mit den exakten Details zunächst einmal kaum beschäftigen. Vom normalen Benutzer unbemerkt kommt seit dem Sommer 2018 die freigegebene Werkzeugsammlung iptables 1.8 zum Zuge – und das wahrlich trickreich implementiert. Das bisherige iptables-genannte Kommando, dass die IPv4-Anteile im Kernel adressiert, heißt nun iptables-legacy. Das Werkzeug iptables-compat reagiert nun auf iptables-nfs, verwendet dieselben Parameter wie die Legacy-Variante, arbeitet jedoch stattdessen mit nftables. Das Hauptziel dieser Verschiebung von Namen ist, iptables selbst freizubekommen. Je nach Distribution obliegt es nun dem jeweiligen Publisher, durch das Setzen eines symbolischen Links festzulegen, ob die neuere oder ältere Firewall tatsächlich angesprochen wird.

Am Beispiel Debian 10

Wer sich schon heute mit der künftigen Firewall-Software für Linux auseinandersetzen will, findet im Projekt-Wiki eine gut beschriebene Anleitung, um sich aus dem aktuellen Build unter Zuhilfenahme von git und make für den Linux Kernel 3.13 oder höher ein eigenes Paket zu erstellen. Für die gängigen Distributionen wie Debian, Ubuntu, Fedora oder Arch Linux findet sich ein Test-Zweig mit den jeweiligen Paketen. Ganz einfach wird es mit Debian 10 Buster. Hier ist man immerhin bereits im Versionsstatus RC1 angelangt – und hier ist das nftables-Framework bereits das Standard-Backend. Somit besteht die einfachste Herangehensweise für eigene Versuche in der Installation der jüngsten Debian Version 10.

Abbildung 1: Die aktuelle Version von Debian setzt erstmals auf nftables als Standard-Firewall-System.
Abbildung 1: Die aktuelle Version von Debian setzt erstmals auf nftables als Standard-Firewall-System.

In den Release Notes von Debian Buster heißt es hierzu: Beginnend mit iptables v1.8.2 enthält das Binärpaket iptables-nft und iptables-legacy, zwei verschiedene Varianten des Befehlszeilen-Kommandos iptables. Die nftables-basierte Variante, die das nf_tables-Subsystem des Linux-Kernels verwendet, ist nun Standard in Debian Buster. Die vorherige legacy-Variante nutzt das x_tables-Subsystem des Linux-Kernels. Zur Auswahl zwischen den beiden Varianten steht dem Administrator das update-alternatives-System zur Verfügung. Dies gilt für alle dazugehörigen, bereits etablierten Programme und Werkzeuge:

  • iptables
  • iptables-save
  • iptables-restore
  • ip6tables
  • ip6tables-save
  • ip6tables-restore
  • arptables
  • arptables-save
  • arptables-restore
  • ebtables
  • ebtables-save
  • ebtables-restore

Für all diese Kommandos wurden ebenfalls -nft- und -legacy-Varianten erstellt. Die -nft-Option ist für Nutzer gedacht, die nicht auf die native nftables-Schnittstelle wechseln wollen oder können. Allerdings wird allen Anwendern mit Erscheinen der Version 1.8.2 dringend empfohlen, auf die nftables-Schnittstelle umzusteigen, statt weiterhin das iptables-System zu verwenden.

Abbildung 2: Praktischerweise können Administratoren zunächst mit der ihnen bekannten iptables-Syntax weiterarbeiten.
Abbildung 2: Praktischerweise können Administratoren zunächst mit der ihnen bekannten iptables-Syntax weiterarbeiten.

nftables bietet einen vollwertigen Ersatz für iptables, aber mit erheblich besserer Performance, einer aufgefrischten Syntax, optimierter Unterstützung für IPv4/IPv6-Dual-Stack-Firewalls, vollständig autarken Operationen für dynamische Aktualisierungen der Regelsätze, eine Netlink-API für Drittanbieter-Anwendungen, schnellere Paketklassifizierung durch verbesserte generische set- und map-Infrastrukturen sowie vielen anderen Verbesserungen.

Diese Änderung in Debian 10 entspricht dem Vorgehen anderer großer Linux-Distributionen, wie beispielsweise RedHat, die jetzt nftables ebenfalls als Standard-Firewall-Werkzeug einsetzen. Anstelle von /sbin sind alle iptables-Binärdateien nun in /usr/sbin installiert. Ein symbolischer Link ist aus Kompatibilitätszwecken vorhanden, wird aber nach dem Lebenszyklus von Debian Buster entfernt. Administratoren sollten beginnen, etwaige hart codierte Binärpfade anzupassen. Grundsätzlich warnt jedes Lehrbuch vor statischen Pfadangaben, aber die Praxis zeigt, dass es immer wieder zu undynamischen Angaben kommt – aus Unwissenheit oder aus empfundenem Zeitdruck.

Für Debian 10 Buster, angekündigt für Juli 2019, ist der Long Term Support bis zum Jahr 2024 festgelegt. Bleibt es beim aktuellen Trend der zweijährigen Releases, erscheint 2021 Debian 11 Bullseye ohne die symbolischen Links. Für Linux-Firewall-Experten beginnt nun eine zweijährige Umstellungsphase zum moderneren Nachfolger.

Wie erwähnt kann der Administrator nftables, ganz wie gewohnt, mit iptables per Skript steuern. Der Befehl nft erlaubt zudem, die ganze Konfiguration aus einer Datei zu laden oder direkt in einer Shell interaktiv an den Regelwerken zu arbeiten. Dennoch ist es durchaus sinnvoll, sich schon jetzt mit der neuen Syntax vertraut zu machen. Denn, wie es auf einer der Wiki-Seiten zu nFtables zu lesen ist: Die neue Schreibweise ist einfach besser und schöner. Und noch ein Hinweis aus den Release Notes zum Abschluss: „Keine Anforderung, aber ein Ratschlag: Mischen Sie keine nftables- und iptables-Regelsätze, es sei denn, Sie wissen, was Sie tun.“

Nächste Schritte

Firewall-Arten im Überblick

Firewall in drei Schritten testen

Firewall-Konfiguration mit nmap testen

Erfahren Sie mehr über Netzwerksicherheit