Vydanie balíčka filtra nftables 1.0.0

Bol vydaný balík filtrovania nftables 1.0.0, ktorý unifikuje filtre pre IPv4, IPv6, ARP a sieťové mosty (má za cieľ nahradiť iptables, ip6tables, arptables a ebtables). Potrebné zmeny na podporu vydania nftables 1.0.0 sú zahrnuté v jadre Linux 5.13. Podstatná zmena čísla verzie nie je spojená s žiadnymi zásadnými zmenami, ale je iba dôsledkom pokračovania číslovania v desiatkovej sústave (predchádzajúce vydanie bolo 0.9.9).

Balík nftables zahŕňa komponenty balíkového filtra pracujúce v užívateľskom priestore, zatiaľ čo na úrovni jadra zabezpečuje činnosť subsystém nf_tables, ktorý je súčasťou jadra Linux od verzie 3.13. Na úrovni jadra je poskytované iba všeobecné rozhranie, nezávislé od konkrétneho protokolu a poskytujúce základné funkcie na získavanie údajov z paketov, vykonávanie operácií s údajmi a riadenie toku.

Pravidlá filtrácie a špecifické spracovateľské moduly pre protokoly sú kompilované do bajtkódu v užívateľskom priestore, po čom je tento bajtkód načítaný do jadra pomocou rozhrania Netlink a vykonáva sa v jadre na špeciálnom virtuálnom stroji, pripomínajúcom BPF (Berkeley Packet Filters). Takýto prístup umožňuje významne znížiť veľkosť kódu filtrácie, ktorý funguje na úrovni jadra a preniesť všetky funkcie parsovania pravidiel a logiky práce s protokolmi do užívateľského priestoru.

Hlavné novinky:

  • Do set-zoznamov bola pridaná podpora maskovacieho prvku „*“, ktorý sa spúšťa pre akékoľvek pakety, ktoré nespadajú pod iné definované prvky v sete. table x { map blocklist { type ipv4_addr : verdict flags interval elements = { 192.168.0.0/16 : accept, 10.0.0.0/8 : accept, * : drop } } chain y { type filter hook prerouting priority 0; policy accept; ip saddr vmap @blocklist } }
  • Poskytnutá možnosť definovať premenné z príkazového riadku pomocou možnosti „—define“. # cat test.nft table netdev x { chain y { type filter hook ingress devices = $dev priority 0; policy drop; } } # nft —define dev=„{ eth0, eth1 }“ -f test.nft
  • V map-zoznamoch bolo povolené používanie trvalých (stateful) výrazov: table inet filter { map portmap { type inet_service : verdict counter elements = { 22 counter packets 0 bytes 0 : jump ssh_input, * counter packets 0 bytes 0 : drop } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { type filter hook prerouting priority raw; policy accept; iif vmap { „lo“ : jump wan_input } } }
  • Pridaný príkaz „list hooks“ na zobrazenie zoznamu spracovateľov pre danú rodinu paketov: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev x y [nf_tables] +0000000300 chain inet m w [nf_tables] } hook input { -0000000100 chain ip a b [nf_tables] +0000000300 chain inet m z [nf_tables] } hook forward { -0000000225 selinux_ipv4_forward 0000000000 chain ip a c [nf_tables] } hook output { -0000000225 selinux_ipv4_output } hook postrouting { +0000000225 selinux_ipv4_postroute } }
  • V blokoch „queue“ je povolené kombinovať výrazy jhash, symhash a numgen na rozdelenie paketov do frontov v užívateľskom priestore. … queue to symhash mod 65536 … queue flags bypass to numgen inc mod 65536 … queue to jhash oif . meta mark mod 32 „queue“ je možné kombinovať aj s mapovými zoznamami na výber frontu v užívateľskom priestore na základe ľubovoľných kľúčov. … queue flags bypass to oifname map { „eth0“ : 0, „ppp0“ : 2, „eth1“ : 2 }
  • Poskytnutá možnosť rozšírenia premenných, vrátane set-zoznamu, do viacerých máp. define interfaces = { eth0, eth1 } table ip x { chain y { type filter hook input priority 0; policy accept; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft list ruleset table ip x { chain y { type filter hook input priority 0; policy accept; iifname vmap { „lo“ : accept, „eth0“ : drop, „eth1“ : drop } } }
  • Povolené kombinovanie vmap-ov (verdict map) s intervalmi: # nft add rule x y tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : accept }
  • Zjednodušený syntax mapovaní pre NAT. Povolené uvádzanie rozsahov adries: … snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } alebo explicitných IP adresy a portov: … dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 . 80 } alebo kombinácií rozsahov IP a portov: … dnat to ip saddr . tcp dport map { 192.168.1.2 . 80 : 10.141.10.2-10.141.10.5 . 8888-8999 }

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster