Lëshimi i filtrit të paketave nftables 1.1.0

ËshtĂ« publikuar versioni i filtrit tĂ« paketave nftables 1.1.0, i cili unifikon ndĂ«rfaqet e filtrimit tĂ« paketave pĂ«r IPv4, IPv6, ARP dhe ura rrjetesh (synon tĂ« zĂ«vendĂ«sojĂ« iptables, ip6tables, arptables dhe ebtables). Ndryshimi i dukshĂ«m i numrit tĂ« versionit nuk Ă«shtĂ« i lidhur me ndonjĂ« ndryshim thelbĂ«sor, por Ă«shtĂ« thjesht njĂ« pasojĂ« e vazhdimit tĂ« numĂ«rimit nĂ« sistemin dekadĂ« (publikimi i kaluar ishte 1.0.9). NĂ« tĂ« njĂ«jtĂ«n kohĂ« Ă«shtĂ« publikuar versioni i bibliotekĂ«s pĂ«rkrahĂ«se libnftnl 1.2.7, e cila ofron njĂ« API tĂ« nivelit tĂ« ulĂ«t pĂ«r ndĂ«rveprimin me nĂ«n-sistemin nf_tables.

Paketa nftables përmban komponente të filtrit të paketave që funksionojnë në hapësirën e përdoruesit, ndërsa në nivelin e bërthamor punon nën-sistemi nf_tables, i cili është pjesë e bërthamës Linux që nga versione 3.13. Në nivelin e bërthamës ofrohet vetëm një ndërfaqe e përgjithshme, e pavaruar nga protokolli i veçantë dhe që ofron funksione bazë për nxjerrjen e të dhënave nga paketat, për 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:

  • NĂ« shprehjet map Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r variablat: define dst_map = { ::1234 : 5678 } table ip6 nat { map dst_map { typeof ip6 daddr : tcp dport; elements = $dst_map } chain prerouting { ip6 nexthdr tcp redirect to ip6 daddr map @dst_map } }
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r VLAN: ip saddr 10.1.1.1 icmp type echo-request vlan id set 321 # payload ether type 8021ad vlan id 10 vlan type 8021q vlan id 100 vlan type ip accept
  • PĂ«r shprehjet «log» Ă«shtĂ« angazhuar njĂ« preprocessues tĂ« ri string me mbĂ«shtetje pĂ«r variablat: define message=»test» log prefix «my $message»
  • NĂ« llogaritjen e vlerĂ«s sĂ« shprehjes «meta hour» Ă«shtĂ« realizuar pĂ«rpunimi i offset negativ nĂ« zonĂ«n e kohĂ«s, e cila Ă«shtĂ« e pĂ«rcaktuar pĂ«rmes variablit tĂ« mjedisit TZ: TZ=UTC-4 nft add rule x y meta hour «22:00»
  • ËshtĂ« siguruar konvertimi i rendit tĂ« bajtĂ«ve gjatĂ« pĂ«rdorimit tĂ« shprehjeve ct dhe meta, si dhe gjatĂ« pĂ«rdorimit tĂ« operacioneve tĂ« bashkimit dhe pĂ«rcaktimit tĂ« intervaleve nĂ« set-ekzistenca. map mapv6 { typeof ip6 dscp : meta mark; } meta mark set ip6 dscp map @map1 do tĂ« shihet kodi bajt: [ payload load 2b @ network header + 0 => reg 1 ] [ bitwise reg 1 = ( reg 1 & 0x0000c00f ) ^ 0x00000000 ] [ byteorder reg 1 = ntoh(reg 1, 2, 2) ] [ bitwise reg 1 = ( reg 1 > 0x00000006 ) ] [ lookup reg 1 set mapv6 dreg 1 ] [ meta set mark with reg 1 ]
  • ËshtĂ« rinisur mbĂ«shtetja pĂ«r komandĂ«n «replace rule». replace rule ip t1 c1 handle 3 ‘jhash ip protocol . ip saddr mod 170 vmap { 0-94 : goto wan1, 95-169 : goto wan2, 170-269 }’
  • ËshtĂ« rinisur mundĂ«sia pĂ«r tĂ« shtuar pajisje rrjeti nĂ« ekzistencat e flowtable: create flowtable inet filter f1 { hook ingress priority 0; counter } add flowtable inet filter f1 { devices = { dummy1 } ; }
  • JanĂ« zgjidhur problemet gjatĂ« pĂ«rdorimit tĂ« komandĂ«s «create set»: define ip-block-4 = { 1.1.1.1 } create set netdev filter ip-block-4-test { type ipv4_addr flags interval auto-merge elements = $ip-block-4 }
  • JanĂ« zgjidhur problemet gjatĂ« pĂ«rdorimit tĂ« pĂ«rfaqĂ«simit digjital tĂ« opsioneve tcp: tcp option 254
  • JanĂ« zgjidhur problemet gjatĂ« pĂ«rdorimit tĂ« shprehjeve meta dhe ct me set-map: meta mark set vlan id map { 1 : 0x00000001, 4095 : 0x00004095 }
  • NĂ« shprehjet payload dhe concat Ă«shtĂ« e ndaluar specifikimi i tĂ« dhĂ«nave mĂ« tĂ« mĂ«dha se 512 bajt.
  • Kur ekzekutohet urdhĂ«ri «nft describe», janĂ« implementuar vlerat nga skedaret group, rt_mark dhe rt_realms, tĂ« vendosura nĂ« katalgĂ«t /etc/iproute2/ dhe /use/share/iproute2/. # nft describe meta rtclassid meta expression, datatype realm (sfera e routing) (basetype integer), 32 bits konstanta simbolike tĂ« paracaktuara nga /etc/iproute2/rt_realms (nĂ« decimal): cosmos 0 Refuzoni deklaratĂ«n me gamĂ« meta mark set 0-100
  • Operacioni i shfaqjes sĂ« listĂ«s sĂ« tabelave Ă«shtĂ« pĂ«rshpejtuar. ËshtĂ« implementuar mbĂ«shtetje pĂ«r opsionin -t/—terse pĂ«r pĂ«rshpejtimin e komandave «list table» dhe «list set».
  • ËshtĂ« siguruar transformimi i shprehjeve meter nĂ« grupe dinamike set: add rule t c tcp dport 80 meter m size 128 { ip saddr timeout 2s limit rate 10/second } do tĂ« transformohet nĂ« set m { type ipv4_addr size 128 flags dynamic,timeout } tcp dport 80 update @m { ip saddr timeout 2s limit rate 10/second burst 5 packets }
  • NĂ« paraqitjen nĂ« formatin JSON Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r objekte synproxy dhe grupe map me tĂ« dhĂ«na tĂ« bashkuara.
  • NĂ« grupet set, tĂ« specifikuara nĂ« formatin JSON, Ă«shtĂ« realizuar mbĂ«shtetje pĂ«r flamurin auto-merge.
  • Kur pĂ«rdorim paraqitjen nĂ« formatin JSON, lejohet specifikimi i disa pajisjeve nĂ« blokun «chain».
  • Me pĂ«rdorimin e opsioneve -f/—filename, pĂ«rpunimi i rrugĂ«ve tani bĂ«het nĂ« lidhje me katalgun e skedarit aktual.
  • Me pĂ«rdorimin e opsioneve -I/—include, ekzekutimi i rrugĂ«ve me tĂ« dhĂ«na tani bĂ«het nga fundi i listĂ«s.
  • Optimizimi i opsioneve -o/—optimize Ă«shtĂ« rregulluar me shprehje qĂ« pĂ«rmbajnĂ« numĂ«rues vlerash: # nft -c -o -f ruleset.nft Bashkimi: ruleset.nft:5:17-45: ct state invalid counter drop ruleset.nft :6:17-59: ct state established,related counter accept nĂ«: ct state vmap { invalid counter : drop, established counter : accept, related counter : accept } Bashkimi: ruleset.nft:7:17-43: tcp dport 80 counter accept ruleset.nft:8:17-44: tcp dport 123 counter accept nĂ«: tcp dport { 80, 123 } counter accept Bashkimi: ruleset.nft:9:17-64: ip saddr 1.1.1.1 ip daddr 2.2.2.2 counter accept ruleset.nft:10:17-62: ip saddr 1.1.1.2 ip daddr 3.3.3.3 counter drop nĂ«: ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 counter : accept, 1.1.1.2 . 3.3.3.3 counter : drop }
  • ËshtĂ« rikthyer kompatibiliteti me dump-t e elementit set, tĂ« krijuara nĂ« nftables pĂ«rpara versionit 0.9.8.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster