Der Linux-Kernel hat bereits die unterschiedlichsten Paketfilter enthalten. Angefangen mit ipfwadm folgten darauf ipchains und iptables. Seit dem Kernel 3.13 steht nun nftables [1], kurz nft, zur Verfügung. Mit Hilfe einer eigenen virtuellen Maschine sorgt nftables dafür, dass Regelsätze in einen Bytecode umgewandelt werden, der dann im Anschluß in den Kernel geladen wird. Dies sorgt nicht nur für eine bessere Performance, sondern gestattet es Administratoren auch, dynamisch neue Regeln zu aktivieren, ohne dass der gesamte Regelsatz komplett neu zu laden ist. Teile des alten Netfilter-Frameworks verwendet nftables aber weiterhin, das erspart die Entwicklung von neuen Hooks. Diese sind dabei eigentlich nichts anderes als bestimmte Punkte im Netzwerkstack des Linux-Kernels, an denen ein Paket inspiziert wird und im Falle eines Matches eine oder auch mehrere Aktionen ausgeführt werden.
Hierfür existieren an diesen Punkten Tabellen (Tables), in denen Ketten (Chains) gespeichert sind. Diese wiederum enthalten die eigentlichen Regeln (Rules). Die Art und Weise, wie die einzelnen Pakete nun anhand der Regeln überprüft werden, ist eine weitere Neuerung von nftables. Die Klassifizierung ist nun wesentlich ausgefeilter und eleganter, als es noch zu Zeiten von iptables der Fall war. So besteht nun beispielsweise die Möglichkeit, mit Hilfe von Adressfamilien unterschiedliche Pakete mit einer einzelnen Regel zu verarbeiten. Wer in der Vergangenheit IPv4- und IPv6-Pakete untersuchen wollte, der benötigte hierfür nicht nur unterschiedliche Regeln, sondern musste diese sogar mit zwei unterschiedlichen Tools (iptables und ip6tables) in den Kernel laden. Bei nftables existiert hierfür einfach die Adressfamilie 'inet', die sowohl IPv4 als auch IPv6 umfasst. Auch das Zusammenlegen von unterschiedlichen 'statements' ist bei nftables nun möglich. Unter iptables ist es beispielsweise sehr umständlich, ein Paket zuerst ins Log zu schreiben und anschließend eine
...Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.