nftables багц шүүлтүүрийн хувилбар 1.0.6

IPv1.0.6, IPv4, ARP болон сүлжээний гүүр (iptables, ip6table, arptables болон ebtables-ийг солиход чиглэгдсэн) багц шүүлтүүрийн интерфейсийг нэгтгэсэн nftables 6 багц шүүлтүүрийн хувилбарыг хэвлэв. nftables багц нь хэрэглэгчийн орон зайд ажилладаг пакет шүүлтүүрийн бүрэлдэхүүн хэсгүүдийг агуулдаг бол цөмийн түвшинг 3.13 хувилбараас хойш Линуксийн цөмийн нэг хэсэг болсон nf_tables дэд системээр хангадаг. Цөмийн түвшинд пакетуудаас өгөгдөл гаргаж авах, өгөгдөл дээр үйлдэл хийх, урсгалыг хянах үндсэн функцуудыг хангадаг ерөнхий протоколоос хамааралгүй интерфейс л хангагдсан байдаг.

Шүүлтүүрийн дүрмүүд болон протоколын тусгай зохицуулагч нар нь хэрэглэгчийн орон зайн байт код руу хөрвүүлэгдэж, дараа нь энэ байт кодыг Netlink интерфейсийг ашиглан цөмд ачаалж, BPF (Беркли Пакет шүүлтүүр) -тэй төстэй тусгай виртуал машинд цөмд ажиллуулдаг. Энэхүү арга нь цөмийн түвшинд ажиллаж байгаа шүүлтүүрийн кодын хэмжээг эрс багасгаж, задлан шинжлэх дүрмийн бүх функцууд болон протоколуудтай ажиллах логикийг хэрэглэгчийн орон зайд шилжүүлэх боломжийг олгодог.

Үндсэн өөрчлөлтүүд:

  • "-o/--optimize" сонголтыг зааж өгөх үед дуудагдсан дүрмийн оновчтой болгох хэсэгт дүрмийг нэгтгэж, газрын зураг, багц жагсаалт болгон хөрвүүлэх замаар автоматаар багцалсан. Жишээ нь, дүрэм нь # cat ruleset.nft table ip x { chain y { type filter hook оролтын тэргүүлэх шүүлтүүр; бодлогын уналт; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 хүлээн авах мета iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 хүлээн авах мета iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0. .24 ip daddr 1-1.1.1.2 хүлээн авах meta iifname eth2.2.4.0 ip saddr 2.2.4.10 ip daddr 2 хүлээн зөвшөөрөх } } дараа "nft -o -c -f ruleset.nft" дараах руу хөрвүүлнэ: дүрмийн багц. nft:1.1.1.3:2.2.2.5-4: meta iifname eth17 ip saddr 74 ip daddr 1 хүлээн зөвшөөрөх ruleset.nft:1.1.1.1:2.2.2.3-5: meta iifname eth17 ip saddr 74 ip daddr 1 дүрмийг хүлээн авах.nft: 1.1.1.2:2.2.2.4-6: meta iifname eth17 ip saddr 77 ip daddr 1/1.1.1.2 хүлээн авах ruleset.nft:2.2.3.0:24-7: meta iifname eth17 ip saddr 83 ip daddr 1-1.1.1.2. ruleset.nft:2.2.4.0:2.2.4.10-8: meta iifname eth17 ip saddr 74 ip daddr 2 хүлээн авах: iifname . ip saddr. ip daddr {eth1.1.1.3. 2.2.2.5. 1, eth1.1.1.1 . 2.2.2.3. 1, eth1.1.1.2 . 2.2.2.4. 1/1.1.1.2, eth2.2.3.0 . 24. 1-1.1.1.2, eth2.2.4.0 . 2.2.4.10. 2 } зөвшөөрөх
  • Оновчлогч нь энгийн багц жагсаалтуудыг аль хэдийн ашигласан дүрмийг илүү нягт хэлбэрт оруулах боломжтой, тухайлбал: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; бодлогын уналт; Бид "Lo" хүлээн зөвшөөрч байгаа CT-ийн хүлээн зөвшөөрөгдсөн CT-ийг хүлээн авах, "IP SEDDR0"} ЗАГВАР "IP DIDDR31" IPSHONDR6 "ICDDR209.115.181.102" UDPUNDON "IP ANDRONDDR216.197.228.230" UDPUNDR10.0.0.149 "UDPUNDR123" {32768-65535-0-31-6-P-ийн хугацаа 64.59.144.17-64.59.150.133-10.0.0.149 тон iifname "enp53s32768f65535" ip saddr {6, 22 } ip daddr 149 udp sport 0 udp dport 31-6 зөвшөөрнө } -} -o багцыг ажиллуулсны дараа ийм дүрмүүд "nftc" болно."nftc. : ruleset.nft:209.115.181.102:216.197.228.230-10.0.0.149: iifname "enp123s32768f65535" IP saddr {7, 22} IP daddr 143 udp спорт 0 ud31n.dp дүрэм хүлээн авах: ud6n. -64.59.144.17 64.59.150.133 : iifname "enp10.0.0.149s53f32768" ip saddr {65535, 0} ip daddr 31 udp спорт 6 udp dport 209.115.181.102-10.0.0.149 руу хүлээн авах: iifname. ip saddr. ip daddr. udp спорт. udp dport {enp123s32768f65535. 0. 31. 6 . 216.197.228.230-10.0.0.149, enp123s32768f65535 . 0. 31. 6 . 64.59.144.17-10.0.0.149, enp53s32768f65535 . 0. 31. 6 . 64.59.150.133-10.0.0.149, enp53s32768f65535 . XNUMX. XNUMX. XNUMX . XNUMX-XNUMX } хүлээн авна уу
  • IPv4 (сүлжээний индиан) болон мета тэмдэг (системийн индиан) гэх мэт өөр өөр чанартай төрлүүдийг ашигладаг интервалуудыг нэгтгэх байт код үүсгэхтэй холбоотой асуудлыг шийдвэрлэсэн. хүснэгт IP x { газрын зураг w { typeof ip saddr . мета тэмдэг: шийдвэрийн тугуудын интервалын эсрэг элементүүд = {127.0.0.1-127.0.0.4. 0x123434-0xb00122 : хүлээн авах, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : хүлээн авах, } } гинж к {төрлийн шүүлтүүр дэгээ оролтын тэргүүлэх шүүлтүүр; бодлогын уналт; ip saddr. meta mark vmap @w } }
  • Түүхий илэрхийлэл ашиглах үед ховор протоколын зураглалыг сайжруулсан, жишээ нь: meta l4proto 91 @th,400,16 0x0 хүлээн авах
  • Дүрмүүдийг интервалтайгаар идэвхжүүлэхтэй холбоотой асуудлыг зассан: дүрэм оруулах xy tcp sport {3478-3497, 16384-16387 } тоологч хүлээн авах
  • JSON API нь багц болон газрын зургийн жагсаалт дахь илэрхийллийг дэмжихийн тулд сайжруулсан.
  • nftables python номын сангийн өргөтгөлүүдэд дүрмийн багцуудыг шалгах горимд ("-c") боловсруулахаар ачаалахыг зөвшөөрдөг бөгөөд гадаад хувьсагчийн тодорхойлолтыг дэмждэг болсон.
  • Сэтгэгдэл нэмэхийг багц жагсаалтын элементүүдэд зөвшөөрдөг.
  • Байтын хурдны хязгаарт тэг утгыг зөвшөөрдөг.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх