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).
Contents
- Stato attuale
- Suggerimenti
-
FAQ
- Cos'è nftables?
- Dovrei costruire un firewall usando un nftables?
- Devo sostituire un firewall iptables con uno nftables?
- Perché un nuovo framework?
- Quali sono le principali differenze?
- Devo mescolare le regole nftables e iptables/ebtables/arptables?
- Conoscevo la sintassi di iptables. C'è una nuova sintassi in nftables?
- Nuova sintassi
- Risorse esterne
Stato attuale
nftables è l'infrastruttura predefinita utilizzata in Debian (a partire da Debian 10 Buster)
Ciò significa che:
dovrebbe essere disponibile l'interfaccia a riga di comando nft;
- l'utilità iptables potrebbe non essere installata in modo predefinito nel sistema;
- se installata, l'utilità iptables userà in modo predefinito il backend nf_tables, per mezzo del livello iptables-nft (cioè, usando la sintassi iptables con il sottosistema del kernel nf_tables).
- ciò vale anche per ip6tables, arptables ed ebtables.
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/