Nftables tutorial

Nftables Tutorial



Denne vejledning forklarer, hvordan man arbejder med Nftables Linux firewall. Dette indhold er optimeret både til Linux erfarne og nye brugere.

Nftables er en komponent af Linux-kernen, der leverer firewall-funktioner. Det er erstatningen af ​​Iptables.







Efter at have læst denne tutorial, vil du forstå Nftables regler, og du vil være i stand til at oprette din firewall. Du behøver ikke forudgående viden om Iptables.



Alle eksempler i denne vejledning indeholder skærmbilleder, hvilket gør det nemt for alle Linux-brugere, uafhængigt af deres vidensniveau, at forstå og implementere dem.



Kom godt i gang med Nftables

Før du går i gang, skal du oprette og åbne en fil ved hjælp af en teksteditor som nano eller vi for at begynde at skrive dine første Nftables-regler baseret på følgende eksempel. Må ikke copy-paste; skriv alt.





nano firewall.nft

Eksemplet i denne tutorial er ret simpelt og viser en restriktiv firewall, hvor al IPv4-trafik er droppet med undtagelse af loopback og specifikke porte.



I det forrige skærmbillede brugte jeg den første linje til at definere mit lokale netværk (192.168.0.0/16) som LinuxHintNet.

definere LinuxHintNet = 192.168.0.0 / 16

I den anden linje definerer jeg en gruppe af porte (80,443 og 22). Jeg kalder denne gruppe AllowPorts, fordi jeg planlægger at tillade trafik gennem dem. AllowPorts er et vilkårligt navn.

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

Derefter tilføjer jeg en tabel, som er en beholder eller gruppe af kæder og regler; begge er forklaret nedenfor. Tabeller hjælper med at organisere regler og kæder. Jeg kaldte tabellen i eksemplet 'Restrictive', fordi den indeholder en restriktiv politik, og dens navn er vilkårlig.

IP-adressen før tabelnavnet indikerer, at que table-reglerne kun vil blive anvendt på IPv4-trafik. Du kan bruge inet i stedet for IP til at anvende regler på IPv4- og IPv6-protokoller. Eller du kan erstatte IP med ip6 kun for IPv6.

Husk, Restrictive er et navn, jeg har defineret vilkårligt. Du kan navngive bordet som du vil.

I mit tilfælde anvender jeg kun regler på IPv4, som vist nedenfor.

tilføje tabel ip Restriktiv

For begge protokoller skal du bruge følgende:

tilføje tabel inet Restrictive

Så tilføjer vi den første basiskæde, som jeg vilkårligt kalder Incoming, fordi den er relateret til den indgående trafik. Du kan dog navngive det, som du vil.

Følgende basiskæde dropper som standard al indgående trafik:

  • tilføje kæde ip Restrictive Incoming: Dette afsnit tilføjer Restrictive Incoming kæden, der skal anvendes på IPv4
  • type filter: Dette definerer kædetypen som et filter, da det vil filtrere trafik. Andre mulige kædetyper er rute eller NAT
  • hook input: Refererer til indgående pakker
  • prioritet 0: Basiskædeprioritet definerer basiskæders rækkefølge
  • policy drop: Drop-politikken kasserer som standard alle pakker
Tilføj kæde ip Restriktiv indgående { type filter krog input prioritet 0 ; politik fald; }

Som du kan se i det følgende skærmbillede, oprettede jeg to andre basiskæder, der ligner den forrige, Restrictive Redirect og Restrictive Outgoing. Forskellen er den definerede krog for hver (krog frem og krogudgang). At forklare dem er gentaget.

Efter de tre basiskæder kan vi fortsætte med Nftables-reglerne for at tillade loopback-trafik.

Jeg tilføjer følgende linjer for indgående og udgående trafik på loopback-grænsefladen.

tilføje regel ip Restriktiv Indgående iifname lo counter accept

tilføje regel ip Restrictive Incoming oifname lo counter accept

Nu tilføjer jeg fire regler, der accepterer udgående og indgående TCP- og UDP-trafik gennem alle porte, der er inkluderet i variablen $AllowPorts defineret i begyndelsen af ​​filen.

tilføje regel ip Restrictive Incoming tcp sport $AllowPorts tæller acceptere

tilføje regel ip Restriktiv udgående tcp dport $AllowPorts tæller acceptere

tilføje regel ip Restrictive Incoming udp sport $AllowPorts tæller acceptere

tilføje regel ip Restriktiv udgående udp dport $AllowPorts tæller acceptere

Du kan se hele manuskriptet nedenfor.

Når du er færdig med at indtaste dine tabeller, kæder og regler, skal du lukke dokumentet og gemme ændringerne.

# I de første to linjer definerer jeg mit lokale netværk (LinuxHintNet) og et sæt porte (80,
#443,22) for at aktivere trafik gennem dem i reglerne nedenfor.
definere LinuxHintNet = 192.168.0.0 / 16
definer AllowPorts   = { 80 , 443 , 53 , 22 }
#Jeg erklærer en ny tabel, som vil indeholde kæder og regler. Jeg kalder denne tabel 'Restriktiv'.
# 'IP' gælder kun regler for IPv4. For IPv6, brug kun 'ip6' og brug 'inet' til begge protokoller.
tilføje tabel ip Restriktiv
# Efter at have oprettet tabellen, opretter jeg tre kæder, indgående, omdirigering og udgående,
#Deres navne er vilkårlige. Alle dropper indgående, udgående og videregående trafik som standard.
tilføje kæde ip Restriktiv indgående { type filter krog input prioritet 0 ; politik fald; }
tilføje kæde ip Restriktiv omdirigering { type filter krog fremad prioritet 0 ; politik fald; }
tilføje kæde ip Restriktiv udgående { type filter krog output prioritet 0 ; politik fald; }
# Jeg implementerer to regler for at tillade loopback-trafik.
tilføje regel ip Restriktiv Indgående iifname lo counter accept
tilføje regel ip Restrictive Incoming oifname lo counter accept
# Jeg implementerer regler for at tillade trafik gennem porte defineret i AllowPorts-variablen.
tilføje regel ip Restrictive Incoming tcp sport $AllowPorts tæller acceptere
tilføje regel ip Restriktiv udgående tcp dport $AllowPorts tæller acceptere
tilføje regel ip Restriktiv indgående udp-sport $AllowPorts tæller acceptere

tilføje regel ip Restriktiv udgående udp dport $AllowPorts tæller acceptere

For at aktivere firewallen skal du køre følgende kommando:

sudo nft -f firewall.nft

Du kan tjekke dine regler ved at køre følgende kommando:

sudo nft liste regelsæt

Det er en grundlæggende restriktiv firewall.

Konklusion:

Som du kan se, er Nftables meget mere venlig end Iptables, og brugere kan lære Nftables hurtigere end Iptables. Da Iptables er ved at blive afbrudt, og mange distributioner bruger Nftables som standard firewall, inklusive Debian. Iptables erfarne brugere vil måske se på Iptables-nftables-compat-værktøjet, som oversætter Iptables til Nftables. Dette kan hjælpe dem til at forstå forskellene.

Professionelle brugere som systemadministratorer har en tendens til at blive ved med at arbejde med Iptables; undgå at ignorere Nftables for at spare tid og samtidig forbedre filtreringen. Jeg håber, at denne artikel var enkel nok til at overbevise dig om at prøve Nftables.