Ovaj vodič objašnjava kako raditi s Nftables Linux vatrozidom. Ovaj je sadržaj optimiziran kako za iskusne tako i za nove korisnike Linuxa.
Nftables je komponenta Linux kernela koja pruža funkcionalnost vatrozida. To je zamjena za Iptables.
Nakon čitanja ovog vodiča, razumjet ćete pravila Nftables i moći ćete stvoriti svoj vatrozid. Ne trebate prethodno znanje o Iptablesu.
Svi primjeri u ovom vodiču sadrže snimke zaslona, što svim korisnicima Linuxa, neovisno o njihovoj razini znanja, olakšava njihovo razumijevanje i implementaciju.
Početak rada s Nftables
Prije nego što započnete, izradite i otvorite datoteku pomoću uređivača teksta kao što je nano ili vi kako biste počeli upisivati svoja prva Nftables pravila na temelju sljedećeg primjera. Nemojte copy-paste; tip sve.
nano vatrozid.nft
Primjer u ovom vodiču prilično je jednostavan i prikazuje restriktivni vatrozid u kojem se ispušta sav IPv4 promet osim povratne petlje i određenih priključaka.
Na prethodnoj snimci zaslona koristio sam prvi red za definiranje svoje lokalne mreže (192.168.0.0/16) kao LinuxHintNet.
definirajte LinuxHintNet = 192.168.0.0 / 16U drugom retku definiram grupu portova (80,443 i 22). Ovu grupu zovem AllowPorts jer planiram dopustiti promet kroz njih. AllowPorts je proizvoljan naziv.
definirajte AllowPorts = { 80 , 443 , 53 , 22 }Zatim dodajem tablicu, koja je spremnik ili grupa lanaca i pravila; oba su objašnjena u nastavku. Tablice pomažu u organiziranju pravila i lanaca. Tablicu u primjeru sam nazvao 'Restriktivna' jer sadrži restriktivnu politiku, a naziv joj je proizvoljan.
IP ispred naziva tablice označava da će se ta pravila tablice primijeniti samo na IPv4 promet. Možete koristiti inet umjesto IP-a za primjenu pravila na IPv4 i IPv6 protokole. Ili možete zamijeniti IP s ip6 samo za IPv6.
Upamtite, Restriktivno je naziv koji sam proizvoljno definirao. Stol možete imenovati kako želite.
U mom slučaju, primjenjujem pravila samo na IPv4, kao što je prikazano u nastavku.
dodaj tablicu ip RestriktivnoZa oba protokola koristite sljedeće:
dodati tablicu inet RestriktivnoZatim dodajemo prvi osnovni lanac, koji sam proizvoljno nazvao Dolazni jer je povezan s dolaznim prometom. Međutim, možete ga nazvati kako želite.
Sljedeći osnovni lanac ispušta sav dolazni promet prema zadanim postavkama:
- add chain ip Restrictive Incoming: Ovaj odjeljak dodaje restriktivni dolazni lanac koji se primjenjuje na IPv4
- filter vrste: Ovo definira vrstu lanca kao filter jer će filtrirati promet. Drugi mogući tipovi lanca su ruta ili NAT
- hook input: Odnosi se na dolazne pakete
- prioritet 0: Prioritet osnovnog lanca definira redoslijed osnovnih lanaca
- pravilo ispuštanja: pravilo ispuštanja, prema zadanim postavkama, odbacuje sve pakete
Kao što možete vidjeti na sljedećoj snimci zaslona, stvorio sam dva druga osnovna lanca slična prethodnom, Restriktivno preusmjeravanje i Restriktivno odlazno. Razlika je definirana kuka za svaku (kuka naprijed i izlaz kuke). Njihovo objašnjavanje se ponavlja.
Nakon tri osnovna lanca, možemo nastaviti s Nftables pravilima kako bismo omogućili povratni promet.
Dodajem sljedeće retke za dolazni i odlazni promet na sučelju povratne petlje.
dodaj pravilo ip Restriktivni dolazni iifname lo counter acceptdodaj pravilo ip Restriktivno Dolazno oifname lo counter accept
Sada dodajem četiri pravila koja prihvaćaju odlazni i dolazni TCP i UDP promet kroz sve priključke uključene u varijablu $AllowPorts definiranu na početku datoteke.
dodaj pravilo ip Restriktivni dolazni tcp sport $AllowPorts counter prihvatitidodaj pravilo ip Restriktivni odlazni tcp dport $AllowPorts counter prihvatiti
dodaj pravilo ip Restriktivni dolazni udp sport $AllowPorts counter prihvatiti
dodaj pravilo ip Restriktivni odlazni udp dport $AllowPorts counter prihvatiti
Cijeli scenarij možete vidjeti ispod.
Nakon što završite s upisivanjem tablica, lanaca i pravila, zatvorite dokument i spremite promjene.
# U prva dva retka definiram svoju lokalnu mrežu (LinuxHintNet) i skup portova (80,#443,22) kako biste omogućili promet kroz njih prema pravilima u nastavku.
definirajte LinuxHintNet = 192.168.0.0 / 16
definirajte AllowPorts = { 80 , 443 , 53 , 22 }
#Deklarišem novu tablicu koja će sadržavati lance i pravila. Ovu tablicu zovem 'Restriktivna'.
#'ip' primjenjuje pravila samo na IPv4. Za IPv6 koristite samo 'ip6' i koristite 'inet' za oba protokola.
dodaj tablicu ip Restriktivno
# Nakon kreiranja tablice, kreiram tri lanca, dolazni, preusmjereni i odlazni,
#Njihova imena su proizvoljna. Svi oni prema zadanim postavkama isključuju dolazni, odlazni i prosljeđujući promet.
dodati lanac ip Restriktivni dolazni { tip filter hook prioritet unosa 0 ; pad politike; }
dodati lanac ip Restriktivno preusmjeravanje { tip filter kuka unaprijed prioritet 0 ; pad politike; }
dodati lanac ip Restriktivni odlazni { tip filter hook izlazni prioritet 0 ; pad politike; }
# Implementiram dva pravila za dopuštanje povratnog prometa.
dodaj pravilo ip Restriktivni dolazni iifname lo counter accept
dodaj pravilo ip Restriktivno Dolazno oifname lo counter accept
# Implementiram pravila za dopuštanje prometa kroz portove definirane u varijabli AllowPorts.
dodaj pravilo ip Restriktivni dolazni tcp sport $AllowPorts counter prihvatiti
dodaj pravilo ip Restriktivni odlazni tcp dport $AllowPorts counter prihvatiti
dodaj pravilo ip Restriktivni dolazni udp sport $AllowPorts counter prihvatiti
dodaj pravilo ip Restriktivni odlazni udp dport $AllowPorts counter prihvatiti
Da biste aktivirali vatrozid, pokrenite sljedeću naredbu:
sudo nft -f vatrozid.nft
Svoja pravila možete provjeriti pokretanjem sljedeće naredbe:
sudo skup pravila popisa nft
To je osnovni restriktivni vatrozid.
Zaključak:
Kao što vidite, Nftables je mnogo prijateljskiji od Iptablesa, a korisnici mogu naučiti Nftables brže od Iptablesa. Budući da se Iptables ukida, mnoge distribucije koriste Nftables kao zadani vatrozid, uključujući Debian. Korisnici s iskustvom u Iptablesu možda će htjeti pogledati alat Iptables-nftables-compat, koji prevodi Iptables u Nftables. To im može pomoći da razumiju razlike.
Profesionalni korisnici poput administratora sustava imaju tendenciju da nastave raditi s Iptables; izbjegavajte ignoriranje Nftables kako biste uštedjeli vrijeme dok poboljšavate filtriranje. Nadam se da je ovaj članak bio dovoljno jednostavan da vas uvjeri da isprobate Nftables.