Abstract
Nftables è un firewall che è stato sviluppato da Netfilter, la stessa organizzazione che attualmente gestisce iptables, ed è stato introdotto a partire dal 2014 nel kernel di Linux. Il progetto nacque per porre rimedio all’obsolescenza di iptables, ormai carente dal punto di vista prestazionale e non più scalabile come un tempo. Il framework di iptables nel tempo, come tutti i progetti di lunga, è diventato eccessivamente complicato a causa della presenza di diverse varianti che forniscono le stesse funzioni ma separatamente (iptables, ip6tables, arptables ed ebtables).
Con le iptables era estremamente scomodo avere due set di regole ipv4 e ipv6, poichè iptables e ip6tables erano due applicativi separati le cui configurazioni necessitavano di rimanere sincrone.
A parte una nuova sintassi e alcuni aggiornamenti, il funzionamento di nftables è simile a quello del suo predecessore.
Chains and rules
Il framework iptables possiede tre chains predefinite: input
, output
e forward
. Queste tre contengono un set di regole
che vengono consultate ogni volta in cui vi è del traffico, sia in entrata che in uscita.
Nella fase di esaminazione del traffico, nel caso in cui questo non venga corrisposto ad alcuna regola, come in uno switch case, viene usata la politica di default (ACCEPT oppure DROP).
Iptables è inefficiente nell’analizzare il traffico poichè tutti i dati di rete devono attraversare una o più chain indipendentemente dal fatto che queste siano configurate o meno, effettuando controlli non necessari.
Nftables, nel suo, ha esattamente lo stesso funzionamento. Tuttavia non ha nessuna chain
predefinita, ma ne permette la creazione da zero fornendo flessibilità nella configurazione e non presenta il problema di analisi di iptables.
Differenza di sintassi
La sintassi di iptables è sempre stata intricata, contorta e di ardua apprensione. Nftables invece ha una sintassi similare ma molto più semplice.
Per creare una nuova rule
si utilizza il seguente comando:
|
|
Ora analizziamo la differenza tra iptables e nftables.
Blocco di una connessione
Questo comando blocca la connessione in entrata dall’ip 192.168.7.5.
|
|
Abilitare la connessione SSH in entrata
Questo comando abilita la connessione SSH in entrata.
|
|
Questo comando abilita la connessione SSH in entrata per tutta la rete 192.168.155.0/24.
|
|
Abilitare la connessione MySQL sull’interfaccia di rete eth0
Con questo comando si abilitano le connessioni sull’interfaccia di rete eth0 verso il server di MySQL.
|
|
Abilitare il traffico HTTP e HTTPS
Con questo comando si abilita il traffico sulla porta 80 e sulla 443.
|
|
Conclusione
Abbiamo visto come il framework di nftables sia molto più chiaro e fruibile rispetto al vecchio iptables.
Non siamo entrati nello specifico sulla creatzione di tables
o chains
tuttavia per chi fosse interessato lascio il link alla wiki di ArchLinux dove si può approfondire lo studio.