GNU/Linux >> Linux Esercitazione >  >> Linux

iptables vs nftables:qual è la differenza?

Ogni amministratore Linux ha sicuramente lavorato con iptables, il firewall Linux di lunga data che ci ha servito bene per molti anni. Ma potresti non avere ancora familiarità con nftables, un nuovo arrivato pensato per offrirci alcuni aggiornamenti tanto necessari e alla fine sostituire i vecchi iptables.

Perché nftables invece di iptables?

Il nftables è sviluppato da Netfilter, la stessa organizzazione che attualmente gestisce iptables. È stato creato come rimedio ai problemi con iptables, ovvero scalabilità e prestazioni.

A parte una nuova sintassi e alcuni aggiornamenti, scoprirai che funziona in modo molto simile al suo predecessore.

Un'altra giustificazione per una nuova utilità è che il framework iptables è diventato un po' contorto con iptables, ip6tables, arptables ed ebtables che forniscono tutte funzioni diverse ma simili.

Ad esempio, è semplicemente inefficiente creare regole IPv4 in iptables e regole IPv6 in ip6tables e mantenere le due sincronizzate. Nftables mira a sostituirli tutti ed essere una soluzione centralizzata.

Sebbene nftables sia stato incluso nel kernel Linux dal 2014, recentemente sta guadagnando più terreno man mano che l'adozione diventa più diffusa. Il cambiamento è lento nel mondo Linux e le utility obsolete spesso impiegano alcuni anni o più per essere gradualmente eliminate a favore delle loro controparti aggiornate.

Nftables sta diventando il firewall di scelta consigliato e spetta agli amministratori Linux aggiornare il proprio repertorio. Ora è un ottimo momento per imparare nftables e aggiornare la configurazione di iptables esistente.

Se usi iptables da anni e non sei troppo entusiasta dell'idea di dover imparare una nuova utility, non preoccuparti, ti abbiamo coperto in questa guida. In questo articolo tratteremo le differenze tra nftables e iptables e mostreremo esempi per configurare le regole del firewall nella nuova sintassi di nftables.

Catene e regole in nftables

In iptables, ci sono tre catene predefinite:input, output e forward. Queste tre "catene" (e altre catene, se ne hai configurate) contengono "regole" e iptables funziona abbinando il traffico di rete all'elenco di regole in una catena. Se il traffico in esame non corrisponde a nessuna regola, sul traffico verrà utilizzata la policy predefinita della catena (ad esempio ACCEPT, DROP).

Nftables funziona in modo simile, anche con "catene" e "regole". Tuttavia, non inizia con nessuna catena di base, il che rende la configurazione un po' più flessibile.

Un'area di inefficienza per iptables è che tutti i dati di rete dovevano attraversare una o più di queste catene di cui sopra, anche se il traffico non corrispondeva ad alcuna regola. Indipendentemente dal fatto che tu abbia configurato o meno le catene, iptables controlla comunque i tuoi dati di rete su di esse.

Installazione di nftables su Linux

Nftables è disponibile in tutte le principali distribuzioni Linux e puoi installarlo facilmente utilizzando il gestore di pacchetti delle tue distribuzioni.

Su una distribuzione basata su Ubuntu o Debian, puoi usare questo comando:

sudo apt install nftables

Per assicurarti che nftables si avvii automaticamente al riavvio del sistema:

sudo systemctl enable nftables.service

Differenza di sintassi tra iptables e nftables

Nftables ha una sintassi diversa e molto più semplice rispetto a iptables. Siamo onesti, la sintassi di iptables è sempre stata poco chiara e ha richiesto uno sforzo in più per impararla. Fortunatamente per coloro che migrano da iptables, nftables accetta ancora la vecchia sintassi.

Puoi anche utilizzare iptables-translate utility, che accetterà i comandi di iptables e li convertirà nell'equivalente di nftables. Questo è un modo semplice per vedere come differiscono le due sintassi.

Installa iptables-translate su Ubuntu e distribuzione basata su Debian con questo comando:

sudo apt install iptables-nftables-compat

Una volta installato, puoi passare la sintassi di iptables al comando iptables-translate e restituirà il comando equivalente di nftables.

Vediamo alcuni esempi in modo da poter vedere come questi comandi differiscono l'uno dall'altro.

Blocca le connessioni in entrata

Questo comando bloccherebbe le connessioni in entrata dall'indirizzo IP 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

Consenti connessioni SSH in entrata

Diamo un'occhiata ad altri esempi:cose comuni che normalmente ti ritrovi a digitare in iptables durante l'hardening di un server Linux.

[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

Consenti connessioni SSH in entrata da un intervallo IP specifico

Se vuoi consentire le connessioni SSH in entrata da 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

Consenti connessioni MySQL all'interfaccia di rete eth0

Ecco la sintassi per iptables e 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

Consenti traffico HTTP e HTTPS in entrata

Per consentire un certo tipo di traffico f, ecco la sintassi di entrambi i comandi:

[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

Come puoi vedere da questi esempi, la sintassi è ancora abbastanza simile a iptables, ma i comandi sono un po' più intuitivi.

Registrazione con nftables

L'opzione "counter" presente negli esempi di comandi nft sopra dice a nftables di contare il numero di volte in cui una regola viene toccata, come faceva iptables per impostazione predefinita.

In nftables sono facoltativi e devono essere specificati.

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

Nftables ha opzioni integrate per esportare la tua configurazione. Attualmente supporta XML e JSON.

nft export xml

Conclusione

In questo articolo, ho spiegato perché nftables è la nuova scelta consigliata quando si tratta di firewall Linux. Ho anche elencato molte differenze tra i vecchi iptables e i nuovi nftables, inclusa la loro funzionalità e sintassi.

Questa guida ti ha mostrato perché considerare l'aggiornamento a nftables e come iniziare con la nuova sintassi con cui dovrai familiarizzare per aggiornare con successo le tue vecchie regole di iptables.

Se hai domande o suggerimenti, faccelo sapere nei commenti.


Linux
  1. Linux vs. Unix:qual è la differenza?

  2. Qual è la differenza tra InnoDB e MyISAM?

  3. Qual è la differenza tra strtok_r e strtok_s in C?

  4. Qual è la differenza tra fsck ed e2fsck?

  5. Qual è la differenza tra iptables state e ctstate?

SIGTERM vs SIGKILL:qual è la differenza?

DevOps vs Software Engineer:qual è la differenza?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?

HTTP e HTTPS:qual è la differenza?

Qual è la differenza tra le catene OUTPUT e FORWARD in iptables?