iptables vs nftables: Aký je rozdiel?


Po dlhú dobu boli iptables obľúbeným nástrojom systémových správcov. Ale v dnešnej dobe sa odporúčajú nftables. Prečítajte si, prečo.

Každý administrátor Linuxu určite pracoval s iptables, dlhoročným firewallom Linuxu, ktorý nám dobre slúži už mnoho rokov. Ale možno ešte nepoznáte nftables, nováčik, ktorý nám chcel ponúknuť niekoľko veľmi potrebných vylepšení a nakoniec nahradiť starnúce iptables.

Prečo nftables namiesto iptables?

nftables vyvíja Netfilter, rovnaká organizácia, ktorá v súčasnosti spravuje iptables. Bol vytvorený ako liek na problémy s iptables, konkrétne so škálovateľnosťou a výkonom.

Okrem novej syntaxe a niektorých vylepšení zistíte, že funguje veľmi podobne ako jeho predchodca.

Ďalším zdôvodnením nového nástroja je, že rámec iptables sa stal trochu spletitý s iptables, ip6tables, arptables a ebtables, ktoré poskytujú rôzne, ale podobné funkcie.

Napríklad je jednoducho neefektívne vytvárať pravidlá IPv4 v tabuľkách iptables a pravidlá IPv6 v tabuľkách ip6 a udržiavať ich synchronizované. Cieľom Nftables je nahradiť všetky tieto a byť centralizovaným riešením.

Aj keď je nftables súčasťou linuxového jadra od roku 2014, v poslednej dobe získava čoraz väčšiu trakciu, keďže sa jeho prijatie rozširuje. Zmena je vo svete Linuxu pomalá a zastarané nástroje často trvajú niekoľko rokov alebo dlhšie, kým budú postupne vyradené v prospech ich inovovaných náprotivkov.

Nftables sa stáva odporúčaným firewallom a správcom Linuxu sa patrí aktualizovať svoj repertoár. Teraz je skvelý čas naučiť sa nftables a aktualizovať svoju existujúcu konfiguráciu iptables.

Ak používate iptables už roky a nie ste príliš nadšení myšlienkou, že sa musíte naučiť úplne nový nástroj, nebojte sa, v tomto sprievodcovi sme vám pomohli. V tomto článku sa budeme zaoberať rozdielmi medzi nftables a iptables a ukážeme príklady konfigurácie pravidiel brány firewall v novej syntaxi nftables.

Reťazce a pravidlá v nftables

V iptables existujú tri predvolené reťazce: vstup, výstup a forward. Tieto tri „reťazce“ (a ďalšie reťazce, ak máte nejaké nakonfigurované) obsahujú „pravidlá“ a iptables funguje tak, že priraďuje sieťovú prevádzku k zoznamu pravidiel v reťazci. Ak skúmaná návštevnosť nezodpovedá žiadnemu pravidlu, na prenos sa použije predvolená politika reťazca (t. j. ACCEPT, DROP).

Nftables funguje podobne ako tento, s „reťazcami“ a „pravidlami“. Nezačína však so žiadnymi základnými reťazcami, vďaka čomu je konfigurácia o niečo flexibilnejšia.

Jednou z oblastí neefektívnosti pre iptables je, že všetky sieťové údaje museli prejsť jedným alebo viacerými z vyššie uvedených reťazcov, aj keď prevádzka nezodpovedala žiadnym pravidlám. Bez ohľadu na to, či ste mali reťazce nakonfigurované alebo nie, iptables stále porovnáva vaše sieťové údaje.

Inštalácia nftables v systéme Linux

Nftables je k dispozícii vo všetkých hlavných distribúciách Linuxu a môžete si ho jednoducho nainštalovať pomocou správcu balíkov vašich distribúcií.

V distribúcii založenej na Ubuntu alebo Debiane môžete použiť tento príkaz:

sudo apt install nftables

Aby ste sa uistili, že nftables sa spustí automaticky, keď sa váš systém reštartuje:

sudo systemctl enable nftables.service

Rozdiel v syntaxi medzi iptables a nftables

Nftables má inú a oveľa jednoduchšiu syntax ako iptables. Buďme úprimní, syntax iptables bola vždy nejasná a jej učenie si vyžadovalo ďalšie úsilie. Našťastie pre tých, ktorí migrujú z iptables, nftables stále akceptuje starú syntax.

Môžete tiež použiť nástroj iptables-translate, ktorý bude akceptovať príkazy iptables a prevedie ich na ekvivalent nftables. Toto je jednoduchý spôsob, ako zistiť, ako sa tieto dve syntaxe líšia.

Nainštalujte iptables-translate na Ubuntu a distribúciu založenú na Debiane pomocou tohto príkazu:

sudo apt install iptables-nftables-compat

Po nainštalovaní môžete syntax iptables odovzdať príkazu iptables-translate a ten vráti ekvivalentný príkaz nftables.

Pozrime sa na niekoľko príkladov, aby ste videli, ako sa tieto príkazy navzájom líšia.

Blokovať prichádzajúce spojenia

Tento príkaz by blokoval prichádzajúce pripojenia z adresy IP 192.168.2.1:

linux@handbook:~$ iptables-translate -A INPUT -s 192.168.2.1 -j DROP
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop

Povoliť prichádzajúce pripojenia SSH

Pozrime sa na niekoľko ďalších príkladov – bežné veci, ktoré by ste za normálnych okolností zadali do iptables pri posilňovaní servera Linux.

linux@handbook:~$ iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept

Povoliť prichádzajúce pripojenia SSH zo špecifického rozsahu IP adries

Ak chcete povoliť prichádzajúce pripojenia SSH z 192.168.1.0/24:

linux@handbook:~$ iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept

Povoliť pripojenia MySQL k sieťovému rozhraniu eth0

Tu je syntax pre iptables a nftables:

linux@handbook:~$ iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT iifname eth0 tcp dport 3306 ct state new,established counter accept

Povoliť prichádzajúce prenosy HTTP a HTTPS

Ak chcete povoliť prenos určitého typu f, tu je syntax pre oba príkazy:

linux@handbook:~$ iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept

Ako môžete vidieť z týchto príkladov, syntax je stále dosť podobná iptables, ale príkazy sú trochu intuitívnejšie.

Prihlásenie pomocou nftables

Voľba „counter“ prítomná vo vyššie uvedených príkladoch príkazu nft hovorí nftables, aby počítal, koľkokrát sa dotkne pravidla, ako to štandardne robí iptables.

V nftables sú voliteľné a musia byť špecifikované.

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

Nftables má vstavané možnosti na export vašej konfigurácie. V súčasnosti podporuje XML a JSON.

nft export xml

Záver

V tomto článku som vysvetlil, prečo je nftables novou odporúčanou voľbou, pokiaľ ide o firewally Linux. Uviedol som tiež veľa rozdielov medzi starými iptables a novšími nftables, vrátane ich funkčnosti a syntaxe.

Táto príručka vám ukázala, prečo zvážiť aktualizáciu na nftables a ako začať s novou syntaxou, s ktorou sa budete musieť oboznámiť, aby ste mohli úspešne aktualizovať svoje staré pravidlá iptables.

Ak máte otázky alebo návrhy, dajte mi vedieť v komentároch.