GNU/Linux >> Znalost Linux >  >> Linux

iptables vs nftables:Jaký je rozdíl?

Každý administrátor Linuxu jistě pracoval s iptables, dlouholetým linuxovým firewallem, který nám dobře sloužil mnoho let. Ale možná ještě neznáte nftables, novinku, která nám chtěla nabídnout tolik potřebná vylepšení a nakonec nahradit stárnoucí iptables.

Proč nftables místo iptables?

Nftables vyvíjí Netfilter, stejná organizace, která v současnosti spravuje iptables. Byl vytvořen jako náprava problémů s iptables, konkrétně škálovatelnosti a výkonu.

Kromě nové syntaxe a některých upgradů zjistíte, že funguje velmi podobně jako jeho předchůdce.

Dalším důvodem pro nový nástroj je to, že rámec iptables se trochu zamotal do iptables, ip6tables, arptables a ebtables, které všechny poskytují různé, ale podobné funkce.

Například je jednoduše neefektivní vytvářet pravidla IPv4 v iptables a pravidla IPv6 v ip6tables a udržovat je v synchronizaci. Cílem Nftables je nahradit všechny tyto a být centralizovaným řešením.

Ačkoli je nftables součástí linuxového jádra od roku 2014, v poslední době získává stále větší pozornost, protože se jeho přijetí rozšiřuje. Změny jsou ve světě Linuxu pomalé a zastaralým utilitám často trvá několik let nebo déle, než budou postupně vyřazeny ve prospěch jejich upgradovaných protějšků.

Nftables se stává doporučeným firewallem a správci Linuxu musí aktualizovat svůj repertoár. Nyní je skvělý čas naučit se nftables a aktualizovat stávající konfiguraci iptables.

Pokud používáte iptables roky a nejste příliš nadšeni myšlenkou, že byste se museli učit úplně nový nástroj, nebojte se, v tomto průvodci jsme vás probrali. V tomto článku pokryjeme rozdíly mezi nftables a iptables a ukážeme příklady pro konfiguraci pravidel firewallu v nové syntaxi nftables.

Řetězce a pravidla v nftables

V iptables jsou tři výchozí řetězce:input, output a forward. Tyto tři „řetězce“ (a další řetězce, pokud máte nějaké nakonfigurované) drží „pravidla“ a iptables funguje tak, že síťový provoz přiřazuje k seznamu pravidel v řetězci. Pokud zkoumaný provoz neodpovídá žádnému pravidlu, použije se na provoz výchozí politika řetězce (tj. ACCEPT, DROP).

Nftables funguje podobně jako toto, s „řetězci“ a „pravidly“. Nezačíná však s žádnými základními řetězci, díky čemuž je konfigurace o něco flexibilnější.

Jednou oblastí neefektivity pro iptables je vše síťová data musela procházet jedním nebo více z těchto výše uvedených řetězců, i když provoz neodpovídal žádným pravidlům. Ať už jste měli řetězce nakonfigurované nebo ne, iptables stále kontroluje vaše síťová data proti nim.

Instalace nftables v systému Linux

Nftables je k dispozici ve všech hlavních distribucích Linuxu a můžete jej snadno nainstalovat pomocí správce balíčků vašich distribucí.

V distribuci založené na Ubuntu nebo Debianu můžete použít tento příkaz:

sudo apt install nftables

Abyste se ujistili, že se nftables spustí automaticky, když se váš systém restartuje:

sudo systemctl enable nftables.service

Rozdíl v syntaxi mezi iptables a nftables

Nftables má jinou a mnohem jednodušší syntaxi než iptables. Buďme upřímní, syntaxe iptables byla vždy nejasná a její naučení vyžadovalo zvláštní úsilí. Naštěstí pro ty, kteří migrují z iptables, nftables stále přijímá starou syntaxi.

Můžete také použít iptables-translate utility, která bude přijímat příkazy iptables a převádět je na ekvivalent nftables. Toto je snadný způsob, jak zjistit, jak se tyto dvě syntaxe liší.

Nainstalujte iptables-translate na Ubuntu a distribuci založenou na Debianu pomocí tohoto příkazu:

sudo apt install iptables-nftables-compat

Jakmile je nainstalován, můžete předat syntaxi iptables příkazu iptables-translate a ten vrátí ekvivalentní příkaz nftables.

Podívejme se na několik příkladů, abyste viděli, jak se tyto příkazy od sebe liší.

Blokovat příchozí připojení

Tento příkaz by blokoval příchozí spojení z IP adresy 192.168.2.1:

[email protected]:~$ 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

Povolit příchozí připojení SSH

Podívejme se na několik dalších příkladů – běžné věci, které byste normálně zadali do iptables při posilování linuxového serveru.

[email protected]:~$ 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

Povolit příchozí připojení SSH z určitého rozsahu IP adres

Pokud chcete povolit příchozí připojení SSH z 192.168.1.0/24:

[email protected]:~$ 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

Povolit připojení MySQL k síťovému rozhraní eth0

Zde je syntaxe pro iptables a nftables:

[email protected]:~$ 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

Povolit příchozí provoz HTTP a HTTPS

Chcete-li povolit provoz určitého typu f, zde je syntaxe obou příkazů:

[email protected]:~$ 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

Jak můžete vidět z těchto příkladů, syntaxe je stále dost podobná iptables, ale příkazy jsou trochu intuitivnější.

Protokolování pomocí nftables

Volba „counter“ ve výše uvedených příkladech příkazu nft říká nftables, aby počítaly, kolikrát se dotkne pravidla, jako to dělá iptables ve výchozím nastavení.

V nftables jsou volitelné a musí být specifikovány.

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

Nftables má vestavěné možnosti pro export vaší konfigurace. V současné době podporuje XML a JSON.

nft export xml

Závěr

V tomto článku jsem vysvětlil, proč je nftables novou doporučenou volbou, pokud jde o firewally Linux. Také jsem uvedl mnoho rozdílů mezi starými iptables a novějšími nftables, včetně jejich funkčnosti a syntaxe.

Tato příručka vám ukázala, proč zvážit upgrade na nftables a jak začít s novou syntaxí, se kterou se budete muset seznámit, abyste mohli úspěšně upgradovat svá stará pravidla iptables.

Pokud máte dotazy nebo návrhy, dejte mi prosím vědět v komentářích.


Linux
  1. Jaký je rozdíl mezi strtok_r a strtok_s v C?

  2. Jaký je rozdíl mezi fsck a e2fsck?

  3. Jaký je rozdíl mezi adduser a useradd?

  1. Linux vs. Unix:Jaký je rozdíl?

  2. Jaký je rozdíl mezi InnoDB a MyISAM?

  3. Jaký je rozdíl mezi unlink a rm?

  1. Spravované VPS vs. Nespravované VPS:Jaký je rozdíl?

  2. Jaký je rozdíl mezi stavem iptables a ctstate?

  3. Jaký je rozdíl mezi ls a l?