Translation(s): English - Italiano - Русский


nftables è un'infrastruttura del Netfilter Project che fornisce il filtraggio dei pacchetti, la traduzione degli indirizzi di rete (NAT) e altre manipolazioni dei pacchetti.

Due degli usi più comuni di nftables sono fornire supporto firewall e NAT.

nftables è l'infrastruttura per firewall predefinita e consigliata in Debian e sostituisce il vecchio iptables (and strumenti correlati).

Stato attuale

nftables è l'infrastruttura predefinita utilizzata in Debian (a partire da Debian 10 Buster)

Ciò significa che:

Suggerimenti

Alcuni suggerimenti che le persone potrebbero trovare interessanti in alcune situazioni.

Usare firewalld

Si dovrebbe considerare l'utilizzo di un wrapper invece di scrivere i propri script per il firewall. Si consiglia di eseguire ?firewalld, che si integra abbastanza bene nel sistema. Vedi anche https://firewalld.org/

Il software firewalld prende il controllo di tutte le impostazioni del firewall nel sistema, quindi non è necessario conoscere tutti i dettagli di ciò che sta accadendo in background. Ci sono molti altri componenti di sistema che possono essere integrati con firewalld, come NetworkManager, libvirt, podman, fail2ban, docker, ecc.

firewalld ha opzionalmente una GUI

Ripristino di xtables legacy

È possibile passare da iptables-nft a iptables-legacy tramite update-alternatives (lo stesso vale per arptables ed ebtables).

L'impostazione predefinita che inizia con Debian 10 Buster:

# update-alternatives --set iptables /usr/sbin/iptables-nft
# update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
# update-alternatives --set arptables /usr/sbin/arptables-nft
# update-alternatives --set ebtables /usr/sbin/ebtables-nft

Passaggio alla versione legacy:

# update-alternatives --set iptables /usr/sbin/iptables-legacy
# update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
# update-alternatives --set arptables /usr/sbin/arptables-legacy
# update-alternatives --set ebtables /usr/sbin/ebtables-legacy

nftables in Debian (il modo semplice)

Se si vuole abilitare un firewall predefinito in Debian, seguire questi passaggi:

# apt install nftables
# systemctl enable nftables.service

In questo modo, nftables è attivo all'avvio. Per impostazione predefinita, le regole si trovano in /etc/nftables.conf.
La distribuzione originale a monte ha insiemi di semplici regole d'esempio per postazioni di lavoro, server e router casalinghi: https://wiki.nftables.org/wiki-nftables/index.php/Main_Page#Examples
Il pacchetto Debian nftables viene fornito con insiemi di regole d'esempio in /usr/share/doc/nftables/examples/ .

Per impedire a nftables di fare qualsiasi cosa, eliminare tutte le regole:

# nft flush ruleset

Per impedire che nftables venga eseguito all'avvio:

# systemctl mask nftables.service

Per disinstallarlo ed eliminare ogni traccia di nftables dal sistema:

# aptitude purge nftables

GUI

In maniera opzionale, per coloro che necessitano di un'interfaccia utente grafica (GUI), può essere interessante il pacchetto firewall-config. Questa istantanea dello schermo mostra la sua GUI. firewall-config è uno strumento grafico di configurazione per firewalld, iptables o nftables.

FAQ

Cos'è nftables?

È il nuovo framework del progetto Netfilter, che consente di eseguire il filtraggio dei pacchetti (firewalling), NAT, mangling e classificazione dei pacchetti.

Dovrei costruire un firewall usando un nftables?

Sì. La creazione di nuovi firewall su iptables è sconsigliata.

Devo sostituire un firewall iptables con uno nftables?

Sì, nftables è il sostituto di iptables. Ci sono alcuni strumenti in atto per facilitare questo compito.

Leggere: https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables

Perché un nuovo framework?

Il framework precedente (iptables) ha diversi problemi difficili da affrontare, riguardanti la scalabilità, le prestazioni, la manutenzione del codice, ecc.

Quali sono le principali differenze?

In iptables ci sono diverse tabelle (filtro, nat) e catene (FORWARD, INPUT ...) per impostazione predefinita. In nftables, non ci sono tabelle/catene predefinite.

Inoltre, in iptables esiste solo un obiettivo per regola (-j ACCEPT, -j LOG ...). In nftables, puoi eseguire diverse azioni in un'unica regola.

nftables include funzionalità di set di dati incorporate. In iptables questo non è possibile e c'è uno strumento separato: ?ipset.

Nel framework iptables ci sono strumenti per famiglia: iptables, ip6tables, arptables, ebtables. Ora, nftables ti consente di gestire tutte le famiglie in un unico strumento CLI.

nftables ha una nuova "amministrazione semplificata con stack IPv4/IPv6, attraverso la nuova famiglia inet che permette di registrare catene di base che vedono sia il traffico IPv4 sia IPv6".

Questo nuovo framework presenta un nuovo sottosistema del kernel Linux, noto come nf_tables. Il nuovo meccanismo del motore si ispira a sistemi simili a BPF, con una serie di espressioni di base, che possono essere combinate per costruire regole di filtraggio complesse.

Devo mescolare le regole nftables e iptables/ebtables/arptables?

No, a meno che tu non sappia cosa stai facendo.

Conoscevo la sintassi di iptables. C'è una nuova sintassi in nftables?

Sì, ma quello nftables è migliore :-)

Aiuto nella migrazione a nftables: https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables

Nuova sintassi

Creare una tabella dual-stack IPv4/IPv6 di base:

# nft add table inet filter

Creare una catena per il traffico dual-stack IPv4/IPv6 di input:

# nft add chain inet filter input { type filter hook input priority 0\; }

Una regola per verificare che tutto vada bene (dual-stack IPv4/IPv6):

# nft add rule inet filter input counter accept

Mostrare tutto il precedente:

# nft list table inet filter

Svuotare le regole nel filtro/input della catena:

# nft flush chain inet filter input

Cancellare le regole nel filtro/input della catena:

# nft delete chain inet filter input

Elimina il filtro della tabella:

# nft delete table inet filter

Il parametro della famiglia è facoltativo. L'impostazione predefinita è "ip". Altre famiglie sono "inet", "ip6", "arp", "bridge" o "netdev":

# nft add table ip6 filter
# nft add chain ip6 filter input
# nft add rule ip6 filter input counter accept

Debian fornisce configurazioni di esempio in:

#/usr/share/doc/nftables/examples/

Contare il traffico sulla porta di destinazione tcp/22 (dual-stack IPv4/IPv6):

# nft add rule inet filter input tcp dport 22 counter

Contare e accettare il traffico in 80/tcp e 443/tcp nello stato nuovo e stabilito (dual-stack IPv4/IPv6):

# nft add rule inet filter input tcp dport {80, 443} ct state new,established counter accept

Risorse esterne

Dare un'occhiata al wiki ufficiale di nftables: http://wiki.nftables.org/


CategorySystemAdministration