Guida verificata con Ubuntu: 20.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Nftables è un programma per controllare le regole di filtraggio dei pacchetti dal progetto Netfilter. Questo software fornisce un'infrastruttura per classificazione dei pacchetti interna al kernel che è basata su una VM (macchina virtuale) specifica per rete, e lo strumento a riga di comando in spazio utente nft. L'infrastruttura nftables riusa i sottosistemi Netfilter esistenti, come l'infrastruttura esistente per hook, il sistema di tracciamento delle connessioni, NAT, la gestione di code in spazio utente e il sottosistema di registrazione di log. Nftables sostituisce i vecchi popolari iptables, ip6tables, arptables ed ebtables. Il software Netfilter, e nftables in particolare, è utilizzato in applicazioni come condivisione di connessioni Internet, firewall, contabilità per IP, proxy trasparenti, instradamento avanzato e controllo del traffico.
Tutti i comandi citati in questa pagina vanno digitati nel terminale con i privilegi di amministrazione .
Selezione
Dal rilascio 20.10 Ubuntu utilizza come infrastruttura predefinita nftables al posto del precedente iptables.
Per selezionare e/o verificare quale infrastruttura firewall è in uso nel nostro sistema operativo digitare questi 2 comandi:
update-alternatives --config iptables update-alternatives --config ip6tables
riceveremo una risposta simile a questa:
Sono disponibili 2 scelte per l'alternativa iptables (che fornisce /usr/sbin/iptables). Selezione Percorso Priorità Stato ------------------------------------------------------------ 0 /usr/sbin/iptables-nft 20 modalità automatica * 1 /usr/sbin/iptables-legacy 10 modalità manuale 2 /usr/sbin/iptables-nft 20 modalità manuale Premere Invio per mantenere il valore predefinito[*] o digitare il numero della selezione:
Scegliere tra nft e iptables-legacy.
Installazione
Installare il pacchetto nftables.
Abilitare il servizio nftables all'avvio.
Migrazione
Per importare le regole da iptables a nftables ci sono 2 possibilità:
Regola singola
Digitare:
iptables-translate <regola di iptables>
per esempio:
iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
riceveremo la risposta:
nft add rule ip filter INPUT tcp dport 22 ct state new counter accept
altro esempio ma con ipv6:
ip6tables-translate -A FORWARD -i eth0 -o eth3 -p udp -m multiport --dports 111,222 -j ACCEPT
riceveremo la risposta:
nft add rule ip6 filter FORWARD iifname eth0 oifname eth3 meta l4proto udp udp dport { 111,222} counter accept
Set di regole
Salvare tutte le regole in uso su iptables in un file digitando:
iptables-save > save.txt
Importare le regole salvate nel file digitando:
iptables-restore-translate -f save.txt
Oppure importare le regole e al tempo stesso salvarle in un file leggibile da nftables digitando:
iptables-restore-translate -f save.txt > ruleset.nft
Caricare su nftables le regole salvate nel file digitando:
nft -f ruleset.nft
Comandi principali
Generici
Per caricare le regole da un file digitare:
nft -f <file>
Per salvare le regole in uso in modo che vengano ricaricate al prossimo avvio digitare:
nft list ruleset > /etc/nftables.conf
Per elencare le regole in uso digitare:
nft list ruleset
Per elencare le regole in uso e vedere anche il numero di riga della regola digitare:
nft -a list ruleset
Per cancellare tutte le regole in uso digitare:
nft flush ruleset
Tabelle
Per creare una tabella digitare:
nft add table ip filter
Per elencare le tabelle digitare:
nft list tables
Per cancellare una tabella digitare:
nft delete table ip filter
In caso di errore nella cancellazione della tabella svuotarla dalle regole contenute
Per svuotare la tabella dalle regole in essa contenute digitare:
nft flush table ip filter
Catene
Per aggiungere una catena digitare:
nft add chain [<famiglia>] <nome_tabella> <nome_catena> { type <tipo> hook <hook> priority <valore> \; [policy <policy> \;] }
Per esempio:
nft add chain ip filter input { type filter hook input priority 0; policy drop; } nft add chain ip filter forward { type filter hook forward priority 0; policy drop; }