Nftables paketifiltri vÀljaanne 1.0.7

Avaldatud nftables paketifiltri vĂ€ljaanne 1.0.7, mis ĂŒhtlustab pakettide filtreerimise liidest IPv4, IPv6, ARP ja vĂ”rgu sildu (suunatud iptables, ip6tables, arptables ja ebtables asendamisele). Nftables paketis on kasutusrikkas ruumis töötavad paketifiltri komponendid, samas kui tuuma tasemel tagab töö nf_tables sĂŒsteem, mis on osa Linuxi tuumast alates vĂ€ljaandest 3.13. Tuuma tasemel pakutakse vaid ĂŒldist liidest, mis ei sĂ”ltu konkreetsetest protokollidest ning pakub pĂ”hifunktsioone andmete ekstraktsiooniks pakettidest, andmetega toimingute teostamiseks ja voolu haldamiseks.

Filtreerimise reeglid ja protokollile spetsiifilised töötlejad kompileeritakse kasutajaruumi baidikoodiks, seejÀrel laaditakse see baidikood tuuma Netlink liidese abil ja tÀidetakse tuumas spetsiaalses virtuaalses masinas, mis meenutab BPF-i (Berkeley Packet Filters). Selline lÀhenemine vÔimaldab oluliselt vÀhendada tuuma tasemel töötava filtreerimiskoodi suurust ja viia kÔik reeglite tÔlgendamise ja protokollidega töötamise funktsioonid kasutajaruumi.

Peamised muudatused:

  • Linuxi tuumaga sĂŒsteemidele 6.2+ on lisatud toetus vxlan, geneve, gre ja gretap protokollide matchimiseks, mis vĂ”imaldab kasutada lihtsaid vĂ€ljendeid kapseldatud pakettide pealkirjade kontrollimiseks. NĂ€iteks pealkirja kontrollimiseks IP-aadressid VxLAN kapseldatud paketi pealkirjas saab nĂŒĂŒd rakendada reegleid (ilma vajaduseta eelnevalt deinkapsuleerida VxLAN pealkiri ja siduda filter vxlan0 liidesele): 
 udp dport 4789 vxlan ip protokoll udp 
 udp dport 4789 vxlan ip saddr 1.2.3.0/24 
 udp dport 4789 vxlan ip saddr . vxlan ip daddr { 1.2.3.4 . 4.3.2.1 }
  • Tugimine automatiseeritud ĂŒleliikmete ĂŒhendamisele pĂ€rast osalist elemendi eemaldamist set-loendist on teostatav, mis vĂ”imaldab eemaldada elemendi vĂ”i osa vahemikust olemasolevast vahemikust (varem sai vahemiku eemaldada vaid tĂ€ielikult). NĂ€iteks pĂ€rast elemendi 25 eemaldamist set-loendist vahemikest 24-30 ja 40-50 jÀÀb loendisse 24, 26-30 ja 40-50. Parandused, mis on vajalikud automaatĂŒhenduse toimimiseks, pakutakse vĂ€lja stabiliseeritud tuumaharude 5.10+ parandavates vĂ€ljaannetes. # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip x y { 25 } # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24, 26-30, 40-50 } } }
  • Lubatud on kasutada kontaktsusi ja vahemikke aadresside tĂ”lkimise (NAT) kaardistamisel. table ip nat { chain prerouting { type nat hook prerouting priority dstnat; policy accept; dnat to ip daddr . tcp dport map { 10.1.1.136 . 80 : 1.1.2.69 . 1024, 10.1.1.10-10.1.1.20 . 8888-8889 : 1.1.2.69 . 2048-2049 } persistent } }
  • Lisatud on toetust vĂ€ljendile „last”, mis vĂ”imaldab teada saada reegli vĂ”i set-loendi viimast kasutamist. See vĂ”imalus on toetatud alates Linuxi tuumast 5.14. table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h } chain z { type filter hook output priority filter; policy accept; update @y { ip daddr . tcp dport } } } # nft list set ip x y table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h elements = { 172.217.17.14 . 443 last used 1s591ms timeout 1h expires 59m58s409ms, 172.67.69.19 . 443 last used 4s636ms timeout 1h expires 59m55s364ms, 142.250.201.72 . 443 last used 4s748ms timeout 1h expires 59m55s252ms, 172.67.70.134 . 443 last used 4s688ms timeout 1h expires 59m55s312ms, 35.241.9.150 . 443 last used 5s204ms timeout 1h expires 59m54s796ms, 138.201.122.174 . 443 last used 4s537ms timeout 1h expires 59m55s463ms, 34.160.144.191 . 443 last used 5s205ms timeout 1h expires 59m54s795ms, 130.211.23.194 . 443 last used 4s436ms timeout 1h expires 59m55s564ms } } }
  • Lisatud on vĂ”imalus mÀÀrata kvote set-loendites. NĂ€iteks, et mÀÀrata liikluse kvooti iga siht-IP-aadressi jaoks, saab mÀÀrata: table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device „eth0” priority filter; policy accept; ip daddr @y drop } } # nft add element inet x y { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list ruleset table netdev x { set y { type ipv4_addr size 65535 quota over 10000 mbytes elements = { 8.8.8.8 quota over 10000 mbytes used 196 bytes } } chain y { type filter hook egress device „eth0” priority filter; policy accept; ip daddr @y drop } }
  • Konstantide kasutamine set-loendites on lubatud. NĂ€iteks, kui kasutada sihtadressi ja VLAN-i identifikaatori vĂ”tmena, saab otse mÀÀrata VLAN-i numbri (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id size 2048 flags dynamic,timeout timeout 1m } chain c { type filter hook ingress device eth0 priority 0; policy accept; ether type != 8021q update @s { ether daddr . 123 } counter } }
  • Uus kĂ€sk „destroy” on lisatud objektide lĂ”plikuks eemaldamiseks (erinevalt kĂ€sust delete, mis ei genera ENOENT, kui proovida eemaldada puuduvat objekti). Tööks on vajalik vĂ€hemalt Linuxi tuum 6.3-rc. destroy table ip filter

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster