Nftables pamoka

Nftables Pamoka



Šiame vadove paaiškinama, kaip dirbti su „Nftables Linux“ užkarda. Šis turinys optimizuotas tiek patyrusiems, tiek naujiems Linux vartotojams.

„Nftables“ yra „Linux“ branduolio komponentas, teikiantis ugniasienės funkcijas. Tai yra „Iptables“ pakeitimas.







Perskaitę šią pamoką suprasite „Nftables“ taisykles ir galėsite susikurti užkardą. Jums nereikia išankstinių žinių apie Iptables.



Visuose šios mokymo programos pavyzdžiuose yra ekrano kopijų, todėl visiems Linux vartotojams, nepriklausomai nuo jų žinių lygio, lengva jas suprasti ir įdiegti.



Darbo su Nftables pradžia

Prieš pradėdami, sukurkite ir atidarykite failą naudodami teksto rengyklę, pvz., nano arba vi, kad pradėtumėte vesti pirmąsias Nftables taisykles pagal šį pavyzdį. Nekopijuoti-įklijuoti; parašyk viską.





nano firewall.nft

Šios pamokos pavyzdys yra gana paprastas ir rodo ribojančią užkardą, kurioje visas IPv4 srautas nutrūksta, išskyrus grįžtamąjį ryšį ir konkrečius prievadus.



Ankstesnėje ekrano kopijoje naudojau pirmąją eilutę vietiniam tinklui (192.168.0.0/16) apibrėžti kaip LinuxHintNet.

apibrėžkite LinuxHintNet = 192.168.0.0 / 16

Antroje eilutėje apibrėžiu prievadų grupę (80 443 ir 22). Aš vadinu šią grupę AllowPorts, nes planuoju leisti srautą per juos. AllowPorts yra savavališkas pavadinimas.

apibrėžti AllowPorts   = { 80 , 443 , 53 , 22 }

Tada pridedu lentelę, kuri yra grandinių ir taisyklių konteineris arba grupė; abu jie paaiškinti toliau. Lentelės padeda sutvarkyti taisykles ir grandines. Pavyzdyje pateiktą lentelę pavadinau „Apribojančia“, nes joje yra ribojanti politika, o jos pavadinimas yra savavališkas.

IP prieš lentelės pavadinimą rodo, kad que lentelės taisyklės bus taikomos tik IPv4 srautui. Norėdami taikyti taisykles IPv4 ir IPv6 protokolams, galite naudoti inet vietoj IP. Arba galite pakeisti IP ip6 tik IPv6.

Atminkite, kad ribojantis yra pavadinimas, kurį apibrėžiau savavališkai. Galite pavadinti lentelę kaip norite.

Mano atveju taisykles taikau tik IPv4, kaip parodyta toliau.

pridėti lentelę ip Ribojantis

Abiem protokolams naudokite šiuos:

pridėti lentelę inet Restrictive

Tada pridedame pirmąją bazinę grandinę, kurią savavališkai pavadinau „Incoming“, nes ji susijusi su gaunamu srautu. Tačiau galite jį pavadinti kaip norite.

Pagal numatytuosius nustatymus ši bazinė grandinė atmeta visą gaunamą srautą:

  • pridėti grandinę ip ribojantis gaunamas: šiame skyriuje pridedama ribojamų įeinančių pranešimų grandinė, kuri bus taikoma IPv4
  • tipo filtras: grandinės tipas apibrėžiamas kaip filtras, nes jis filtruos srautą. Kiti galimi grandinės tipai yra maršrutas arba NAT
  • kablio įvestis: nurodo įeinančius paketus
  • 0 prioritetas: Bazinės grandinės prioritetas apibrėžia bazinių grandinių tvarką
  • politikos kritimas: pagal numatytuosius nustatymus atmetimo politika atmeta visus paketus
Pridėti grandinę ip Ribojantis įėjimas { tipo filtro kablio įvesties prioritetas 0 ; politikos kritimas; }

Kaip matote toliau pateiktoje ekrano kopijoje, sukūriau dvi kitas bazines grandines, panašias į ankstesnes, ribojamasis peradresavimas ir ribojamasis išeinantis. Skirtumas yra kiekvienam nustatytas kabliukas (kablio į priekį ir kablio išvestis). Jų aiškinimas kartojasi.

Po trijų bazinių grandinių galime tęsti „Nftables“ taisykles, kad būtų leidžiamas atgalinis srautas.

Pridedu šias eilutes įeinančiam ir išeinančiam srautui atgalinio ryšio sąsajoje.

pridėti taisyklę ip Apribojamas gaunamas iifname lo skaitiklis priimti

pridėti taisyklę ip Apribojamas gaunamas oifname lo skaitiklis priimti

Dabar pridedu keturias taisykles, priimančias išeinantį ir įeinantį TCP ir UDP srautą per visus prievadus, įtrauktus į failo pradžioje apibrėžtą kintamąjį $AllowPorts.

pridėti taisyklę ip Ribojantis gaunamas tcp sportas $AllowPorts skaitiklis priimti

pridėti taisyklę ip Ribojantis siunčiamų tcp dport $AllowPorts skaitiklis priimti

pridėti taisyklę ip Ribojantis gaunamas udp sportas $AllowPorts skaitiklis priimti

pridėti taisyklę ip Apribojamas siunčiamas udp dport $AllowPorts skaitiklis priimti

Visą scenarijų galite pamatyti žemiau.

Baigę vesti lenteles, grandines ir taisykles, uždarykite dokumentą ir išsaugokite pakeitimus.

# Pirmose dviejose eilutėse apibrėžiu savo vietinį tinklą („LinuxHintNet“) ir prievadų rinkinį (80,
#443,22), kad įgalintumėte eismą per juos toliau pateiktose taisyklėse.
apibrėžkite LinuxHintNet = 192.168.0.0 / 16
apibrėžti AllowPorts   = { 80 , 443 , 53 , 22 }
#Paskelbiu naują lentelę, kurioje bus grandinės ir taisyklės. Aš vadinu šią lentelę „ribojančia“.
#„IP“ taisyklės taikomos tik IPv4. Jei naudojate IPv6, abiem protokolams naudokite tik „ip6“ ir „inet“.
pridėti lentelę ip Ribojantis
# Sukūręs lentelę, sukuriu tris grandines: gaunamas, nukreipiamas ir išeinantis,
#Jų vardai yra savavališki. Visi jie pagal numatytuosius nustatymus sumažina gaunamą, siunčiamą ir persiuntimo srautą.
pridėti grandinę ip Ribojantis įėjimas { tipo filtro kablio įvesties prioritetas 0 ; politikos kritimas; }
pridėti grandinę ip Ribojantis peradresavimas { tipo filtro kablio pirmenybės prioritetas 0 ; politikos kritimas; }
pridėti grandinę ip Ribojantys išeinantys { tipo filtro kablio išvesties prioritetas 0 ; politikos kritimas; }
# Įdiegiu dvi taisykles, kad leisčiau atgalinį srautą.
pridėti taisyklę ip Apribojamas gaunamas iifname lo skaitiklis priimti
pridėti taisyklę ip Apribojamas gaunamas oifname lo skaitiklis priimti
# Įdiegiu taisykles, leidžiančias srautą per prievadus, apibrėžtus AllowPorts kintamajame.
pridėti taisyklę ip Ribojantis gaunamas tcp sportas $AllowPorts skaitiklis priimti
pridėti taisyklę ip Ribojantis siunčiamų tcp dport $AllowPorts skaitiklis priimti
pridėti taisyklę ip Ribojantis gaunamas udp sportas $AllowPorts skaitiklis priimti

pridėti taisyklę ip Apribojamas siunčiamas udp dport $AllowPorts skaitiklis priimti

Norėdami suaktyvinti ugniasienę, paleiskite šią komandą:

sudo nft -f firewall.nft

Galite patikrinti savo taisykles vykdydami šią komandą:

sudo nft sąrašo taisyklių rinkinys

Tai pagrindinė ribojanti ugniasienė.

Išvada:

Kaip matote, „Nftables“ yra daug draugiškesnė nei „Iptables“, o vartotojai „Nftables“ gali išmokti greičiau nei „Iptables“. Kadangi „Iptables“ nutraukiama, o daugelis platinimų naudoja „Nftables“ kaip numatytąją ugniasienę, įskaitant „Debian“. Patyrę „Iptables“ vartotojai gali norėti pažvelgti į „Iptables-nftables-compat“ įrankį, kuris „Iptables“ paverčia „Nftables“. Tai gali padėti jiems suprasti skirtumus.

Profesionalūs vartotojai, tokie kaip sistemos administratoriai, linkę ir toliau dirbti su Iptables; venkite ignoruoti Nftables, kad sutaupytumėte laiko tobulinant filtravimą. Tikiuosi, kad šis straipsnis buvo pakankamai paprastas, kad įtikintų jus išbandyti „Nftables“.