nftables packet filter release 1.0.0

Yo te pibliye packet filter nftables 1.0.0, 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.0 pou travay yo enkli nan nwayo Linux 5.13 la. Yon chanjman enpòtan nan nimewo vèsyon an pa asosye ak okenn chanjman fondamantal, men se sèlman yon konsekans kontinyasyon konsistan nan nimero nan notasyon desimal (version anvan an te 0.9.9).

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:

  • Sipò pou eleman mask "*" yo te ajoute nan lis seri, ki deklanche pou nenpòt pake ki pa tonbe anba lòt eleman defini nan seri a. table x { kat blocklist { tip ipv4_addr : vèdik drapo entèval eleman = { 192.168.0.0/16 : aksepte, 10.0.0.0/8 : aksepte, * : gout } } chèn y { kalite filtre zen prerouting priyorite 0; politik aksepte; ip saddr vmap @blocklist } }
  • Li posib pou defini varyab nan liy kòmand la lè l sèvi avèk opsyon "--define". # cat test.nft tab netdev x { chèn y { type filter hook ingress devices = $dev priyorite 0; gout politik; } } # nft —defini dev="{ eth0, eth1 }" -f test.nft
  • Nan lis kat jeyografik yo, yo pèmèt yo sèvi ak ekspresyon konstan (stateful): tab inet filter { map portmap { type inet_service : vèdik kontwa eleman = { 22 counter packages 0 bytes 0 : jump ssh_input, * counter packages 0 bytes 0 : drop } } chèn ssh_input { } chèn wan_input { tcp dport vmap @portmap } chèn prerouting { kalite filtre zen prerouting priyorite kri; politik aksepte; iif vmap { "lo" : so wan_input } } }
  • Te ajoute kòmandman "list hooks" pou montre yon lis moun k ap okipe yon fanmi pake: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_tables] } hook input {-0000000100 chain ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } hook forward { -0000000225 selinux_ipv4_forward 0000000000 chain ip ac [nf_tables] -0000000225 } zen postrouting { +4 0000000225 selinux_ipv4_postroute } }
  • Blòk keu pèmèt ekspresyon jhash, symhash, ak numgen yo konbine pou distribye pake nan keu nan espas itilizatè. … keu pou symhash mod 65536 … keu drapo kontoune pou numgen inc mod 65536 … keu pou jhash oif . meta mark mod 32 "keu" kapab tou konbine avèk lis kat jeyografik yo chwazi yon keu nan espas itilizatè ki baze sou kle abitrè. ... keu drapo kontoune nan kat oifname { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Li posib pou elaji varyab ki genyen yon lis ansanm nan plizyè kat. defini interfaces = { eth0, eth1 } tab ip x { chèn y { kalite filtre zen priyorite antre 0; politik aksepte; iifname vmap { lo : aksepte, $ interfaces : gout } } } # nft -f x.nft # nft list ruleset table ip x { chèn y { tape filter hook input priyorite 0; politik aksepte; iifname vmap { "lo" : aksepte, "eth0" : gout, "eth1" : gout } } }
  • Konbine vmaps (kat vèdik) nan entèval pèmèt: # nft ajoute règ xy tcp dport . ip saddr vmap {1025-65535 . 192.168.10.2 : aksepte }
  • Sentaks senplifye pou kat NAT. Pèmèt yo presize ranje adrès: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } oswa adrès IP eksplisit ak pò: ... dnat to ip saddr map { 10.141.11.4 : 192.168.2.3. . 80 } oswa konbinezon de chenn IP ak pò: ... dnat to ip saddr . tcp dport kat {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Sous: opennet.ru

Add nouvo kòmantè