Paketifiltri nftables 1.0.0 vÀljaanne

Avaldatud on nftables 1.0.0 paketifiltri vĂ€ljaanne, mis ĂŒhtlustab paketifiltreerimise liideseid IPv4, IPv6, ARP ja vĂ”rgu sillutamiseks (sihtides iptables'i, ip6table'i, arptables'i ja ebtables'i asendamist). Nftables 1.0.0 vĂ€ljalaske tööks vajalikud muudatused on lisatud Linuxi 5.13 tuuma. Oluline versiooninumber ei ole seotud oluliste muudatustega, vaid kajastab lihtsalt kĂŒmnendsĂŒsteemi jĂ€rjestikust numbreid (eelmine vĂ€ljaanne oli 0.9.9).

Nftables'i paketti kuuluvad kasutajaruumi töötavad pakettfilteri komponendid, samas kui tuuma tasemel tagab töö nf_tables sĂŒsteem, mis on osa Linuxi tuumast alates versioonist 3.13. Tuuma tasemel pakutakse vaid ĂŒldist liidest, mis ei sĂ”ltu konkreetsest protokollist ja pakub pĂ”hifunktsioone andmete vĂ€ljavĂ”tmiseks pakettidest, andmetega töötamiseks ja voogude 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 uuendused:

  • Set-loenditesse on lisatud toetus maskielemendile "*", mis sobib kĂ”igi pakettide jaoks, mis ei vasta teistele loendis mÀÀratletud elementidele. 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 } }
  • KĂ€surealt muutujate mÀÀramise vĂ”imalus on saadud valiku „—define“ kaudu. # 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
  • Map-loendites on lubatud kasutada pĂŒsivaid (stateful) vĂ€ljendeid: 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 } } }
  • Lisatud on kĂ€sk „list hooks“, mis vĂ€ljastab mÀÀratud pakettide perekonna töötlejate loendi: # 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 } }
  • Blokkides „queue“ on lubatud kombinatsioonide kasutamine vĂ€ljenditest jhash, symhash ja numgen pakettide jaotamiseks jĂ€rjekordades kasutajalas. 
 queue to symhash mod 65536 
 queue flags bypass to numgen inc mod 65536 
 queue to jhash oif . meta mark mod 32 „queue“ saab ka kombineerida map-loenditega, et valida jĂ€rjekord kasutajalas, tuginedes meelevaldsetele vĂ”tmetele. 
 queue flags bypass to oifname map { „eth0“ : 0, „ppp0“ : 2, „eth1“ : 2 }
  • On antud vĂ”imalus kahemĂ”tteliste muutuja vÀÀrtuste, sealhulgas set-loendi sisu avamiseks mitmesse mappi. 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 } } }
  • Kombinatsioon vmap-idest (verdict map) koos intervallidega on lubatud: # nft add rule x y tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : accept }
  • NAT-i soovitused on lihtsustatud. Lubatud on aadresside vahemike mÀÀramine: 
 snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } vĂ”i selged IP-aadresse ja sadamad: 
 dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 . 80 } vĂ”i IP ja sadamate vahemike kombinatsioonid: 
 dnat to ip saddr . tcp dport map { 192.168.1.2 . 80 : 10.141.10.2-10.141.10.5 . 8888-8999 }

Allikas: opennet.ru

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster