## page was renamed from Carlin0/Prove9 ## Pagina creata da Carlin0 #format wiki #language it <> <> = Introduzione = '''nftables''' è un programma per controllare le regole di filtraggio dei pacchetti dal progetto [[https://it.wikipedia.org/wiki/Netfilter|Netfilter]]. Questo software fornisce un'infrastruttura per classificazione dei pacchetti interna al [[https://it.wikipedia.org/wiki/Kernel|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, [[https://it.wikipedia.org/wiki/Network_address_translation|NAT]], la gestione di code in spazio utente e il sottosistema di registrazione di log. '''nftables''' sostituisce i vecchi popolari [[Sicurezza/Iptables|iptables]], ip6tables, arptables ed ebtables ed è utilizzato in applicazioni come condivisione di connessioni internet, firewall, contabilità per IP, proxy trasparenti, instradamento avanzato e controllo del traffico. {{{#!wiki note Dal rilascio '''20.10''' Ubuntu utilizza come infrastruttura predefinita '''nftables''' al posto del precedente '''iptables'''. }}} In '''nftables''', non ci sono tabelle/catene predefinite, ad esempio se intendiamo impostare la catena `output`, con policy `accept` può essere omessa. {{{#!wiki important Tutti i comandi citati in questa pagina vanno digitati nel [[AmministrazioneSistema/Terminale|terminale]] con i [[AmministrazioneSistema/PrivilegiDiAmministrazione/Sudo|privilegi di amministrazione]] . }}} = Selezione = 0. Per selezionare e/o verificare quale infrastruttura firewall è in uso nel nostro sistema operativo, digitare questi due 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: }}} 0. Scegliere tra `nft` e `iptables-legacy`. = Installazione = 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt:/nftables|nftables]]. 0. [[https://wiki.ubuntu-it.org/AmministrazioneSistema/Systemd#Abilita_.2F_Disabilita|Abilitare]] il servizio `nftables` all'avvio. = Migrazione = Per importare le regole da '''iptables''' a '''nftables''' vengono mostrate due possibilità. == Regola singola == Occorre digitare un comando del tipo: {{{ iptables-translate }}} * 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 }}} * Esempio 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 == 0. Salvare tutte le regole in uso su '''iptables''' in un file digitando: {{{ iptables-save > save.txt }}} 0. Per importare il set di regole sono possibili due alternative: * '''Importare''' le regole salvate nel file digitando: {{{ iptables-restore-translate -f save.txt }}}Il terminale darà come risposta tutte le regole contenute nel file adattandole alla sintassi di nftables. * '''Importare''' le regole e al tempo stesso salvarle in un '''file leggibile''' da nftables digitando: {{{ iptables-restore-translate -f save.txt > ruleset.nft }}} = Comandi principali = == Generici == * Per '''caricare''' le regole da un file digitare: {{{ nft -f }}} * 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 '''visualizzare''' anche gli ''handle'', ovvero i riferimenti univoci di ogni riga 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 }}} {{{#!wiki note 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 [] { type hook priority \; [policy \;] } }}}Ad 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; } }}} * Per '''cancellare''' una catena digitare: {{{ nft delete chain [famiglia] }}}Ad esempio: {{{ nft delete chain ip filter input }}} {{{#!wiki note In caso di errore nella cancellazione della catena svuotarla prima dei contenuti }}} * Per '''svuotare''' la catena dai suoi contenuti digitare: {{{ nft flush chain ip filter input }}} == Regole == * Per '''aggiungere''' una regola digitare: {{{ nft add rule [] [nome_tabella] [nome_catena] [regola da aggiungere] }}}Ad esempio: {{{ nft add rule ip filter input iifname "lo" accept nft add rule ip filter input ct state related,established accept }}} * Per '''inserire''' una regola '''all'inizio''' della catena digitare: {{{ nft insert rule ip filter input iifname "lo" accept }}} * Per '''aggiungere''' una regola in una '''determinata posizione''', si deve usare `handle` come riferimento, digitare: {{{ nft list table filter -a }}}Riceveremo una risposta simile: {{{ table filter { chain output { type filter hook output priority 0; ip protocol tcp counter packets 82 bytes 9680 # handle 8 ip saddr 127.0.0.1 ip daddr 127.0.0.6 drop # handle 7 } } }}}Per '''posizionare''' la nuova regola '''dopo''' `handle 8` digitare: {{{ nft add rule filter output position 8 ip daddr 127.0.0.8 drop }}} * Per '''sostituire''' una regola digitare: {{{ nft replace rule filter output handle 7 ip daddr 127.0.0.8 drop }}} * Per '''cancellare''' una regola digitare: {{{ nft delete rule filter output ip saddr 127.0.0.1 ip daddr 127.0.0.6 drop }}}Oppure: {{{ nft delete rule filter output handle 7 }}} = Esempi di configurazione = Sono disponibili alcuni esempi di configurazioni in `/usr/share/doc/nftables/examples/`, e altri esempi nei link a fondo pagina. = Ulteriori risorse = * [[https://netfilter.org/projects/nftables|Sito del progetto]] * [[https://wiki.nftables.org|Wiki di nftables]] * [[https://www.netfilter.org/projects/nftables/manpage.html|Pagina man di nft]] * [[https://wiki.archlinux.org/title/Nftables|Wiki Archlinux]] * [[https://wiki.gentoo.org/wiki/Nftables|Wiki Gentoo]] * [[https://guide.debianizzati.org/index.php/Nftables|Guida debianizzati]] ---- CategorySicurezza