Pakettide filtrite nftables 1.0.3 vÀljaandmine

VĂ€lja anti pakettfilter nftables 1.0.3, mis ĂŒhtlustab pakettide filtreerimise liideseid IPv4, IPv6, ARP ja vĂ”rgu sillade jaoks (mille eesmĂ€rk on asendada iptables, ip6tables, arptables ja ebtables). Nftables 1.0.3 tööks vajalikud muudatused on kaasatud Linuxi 5.18 tuumasse.

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-loendites on lisandunud toetus vĂ”rgu liidestega seotud nimede vĂ”rdlemiseks maskeeringu kaudu, nĂ€iteks tĂ€histatud tĂ€hetega „*”: table inet testifsets { set simple_wild { type ifname flags interval elements = { „abcdef*”, „othername”, „ppp0” } } chain v4icmp { type filter hook input priority 0; policy accept; iifname @simple_wild counter packets 0 bytes 0 iifname { „abcdef*”, „eth0” } counter packets 0 bytes 0 } }
  • Automaatne kattuvate set-loendi elementide ĂŒhendamine töö kĂ€igus on rakendatud. Varasemalt toimus pĂ€rast ĂŒhendusvĂ”imaluse „auto-merge” seadistamist ĂŒhendamine reeglite deklareerimise etapis, kuid nĂŒĂŒd toimub see ka uute elementide tĂ€iendamisel töökĂ€igus. NĂ€iteks deklareerimise etapis loend set y { flags interval auto-merge elements = { 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 } } muudetakse elements = { 1.2.3.0/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } ning seejĂ€rel, kui lisada uusi elemente # nft add element ip x y { 1.2.3.0-1.2.4.255, 3.3.3.6 } kujuneb see elements = { 1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8 }

    Eraldi elementide eemaldamisel loendist, mis langevad kokku olemasolevate vahemikega, lĂŒheneb vĂ”i jaguneb see vahemik.

  • Reeglite optimeerijale, mida kutsub esile valiku „-o/—optimize” kasutamine, on lisatud tugi mitme aadressi tĂ”lke (NAT) reegli ĂŒhendamiseks map-loendisse. NĂ€iteks komplekti jaoks # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; policy drop; ip saddr 1.1.1.1 tcp dport 8000 snat to 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90 } }

    kĂ€sk „nft -o -c -f ruleset.nft” viib eraldi reeglite „ip saddr” teisendamiseni map-loendisse: snat to ip saddr . tcp dport map { 1.1.1.1 . 8000 : 4.4.4.4 . 80, 2.2.2.2 . 8001 : 5.5.5.5 . 90 }

    Samuti vÔivad raw-vÀljendid muutuda map-loenditeks: # cat ruleset.nft table ip x { [
] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 goto nat_dns_dnstc udp length 62-78 @th,160,128 0x0e31393032383939353831343037320e goto nat_dns_this_5301 udp length 62-78 @th,160,128 0x0e31363436323733373931323934300e goto nat_dns_saturn_5301 udp length 62-78 @th,160,128 0x0e32393535373539353636383732310e goto nat_dns_saturn_5302 udp length 62-78 @th,160,128 0x0e38353439353637323038363633390e goto nat_dns_saturn_5303 drop } }

    PĂ€rast optimeerimist saame map-loendi: udp length . @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : goto nat_dns_this_5301, 62-78 . 0x0e31363436323733373931323934300e : goto nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e : goto nat_dns_saturn_5302, 62-78 . 0x0e38353439353637323038363633390e : goto nat_dns_saturn_5303 }

  • Raw-vĂ€ljendite kasutamine konkateneerimistöödes on lubatud. NĂ€iteks: # nft add rule x y ip saddr . @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 . 0x1e } vĂ”i table x { set y { typeof ip saddr . @ih,32,32 elements = { 1.1.1.1 . 0x14 } } }
  • Lisatud tugi tĂ€isarvuliste pealkirjade vĂ€ljade nĂ€itamiseks konkateneerimistöödes: table inet t { map m1 { typeof udp length . @ih,32,32 : verdict flags interval elements = { 20-80 . 0x14 : accept, 1-10 . 0xa : drop } } chain c { type filter hook input priority 0; policy drop; udp length . @ih,32,32 vmap @m1 } }
  • Lisatud tugi TCP-valikute resettimiseks (töötab ainult Linuxi versiooniga 5.18+): tcp flags syn reset tcp option sack-perm
  • Aetud kiirem vĂ€ljaandmisĂ€ru kĂ€skude tĂ€itmine („nft list chain x y“).

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