Návod na Nftables

Navod Na Nftables



Tento tutoriál vysvetľuje, ako pracovať s firewallom Nftables Linux. Tento obsah je optimalizovaný pre skúsených aj nových používateľov Linuxu.

Nftables je súčasť linuxového jadra, ktorá poskytuje funkcie brány firewall. Ide o náhradu Iptables.







Po prečítaní tohto návodu pochopíte pravidlá Nftables a budete si môcť vytvoriť svoj firewall. Nepotrebujete predchádzajúce znalosti o Iptables.



Všetky príklady v tomto návode obsahujú snímky obrazovky, vďaka ktorým ich môžu všetci používatelia Linuxu bez ohľadu na úroveň ich vedomostí ľahko pochopiť a implementovať.



Začíname s Nftables

Skôr ako začnete, vytvorte a otvorte súbor pomocou textového editora, ako je nano alebo vi, aby ste začali písať svoje prvé pravidlá Nftables na základe nasledujúceho príkladu. Nekopírujte a nevkladajte; napíšte všetko.





nano firewall.nft

Príklad v tomto návode je celkom jednoduchý a ukazuje reštriktívny firewall, v ktorom je všetka prevádzka IPv4 zrušená s výnimkou spätnej slučky a špecifických portov.



Na predchádzajúcej snímke obrazovky som použil prvý riadok na definovanie mojej lokálnej siete (192.168.0.0/16) ako LinuxHintNet.

definovať LinuxHintNet = 192.168.0.0 / 16

V druhom riadku definujem skupinu portov (80,443 a 22). Túto skupinu nazývam AllowPorts, pretože plánujem povoliť prenos cez ne. AllowPorts je ľubovoľný názov.

definovať AllowPorts   = { 80 , 443 , 53 , 22 }

Potom pridám tabuľku, ktorá je kontajnerom alebo skupinou reťazcov a pravidiel; obidva sú vysvetlené nižšie. Tabuľky pomáhajú usporiadať pravidlá a reťazce. Tabuľku v príklade som nazval „Reštriktívna“, pretože obsahuje reštriktívnu politiku a jej názov je ľubovoľný.

Adresa IP pred názvom tabuľky označuje, že pravidlá tabuľky dopytov sa použijú iba na prenos IPv4. Na aplikovanie pravidiel na protokoly IPv4 a IPv6 môžete použiť inet namiesto IP. Alebo môžete nahradiť IP za IP6 iba pre IPv6.

Pamätajte, že obmedzujúce je názov, ktorý som definoval svojvoľne. Stôl si môžete pomenovať ako chcete.

V mojom prípade aplikujem pravidlá iba na IPv4, ako je uvedené nižšie.

pridať tabuľku IP Reštriktívne

Pre oba protokoly použite nasledovné:

pridať tabuľku inet Obmedzujúce

Potom pridáme prvý základný reťazec, ktorý ľubovoľne pomenujem Incoming, pretože súvisí s prichádzajúcou návštevnosťou. Môžete si ho však pomenovať ako chcete.

Nasledujúci základný reťazec predvolene zruší všetku prichádzajúcu návštevnosť:

  • add chain ip Restrictive Incoming: Táto časť pridáva Restrictive Incoming chain, ktorá sa má použiť na IPv4
  • typový filter: Definuje typ reťazca ako filter, pretože bude filtrovať návštevnosť. Ďalšie možné typy reťazcov sú trasa alebo NAT
  • hákový vstup: Vzťahuje sa na prichádzajúce pakety
  • priorita 0: Priorita základného reťazca definuje poradie základných reťazcov
  • drop policy: Politika drop štandardne zahodí všetky pakety
Pridajte reťaz IP Reštriktívne prichádzajúce { typu priorita vstupu háku filtra 0 ; pokles politiky; }

Ako môžete vidieť na nasledujúcom obrázku, vytvoril som dva ďalšie základné reťazce podobné predchádzajúcemu, Restrictive Redirect a Restrictive Outgoing. Rozdiel je definovaný hák pre každý (hák dopredu a háčik výstup). Ich vysvetľovanie sa opakuje.

Po troch základných reťazcoch môžeme pokračovať s pravidlami Nftables, aby sme umožnili spätnú prevádzku.

Pridávam nasledujúce riadky pre prichádzajúcu a odchádzajúcu prevádzku na rozhraní loopback.

pridať pravidlo IP Obmedzujúce prichádzajúce iifname lo počítadlo prijať

pridať pravidlo IP Obmedzujúce prichádzajúce oifname lo počítadlo prijať

Teraz pridávam štyri pravidlá akceptujúce odchádzajúce a prichádzajúce TCP a UDP prenosy cez všetky porty zahrnuté v premennej $AllowPorts definovanej na začiatku súboru.

pridať pravidlo IP Obmedzujúci prichádzajúci tcp šport $AllowPorts pult prijať

pridať pravidlo IP Obmedzujúci odchádzajúci tcp dport $AllowPorts pult prijať

pridať pravidlo IP Reštriktívny prichádzajúci udp šport $AllowPorts pult prijať

pridať pravidlo IP Obmedzujúci odchádzajúci udp dport $AllowPorts pult prijať

Celý skript si môžete pozrieť nižšie.

Po dokončení zadávania tabuliek, reťazcov a pravidiel zatvorte dokument a uložte zmeny.

# V prvých dvoch riadkoch definujem svoju lokálnu sieť (LinuxHintNet) a sadu portov (80,
#443,22), aby ste cez ne povolili premávku v pravidlách nižšie.
definovať LinuxHintNet = 192.168.0.0 / 16
definovať AllowPorts   = { 80 , 443 , 53 , 22 }
#Vyhlasujem novú tabuľku, ktorá bude obsahovať reťazce a pravidlá. Túto tabuľku nazývam „obmedzujúca“.
# 'IP' platí pravidlá len pre IPv4. Pre IPv6 použite iba 'ip6' a 'inet' pre oba protokoly.
pridať tabuľku IP Reštriktívne
# Po vytvorení tabuľky vytvorím tri reťazce, prichádzajúce, presmerovanie a odchádzajúce,
#Ich mená sú ľubovoľné. Všetky z nich predvolene znižujú prichádzajúcu, odchádzajúce a presmerovanú prevádzku.
pridať reťaz IP Reštriktívne prichádzajúce { typu priorita vstupu háku filtra 0 ; pokles politiky; }
pridať reťaz IP Obmedzujúce presmerovanie { typu priorita háku filtra dopredu 0 ; pokles politiky; }
pridať reťaz IP Reštriktívne odchádzajúce { typu priorita výstupu háku filtra 0 ; pokles politiky; }
# Implementujem dve pravidlá na umožnenie spätnej slučky.
pridať pravidlo IP Obmedzujúce prichádzajúce iifname lo počítadlo prijať
pridať pravidlo IP Obmedzujúce prichádzajúce oifname lo počítadlo prijať
# Implementujem pravidlá na povolenie prenosu cez porty definované v premennej AllowPorts.
pridať pravidlo IP Obmedzujúci prichádzajúci tcp šport $AllowPorts pult prijať
pridať pravidlo IP Obmedzujúci odchádzajúci tcp dport $AllowPorts pult prijať
pridať pravidlo IP Reštriktívny prichádzajúci udp šport $AllowPorts pult prijať

pridať pravidlo IP Obmedzujúci odchádzajúci udp dport $AllowPorts pult prijať

Ak chcete aktivovať bránu firewall, spustite nasledujúci príkaz:

sudo nft -f firewall.nft

Svoje pravidlá môžete skontrolovať spustením nasledujúceho príkazu:

sudo nft zoznam pravidiel

Toto je základný reštriktívny firewall.

Záver:

Ako môžete vidieť, Nftables je oveľa priateľskejší ako Iptables a používatelia sa môžu naučiť Nftables rýchlejšie ako Iptables. Keďže Iptables je prerušený a mnohé distribúcie používajú Nftables ako predvolený firewall, vrátane Debianu. Skúsení používatelia Iptables sa možno budú chcieť pozrieť na nástroj Iptables-nftables-compat, ktorý prekladá Iptables na Nftables. To im môže pomôcť pochopiť rozdiely.

Profesionálni používatelia ako správcovia systému majú tendenciu pokračovať v práci s Iptables; vyhnite sa ignorovaniu Nftables, aby ste ušetrili čas a zároveň zlepšili filtrovanie. Dúfam, že tento článok bol dostatočne jednoduchý, aby vás presvedčil, aby ste vyskúšali Nftables.