Tutorial de Nftables

Tutorial De Nftables



Aquest tutorial explica com treballar amb el tallafocs Linux Nftables. Aquest contingut està optimitzat tant per a usuaris experimentats com per a usuaris nous.

Nftables és un component del nucli de Linux que proporciona funcionalitats de tallafoc. És la substitució d'Iptables.







Després de llegir aquest tutorial, entendreu les regles de Nftables i podreu crear el vostre tallafoc. No necessiteu coneixements previs sobre Iptables.



Tots els exemples d'aquest tutorial contenen captures de pantalla, de manera que és fàcil per a tots els usuaris de Linux, independentment del seu nivell de coneixement, comprendre-les i implementar-les.



Com començar amb Nftables

Abans de començar, creeu i obriu un fitxer amb un editor de text com nano o vi per començar a escriure les vostres primeres regles de Nftables a partir de l'exemple següent. No copieu i enganxeu; escriviu-ho tot.





nano firewall.nft

L'exemple d'aquest tutorial és bastant senzill i mostra un tallafoc restrictiu en el qual s'elimina tot el trànsit IPv4, excepte el bucle de retorn i els ports específics.



A la captura de pantalla anterior, vaig utilitzar la primera línia per definir la meva xarxa local (192.168.0.0/16) com LinuxHintNet.

definiu LinuxHintNet = 192.168.0.0 / 16

A la segona línia, defineixo un grup de ports (80.443 i 22). Anomeno aquest grup AllowPorts perquè penso permetre el trànsit a través d'ells. AllowPorts és un nom arbitrari.

defineix AllowPorts   = { 80 , 443 , 53 , 22 }

Després, afegeixo una taula, que és un contenidor o grup de cadenes i regles; tots dos s'expliquen a continuació. Les taules ajuden a organitzar regles i cadenes. Vaig cridar la taula de l'exemple 'Restrictive' perquè conté una política restrictiva i el seu nom és arbitrari.

La IP abans del nom de la taula indica que les regles de la taula que només s'aplicaran al trànsit IPv4. Podeu utilitzar inet en comptes d'IP per aplicar regles als protocols IPv4 i IPv6. O podeu substituir IP per ip6 només per a IPv6.

Recordeu que Restrictive és un nom que vaig definir arbitràriament. Podeu anomenar la taula com vulgueu.

En el meu cas, aplico regles només a IPv4, tal com es mostra a continuació.

afegir taula ip Restrictive

Per als dos protocols, utilitzeu el següent:

afegir taula inet Restrictive

A continuació, afegim la primera cadena base, que anomeno arbitràriament Incoming perquè està relacionada amb el trànsit entrant. Tanmateix, podeu anomenar-lo com vulgueu.

La següent cadena base elimina tot el trànsit entrant de manera predeterminada:

  • add chain ip Restrictive Incoming: aquesta secció afegeix la cadena Restrictive Incoming que s'aplicarà a IPv4
  • filtre de tipus: defineix el tipus de cadena com a filtre, ja que filtrarà el trànsit. Altres tipus de cadenes possibles són ruta o NAT
  • entrada de ganxo: es refereix als paquets entrants
  • prioritat 0: la prioritat de la cadena base defineix l'ordre de les cadenes base
  • policy drop: la política de drop, per defecte, descarta tots els paquets
Afegeix cadena ip Entrada restrictiva { tipus prioritat d'entrada del ganxo del filtre 0 ; caiguda de la política; }

Com podeu veure a la següent captura de pantalla, vaig crear altres dues cadenes de base similars a l'anterior, la redirecció restrictiva i la sortida restrictiva. La diferència és el ganxo definit per a cadascun (ganxo cap endavant i sortida de ganxo). Explicar-los és repetitiu.

Després de les tres cadenes de base, podem continuar amb les regles de Nftables per permetre el trànsit de retorn.

Afegeixo les línies següents per al trànsit entrant i sortint a la interfície de bucle invertit.

afegir una regla ip Restrictive Incoming iifname lo counter accept

afegir una regla ip Restrictive Oifname entrant el comptador accepta

Ara, afegeixo quatre regles que accepten el trànsit TCP i UDP sortint i entrant a través de tots els ports inclosos a la variable $AllowPorts definida al principi del fitxer.

afegir una regla ip Esport TCP entrant restrictiu $AllowPorts comptador acceptar

afegir una regla ip Dport tcp sortint restrictiu $AllowPorts comptador acceptar

afegir una regla ip Esport udp entrant restrictiu $AllowPorts comptador acceptar

afegir una regla ip Dport udp sortint restrictiu $AllowPorts comptador acceptar

Podeu veure el guió complet a continuació.

Un cop hàgiu acabat d'escriure les vostres taules, cadenes i regles, tanqueu el document i deseu els canvis.

# A les dues primeres línies, defineixo la meva xarxa local (LinuxHintNet) i un conjunt de ports (80,
#443,22) per permetre el trànsit a través d'ells a les regles següents.
definiu LinuxHintNet = 192.168.0.0 / 16
defineix AllowPorts   = { 80 , 443 , 53 , 22 }
#Declaro una nova taula que contindrà cadenes i regles. Jo anomeno aquesta taula 'Restrictive'.
#L''ip' només aplica regles a IPv4. Per a IPv6, utilitzeu només 'ip6' i utilitzeu 'inet' per als dos protocols.
afegir taula ip Restrictive
# Després de crear la taula, creo tres cadenes, entrants, redireccions i sortints,
#Els seus noms són arbitraris. Per defecte, tots eliminen el trànsit entrant, sortint i reenviant.
afegir cadena ip Entrada restrictiva { tipus prioritat d'entrada del ganxo del filtre 0 ; caiguda de la política; }
afegir cadena ip Redirecció restrictiva { tipus prioritat de ganxo de filtre cap endavant 0 ; caiguda de la política; }
afegir cadena ip Sortida restrictiva { tipus prioritat de sortida del ganxo del filtre 0 ; caiguda de la política; }
# Implemento dues regles per permetre el trànsit en bucle.
afegir una regla ip Restrictive Incoming iifname lo counter accept
afegir una regla ip Restrictive Oifname entrant el comptador accepta
# Implemento regles per permetre el trànsit a través dels ports definits a la variable AllowPorts.
afegir una regla ip Esport TCP entrant restrictiu $AllowPorts comptador acceptar
afegir una regla ip Dport tcp sortint restrictiu $AllowPorts comptador acceptar
afegir una regla ip Esport udp entrant restrictiu $AllowPorts comptador acceptar

afegir una regla ip Dport udp sortint restrictiu $AllowPorts comptador acceptar

Per activar el tallafoc, executeu l'ordre següent:

sudo nft -f firewall.nft

Podeu comprovar les vostres regles executant l'ordre següent:

sudo conjunt de regles de llista nft

Aquest és un tallafoc restrictiu bàsic.

Conclusió:

Com podeu veure, Nftables és molt més amigable que Iptables, i els usuaris poden aprendre Nftables més ràpidament que Iptables. Atès que Iptables s'està discontinuant i moltes distribucions utilitzen Nftables com a tallafoc predeterminat, inclosa Debian. Els usuaris experimentats d'Iptables poden voler mirar l'eina Iptables-nftables-compat, que tradueix Iptables a Nftables. Això els pot ajudar a entendre les diferències.

Els usuaris professionals com els administradors de sistemes solen seguir treballant amb Iptables; eviteu ignorar Nftables per estalviar temps mentre milloreu el filtratge. Espero que aquest article sigui prou senzill per convèncer-vos de provar Nftables.