nftables packet filter release 1.0.3

Yo te pibliye lage pake filtre nftables 1.0.3, inifye entèfas filtraj pake pou IPv4, IPv6, ARP ak pon rezo (ki vize pou ranplase iptables, ip6table, arptables ak ebtables). Chanjman ki nesesè pou lage nftables 1.0.3 pou travay yo enkli nan nwayo Linux 5.18 la.

Pake nftables a gen ladan eleman filtre pake ki kouri nan espas itilizatè yo, pandan y ap travay nan nivo nwayo a se sou-sistèm nf_tables ki te bay, ki te fè pati nwayo Linux la depi lage 3.13. Nivo nwayo a bay sèlman yon koòdone jenerik pwotokòl endepandan ki bay fonksyon debaz pou ekstrè done ki soti nan pake, fè operasyon done, ak kontwòl koule.

Règ filtraj tèt yo ak moun kap okipe pwotokòl espesifik yo konpile nan bytecode espas itilizatè, apre sa yo chaje bytecode sa a nan nwayo a lè l sèvi avèk koòdone Netlink la epi egzekite nan nwayo a nan yon machin vityèl espesyal ki sanble ak BPF (Berkeley Packet Filters). Apwòch sa a fè li posib pou redwi siyifikativman gwosè kòd filtraj kouri nan nivo nwayo a epi deplase tout fonksyon règleman analiz ak lojik travay ak pwotokòl nan espas itilizatè.

Prensipal inovasyon:

  • Lis ansanm kounye a sipòte matche non koòdone rezo pa yon mask, pou egzanp, espesifye lè l sèvi avèk senbòl "*" la: tab inet testifsets { set simple_wild { tape ifname drapo eleman entèval = { "abcdef*", "othername", "ppp0" } } chèn v4icmp { kalite filtre zen priyorite opinyon 0; politik aksepte; iifname @simple_wild counter packages 0 bytes 0 iifname { “abcdef*”, “eth0” } counter packages 0 bytes 0 } }
  • Aplike otomatik fusion nan entèseksyon seri eleman lis pandan operasyon an. Précédemment, lè yo te mete opsyon "oto-fusion", fizyon an te pote soti nan etap la nan deklare règ yo, men kounye a li travay tou lè nouvo eleman yo ajoute pandan operasyon an. Pou egzanp, nan etap deklarasyon an, lis la mete y { drapo entèval auto-fusion eleman = { 1.2.3.0, 1.2.3.255, 1.2.3.0/24, 3.3.3.3, 4.4.4.4, 4.4.4.4-4.4.4.8 , 3.3.3.4 , 3.3.3.5 } } yo pral tounen eleman = { 1.2.3.0/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } ak Lè sa a, si ou ajoute nouvo eleman # nft ajoute eleman ip xy { 1.2.3.0 -1.2.4.255, 3.3.3.6 } ap sanble ak eleman = { 1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8 }

    Lè ou retire atik endividyèl nan lis la ki tonbe nan atik ranje ki egziste deja, ranje a ap vin pi kout oswa divize.

  • Yo te ajoute sipò pou konbine règ tradiksyon adrès miltip (NAT) nan yon lis kat jeyografik nan optimize règ la, ki rele lè opsyon "-o/-optimize" espesifye. Pa egzanp, pou mete # cat ruleset.nft tab ip x { chèn y { tape nat hook postrouting priyorite srcnat; gout politik; ip saddr 1.1.1.1 tcp dport 8000 snat pou 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat pou 5.5.5.5:90} }

    egzekite "nft -o -c -f ruleset.nft" pral konvèti règ separe "ip saddr" yo nan yon lis kat: snat to ip saddr . tcp dport kat { 1.1.1.1 . 8000: 4.4.4.4. 80, 2.2.2.2. 8001: 5.5.5.5. 90}

    Menm jan an tou, ekspresyon anvan tout koreksyon yo ka konvèti nan lis kat jeyografik: # cat ruleset.nft tab ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 ,62 78x160,128e0e ale nan nat_dns_this_0 udp longè 31393032383939353831343037320-5301 @th,62 78x160,128e0e goto nat_dns_saturn_0 udp longè 31363436323733373931323934300-5301 @th,62 78x160,128 0e ale nan nat_dns_saturn_0 udp length 32393535373539353636383732310-5302 @th,62 78x160,128e0e ale nan nat_dns_saturn_0}}

    apre optimize nou jwenn yon lis kat: udp length . @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : ale nan nat_dns_dnstc, 62-78. 0x0e31393032383939353831343037320e : ale nan nat_dns_this_5301, 62-78. 0x0e31363436323733373931323934300e : ale nan nat_dns_saturn_5301, 62-78. 0x0e32393535373539353636383732310e : ale nan nat_dns_saturn_5302, 62-78. 0x0e38353439353637323038363633390e : ale nan nat_dns_saturn_5303 }

  • Yo pèmèt yo sèvi ak ekspresyon anvan tout koreksyon nan operasyon konkatènasyon. Pa egzanp: #nft ajoute règ xy ip saddr. @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } oswa tab x { set y { typeof ip saddr . @ih,32,32 eleman = { 1.1.1.1 . 0x14 } } }
  • Te ajoute sipò pou espesifye jaden header nonb antye relatif nan operasyon konkatènasyon: tab inet t { map m1 { typeof udp length . @ih,32,32 : vèdik drapo eleman entèval = { 20-80 . 0x14: aksepte, 1-10. 0xa : gout } } chèn c { kalite filtre zen priyorite opinyon 0; gout politik; longè udp. @ih,32,32 vmap @m1 } }
  • Te ajoute sipò pou reset opsyon TCP (sèlman travay ak Linux Kernel 5.18+): tcp flags syn reset tcp opsyon sack-perm
  • Egzekisyon kòmand pwodiksyon chèn ("nft list chain xy") te akselere.

Sous: opennet.ru

Add nouvo kòmantè