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.