ĂshtĂ« publikuar versioni 1.0.7 i filtrit tĂ« paketave nftables, i cili unifikon ndĂ«rfaqet e filtrimit tĂ« paketave pĂ«r IPv4, IPv6, ARP dhe ura rrjetesh (synim pĂ«r tĂ« zĂ«vendĂ«suar iptables, ip6tables, arptables dhe ebtables). Paketi nftables pĂ«rfshin komponentĂ«t e filtrit tĂ« paketave funksionojnĂ« nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit, ndĂ«rsa nĂ« nivelin e bĂ«rthamĂ«s funksioni sigurohet nga nĂ«n-sistemi nf_tables, qĂ« Ă«shtĂ« pjesĂ« e bĂ«rthamĂ«s Linux qĂ« nga versioni 3.13. NĂ« nivelin e bĂ«rthamĂ«s ofrohet vetĂ«m njĂ« ndĂ«rfaqe e pĂ«rgjithshme, e pavarur nga protokolli specifik dhe qĂ« ofron funksionalitete bazĂ« pĂ«r nxjerrjen e tĂ« dhĂ«nave nga paketat, kryerjen e operacioneve me tĂ« dhĂ«nat dhe menaxhimin e fluksit.
Rregullat për filtrimin dhe trajtuesit specifikë për protokollet kompilohet në kodin e bytes në hapësirën e përdoruesit, pas së cilës ky kod bytes ngarkohet në bërthamë përmes ndërfaqes Netlink dhe ekzekutohet në bërthamë në një mënyrë të veçantë, që i ngjan BPF (Filtrat e Paketa Berkeley). Ky qasje lejon të reduktohet ndjeshëm madhësia e kodit të filtrimit që operon në nivelin e bërthamës dhe të transferohet të gjitha funksionet e përpunimit të rregullave dhe logjikës së punës me protokollet në hapësirën e përdoruesit. makinën virtuale, që ngjan me BPF (Berkeley Packet Filters). Ky qasje lejon reduktimin e ndjeshëm të madhësisë së kodit të filtrimit që operon në nivelin e bërthamës dhe nxjerrjen e të gjitha funksioneve për të analizuar rregullat dhe logjikën e punës me protokollet në hapësirën e përdoruesit.
Ndryshimet kryesore:
- Për sistemet me bërthamë Linux 6.2+ është shtuar mbështetje për përputhjen e protokolleve vxlan, geneve, gre dhe gretap, duke lejuar përdorimin e shprehjeve të thjeshta për kontrollimin e titujve në paketat e inkapsuluara. Për shembull, për të kontrolluar Adresa IP në titullin e paketës së inkapsuluar nga VxLAN, tani mund të përdoren rregulla (pa pasur nevojë për de-inkapsulimin paraprak të titullit VxLAN dhe lidhjen e filtrit me ndërfaqen vxlan0): ⊠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 }
- ĂshtĂ« implementuar mbĂ«shtetje pĂ«r automatikun e shkrirjes sĂ« mbetjeve pas eliminimit tĂ« pjesshĂ«m tĂ« njĂ« elementi nga lista set, duke lejuar qĂ« tĂ« hiqet njĂ« element ose njĂ« pjesĂ« e diapazonit nga njĂ« diapazon ekzistues (mĂ« parĂ« diapazoni mund tĂ« hiqej vetĂ«m nĂ« tĂ«rĂ«si). PĂ«r shembull, pas heqjes sĂ« elementit 25 nga lista set me diapazonet 24-30 dhe 40-50 nĂ« listĂ« do mbeten 24, 26-30 dhe 40-50. Korrigjimet e nevojshme pĂ«r funksionimin e shkrirjes automatik do tĂ« proponohen nĂ« versionet e korrigjimit tĂ« degĂ«ve stabile tĂ« bĂ«rthamĂ«s 5.10+. # 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 } } }
- ĂshtĂ« lejuar pĂ«rdorimi i kontaktimeve dhe diapazoneve gjatĂ« mapimit tĂ« pĂ«rkthimit tĂ« adresave (NAT). 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 } }
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r shprehjen «last», e cila mundĂ«son tĂ« dihet koha e pĂ«rdorimit mĂ« tĂ« fundit tĂ« njĂ« elementi tĂ« rregullit ose tĂ« listĂ«s set. Kjo mundĂ«si mbĂ«shtetet qĂ« nga bĂ«rthama Linux 5.14. tabela ip x { set y { lloji i ip daddr . tcp dport madhĂ«sia 65535 flamujt dinamik, kohĂ« pĂ«rfundimi last koha 1h } zinxhiri z { lloji filtrimi hook pĂ«rfundimi prioriteti filtrit; politika pranohet; pĂ«rditĂ«so @y { ip daddr . tcp dport } } } # nft list set ip x y tabela ip x { set y { lloji i ip daddr . tcp dport madhĂ«sia 65535 flamujt dinamik, kohĂ« pĂ«rfundimi last koha 1h elementĂ«t = { 172.217.17.14 . 443 pĂ«rdorur pĂ«r herĂ« tĂ« fundit 1s591ms koha 1h skadon 59m58s409ms, 172.67.69.19 . 443 pĂ«rdorur pĂ«r herĂ« tĂ« fundit 4s636ms koha 1h skadon 59m55s364ms, 142.250.201.72 . 443 pĂ«rdorur pĂ«r herĂ« tĂ« fundit 4s748ms koha 1h skadon 59m55s252ms, 172.67.70.134 . 443 pĂ«rdorur pĂ«r herĂ« tĂ« fundit 4s688ms koha 1h skadon 59m55s312ms, 35.241.9.150 . 443 pĂ«rdorur pĂ«r herĂ« tĂ« fundit 5s204ms koha 1h skadon 59m54s796ms, 138.201.122.174 . 443 pĂ«rdorur pĂ«r herĂ« tĂ« fundit 4s537ms koha 1h skadon 59m55s463ms, 34.160.144.191 . 443 pĂ«rdorur pĂ«r herĂ« tĂ« fundit 5s205ms koha 1h skadon 59m54s795ms, 130.211.23.194 . 443 pĂ«rdorur pĂ«r herĂ« tĂ« fundit 4s436ms koha 1h skadon 59m55s564ms } } }
- ĂshtĂ« shtuar mundĂ«sia pĂ«r tĂ« pĂ«rcaktuar kuota nĂ« listat set. PĂ«r shembull, pĂ«r tĂ« pĂ«rcaktuar njĂ« kuotĂ« pĂ«r trafik pĂ«r çdo adresĂ« IP qĂ«llimi, mund tĂ« tregoni: tabela netdev x { set y { lloji i ip daddr madhĂ«sia 65535 kuotĂ« mbi 10000 mbytes } zinxhiri y { lloji filtrimi hook egress pajisja «eth0» prioriteti filtrit; politika pranohet; ip daddr @y bie } } # nft add element inet x y { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list ruleset tabela netdev x { set y { lloji ipv4_addr madhĂ«sia 65535 kuotĂ« mbi 10000 mbytes elementĂ«t = { 8.8.8.8 kuotĂ« mbi 10000 mbytes pĂ«rdorur 196 bytes } } zinxhiri y { lloji filtrimi hook egress pajisja «eth0» prioriteti filtrit; politika pranohet; ip daddr @y bie } }
- ĂshtĂ« lejuar pĂ«rdorimi i konstantave nĂ« listat set. PĂ«r shembull, kur pĂ«rdorni si çelĂ«s tĂ« listĂ«s adresĂ«n qĂ«llim dhe identifikuesin VLAN, mund tĂ« tregoni drejtpĂ«rdrejt numrin e VLAN (daddr . 123): tabela netdev t { set s { lloji i ether saddr . vlan id madhĂ«sia 2048 flamujt dinamik, kohĂ« pĂ«rfundimi koha 1m } zinxhiri c { lloji filtrimi hook ingress pajisja eth0 prioriteti 0; politika pranohet; ether tipi != 8021q pĂ«rditĂ«so @s { ether daddr . 123 } numĂ«roni } }
- ĂshtĂ« shtuar njĂ« komandĂ« e re «destroy» pĂ«r tĂ« fshirĂ« pa kusht objektet (ndryshe nga komanda delete, nuk gjeneron ENOENT kur pĂ«rpiqet tĂ« fshijĂ« njĂ« objekt tĂ« paqĂ«nĂ«). Kjo kĂ«rkon sĂ« paku bĂ«rthamĂ«n Linux 6.3-rc. shkatĂ«rro tabelĂ«n ip filter
Burimi: opennet.ru
