Linux firewall vernieuwd: nftables vervangt iptables

Daniel Dupré
0

Inhoudsopgave

In Linux wordt iptables in alle stilte en grotendeels ongemerkt vervangen door nftables. Daarmee wordt de Linux firewall vernieuwd, maar je zult pas van de regelset- en prestatievoordelen profiteren als je je er wat in verdiept.

In de zomer van 2018 baarde een nieuwe en daarbij ook veelbe­lovende firewall­oplossing met de naam bpfilter veel opzien. Hoewel dat vooralsnog niet meer is dan een concept­studie, zagen sommige gebruikers het als een reden om nftables, de opvolger van iptables, af te schrijven.

Lees meer over bpfilter en andere vernieuwingen in c't sep/2018

En dat terwijl die firewalltechniek voor Linux, die al sinds 2013 in de startblokken staat, nu eindelijk vaste voet aan de grond begint te krijgen: nftables beheerst inmiddels alle wezenlijke technieken die zitten in iptables en diens afgeleiden ipv6tables, arptables en ebtables.

Daarom zijn de eerste Linux-distributies aan het overstappen van die zogeheten xtables-firewalltechnieken naar de modernere en flexibelere nftables. Andere distributies hebben inmiddels ook aangekondigd dat spoedig te zullen doen.

Oude en nieuwe firewall

Het mooie is dat veel gebruikers zich niet hoeven te bekommeren om een overstap naar de nieuwe techniek. Door de compatibiliteitstools neemt nftables ongemerkt de taken van xtables over, terwijl je de oude bekende commando’s van xtables kunt blijven gebruiken voor de configuratie. Dat kan dankzij ip­tables 1.8, de verzameling tools die vorige zomer verscheen en die de firewall op een slimme manier onder een nieuwe naam inricht.

Het commando iptables, dat de IPv4-specifieke iptables van de kernel implementeert, heet daardoor nu iptables-legacy. De nieuwe versie daarvan heet iptables-nft. Die werkt met dezelfde parameters als de legacy-versie, maar werkt intern met nftables.

Dat houdt het duidelijker welke tool welke kerneltechniek gebruikt. Het belangrijkste doel is echter iets anders: de naam iptables is daardoor weer beschikbaar gekomen. De distributies kunnen daarom een symbolische link inrichten die, ongeacht welk systeem wordt gebruikt, adequaat reageert als er een commando wordt ingevoerd.

Die links worden over het algemeen beheerd door alternatives, waarmee je snel van de xtables- naar de nftables-tools kunt omschakelen. De uitvoer van iptables –options verraadt snel of een systeem de legacy- of nft-tools gebruikt. Als je van de ene versie overstapt naar de andere, kun je je systeem het beste opnieuw opstarten. Daarmee voorkom je dat beide technieken met elkaar in conflict komen.

Linux firewall nftables iptables xtables distributie commando

Bij sommige distributies configureert het aloude iptables-commando nu in alle stilte en ongemerkt de moderne firewalltechniek die nftables heet.

Voordelen van nftables

Als je nftables-tools gebruikt, profiteer je ook nog van een voordeel van de nieuwe firewalltechniek: als je een nieuwe regel wilt invoeren (iptables -A …), heb je dat binnen luttele seconden voor elkaar omdat je de regel gewoon kunt toevoegen. Met de xtables-tools doe je daar langer over omdat daarbij alle regels uit de kernel uitgelezen worden, de regelset dan wordt aangepast en vervolgens het geheel weer naar de kernel wordt gestuurd. Bij complexere regelsets kan dat best even duren. De tool xtables-monitor, die in iptables 1.8 is geïntroduceerd en de wijzigingen aan de regelset bewaakt, werkt bovendien niet met xtables – ook al klinkt dat wat tegenstrijdig (meer hierover in c’t 3/2019).

De eigen configuratietool nft van nftables biedt nog verdere voordelen. Hij werkt met een andere syntaxis, die voor instappers eenvoudiger in het gebruik moet zijn. Die lijkt op pf, dat voor OpenBSD is ontwikkeld en in de Unix-wereld als toonaangevende firewall­oplossing bekendstaat. Met de native nftables-­tool is het bijvoorbeeld makkelijk mogelijk om regels te maken die zowel voor IPv4 als voor IPv6 gelden. Bovendien heb je niet meer twee aparte regels nodig om een log bij te houden (LOG) of pakketten geaccepteerd (ACCEPT) of verworpen worden (DROP).

Regels kun je ook makkelijker en sneller aanpassen. Anders dan bij iptables zijn er bij het inrichten en bijwerken van filterregels ook geen race-conditions, waar ongewenste pakketten mogelijk door de mazen zouden kunnen glippen. Details over de syntaxis en over deze en andere voordelen van nftables/nft hebben we eerder in het magazine besproken.

Linux firewall nftables iptables xtables structuur nftables

Schemaweergave van de structuur van nftables.

Doorlezen is gratis, maar eerst even dit:

Dit artikel is met grote zorg samengesteld door de redactie van c’t magazine – het meest toonaangevende computertijdschrift van Nederland en België. Met zeer uitgebreide tests en praktische workshops biedt c’t de diepgang die je nergens online vindt.

Bekijk de abonnementen   Lees eerst verder

Functiegaten

Enkele firewalltechnieken die iptables-nft beheerst, kan nft echter nog niet ­configureren. Die functies zijn eigenlijk alleen relevant bij complexe firewall-set-ups. Dat gebrek aan functionaliteit komt overigens niet door de tool, maar door de kernel: sommige functies die iptables wel heeft, ontbreken in nftables. Dat komt doordat iptables-nft ook xtables-functies kan gebruiken. Zo beschikt nftables momenteel niet over SYNPROXY, dat helpt bij het beschermen tegen SYN-floods en vergelijkbare DDoS-aanvallen.

Stukje bij beetje zijn de ontwikkelaars bezig de laatste veiligheidsgaten te dichten. Sinds Linux-kernel 4.20 ondersteunt nftables bijvoorbeeld ipsec policy matching. Welke functies nog niet ondersteund worden, kun je lezen in de wiki van het Netfilter-project. Statements zoals ‘consider native interface’ betekenen dat de ontwikkelaars overwegen om de ondersteuning in nftables te introduceren.

Als je geen van de ontbrekende functies gebruikt, kun je de iptables-installatie overzetten naar de syntaxis van nft en op die manier meer profiteren van de voordelen van de nieuwe techniek. Dat is met name voordelig voor complexe firewalls met honderden regels: juist in die gevallen kunnen de modernere datastructuren van nftables (sets, maps, verdict-maps …) de regels veelal vereenvoudigen en daarmee eenvoudiger vormgeven.

Bij de overstap van de syntaxis van iptables naar die van nftables helpt de tool iptables-translate, die iptables vertaalt naar de syntaxis van nftables. Meer informatie over het gebruik van die tool staat op de Netfilter-wiki. Daar staan ook diverse tips over manieren om de regelset aansluitend ook te optimaliseren. Pas dan komen de moderne datastructuren volledig tot hun recht en zullen ze de prestaties verbeteren. De tijd die je kwijt bent met het overstappen op de nft-syntaxis haal je er dan snel weer uit.

Aanloopproblemen

Fedora, OpenSuse en enkele andere distributies staan op het punt om de firewall standaard met nft-syntaxis te configureren. Dat komt met name door de tool firewalld, die de firewall sinds versie 0.6.0 standaard inricht met een back-end voor nftables. Versie 29 van Fedora, die in oktober is verschenen, had die insteek al moeten ondersteunen en ook OpenSuse Tumbleweed was van plan over te stappen. Beide distributies hebben zich toen echter verslikt in een eigenaardigheid bij de Network Address Translation (NAT), waardoor dockercontainers en virtuele machines geen verbinding konden maken met internet. De distributies hebben de overstap daarom uitgesteld om dat probleem eerst te verhelpen.

Ironisch genoeg treedt dat probleem op in een vlak waar nftables juist problemen zou kunnen verhelpen. Met name-spaces kunnen firewall-tools, libvrt, docker et cetera telkens eigen tabellen in de regelset onderhouden. Die software kan daar de aspecten ongestoord en apart van andere programma’s configureren zonder dat ze daar problemen van ondervinden. Op die manier zitten de programma’s elkaar niet meer in de weg, zoals dat bij xtables nog wel eens het geval is.

Overstapfase

Het is gebruikelijk dat er bij de introductie van een nieuwe techniek problemen zijn. Maar dergelijke tegenslagen veranderen uiteindelijk niets: nftables gaat dan wel langzaam van start, maar zet zich zeker door. Het hoort ondertussen al bij de functies die door de Red-Hat-support van Red Hat Enterprise Linux (RHEL) 7 worden ondersteund. RHEL 8, dat zich momenteel in de bètafase bevindt, gebruikt nftables zelfs al standaard. Ook Debian 10 zou naar verluidt van huis uit nftables gebruiken. Bij tests van Debian is dat al het geval.

De ontwikkelaars van het Netfilter-project hebben er vijf jaar over gedaan om nftables van alle essentiële functies te voorzien en om ervoor te zorgen dat het van zijn rudimentaire begin klaar­gestoomd werd voor het dagelijkse gebruik. Daarmee is het voorbereid om de taken van iptables over te nemen, dat door hetzelfde project beheerd wordt.

Verantwoordelijkheden

Het is nog compleet onduidelijk of het onlangs voorgestelde bpfilter ooit een succes wordt. Die insteek is onafhankelijk van Netfilter.org ontstaan en heeft veel aandacht getrokken, hoewel het tot nu toe alleen nog maar een conceptstudie is. Er staat nog veel finetuning op het programma, die nu eigenlijk pas opgestart gaat worden.

Gebruikers zullen er niet om malen of en wanneer dat beschikbaar zal zijn: bpfilter zou tenslotte alleen de kernel­interne infrastructuur vervangen door een oplossing die werkt op basis van het enhanced Berkeley Packet Filter (eBPF/BPF). Die zou dan het zware werk in de kernel op zich nemen.

De interfaces naar de userspace moeten daarbij onveranderd blijven, zodat bestaande firewalltools als iptables en nft gewoon blijven werken. Gebruikers zouden van die andere techniek verder nauwelijks iets moeten merken, net als bij de overstap van iptables naar nftables, die zich momenteel grotendeels ongemerkt voltrekt.

(Thorsten Leemhuis, c’t magazine)

Lees uitgebreide achtergrondinfo en reviews in c't 05/2024

Deel dit artikel

Daniel Dupré
Daniel DupréDaniel koestert een liefde voor het in elkaar zetten van zinnen en van computers, en heeft in c't een prachtige mogelijkheid gevonden om beide te combineren.

Lees ook

Dit kun je verwachten als je ChatGPT als hacking-tool wilt gebruiken

Kun je ChatGPT gebruiken als hacking-tool? We neigden naar de duistere kant en onderzochten of de assistentie van een AI van elke scriptkiddie een eli...

Raspberry Pi GPIO pinnen: een overzicht van de aansluitingen

Een kleine Raspberry Pi board is zo volgepakt met alle componenten dat er geen ruimte meer over was om de 40 GPIO pinnen van informatie te voorzien. O...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er