nftables pakešu filtra izlaišana 1.0.6

Ir publicēts nftables 1.0.6 pakešu filtra laidiens, kas apvieno IPv4, IPv6, ARP un tīkla tiltu pakešu filtrēšanas saskarnes (kuras mērķis ir aizstāt iptables, ip6table, arptables un ebtables). Pakotnē nftables ir iekļauti pakešu filtru komponenti, kas darbojas lietotāja telpā, savukārt kodola līmeni nodrošina apakšsistēma nf_tables, kas ir daļa no Linux kodola kopš 3.13. izlaiduma. Kodola līmenī tiek nodrošināts tikai vispārējs no protokola neatkarīgs interfeiss, kas nodrošina pamatfunkcijas datu ieguvei no paketēm, operāciju veikšanai ar datiem un plūsmas kontrolei.

Paši filtrēšanas noteikumi un protokolam raksturīgie apstrādātāji tiek apkopoti lietotāja telpas baitkodā, pēc kura šis baitkods tiek ielādēts kodolā, izmantojot Netlink interfeisu, un tiek izpildīts kodolā īpašā virtuālajā mašīnā, kas atgādina BPF (Berkeley Packet Filters). Šī pieeja ļauj ievērojami samazināt kodola līmenī strādājošā filtrēšanas koda lielumu un pārvietot visas parsēšanas noteikumu funkcijas un darba ar protokoliem loģiku lietotāja telpā.

Galvenās izmaiņas:

  • Noteikumu optimizētājā, kas tiek izsaukts, norādot opciju "-o/--optimize", ir iestatīta automātiska noteikumu pakotne, tos apvienojot un pārvēršot karšu un kopu sarakstos. Piemēram, noteikumi ir # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; politikas kritums; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 akceptēt meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 akceptēt meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0 ip 24 akcepth1 .iip .1.1.1.2 .2.2.4.0 ip daddr 2.2.4.10-2 akceptēt meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 4 akceptēt } } pēc "nft -o -c -f ruleset.nft" tiks pārveidots par šādu: noteikumu kopa. nft:17:74-1: meta iifname eth1.1.1.1 ip saddr 2.2.2.3 ip daddr 5 akceptēt noteikumus.nft:17:74-1: meta iifname eth1.1.1.2 ip saddr 2.2.2.4 ip daddr 6: pieņemt noteikumus. 17:77-1: meta iifname eth1.1.1.2 ip saddr 2.2.3.0 ip daddr 24/7 akceptēt noteikumus.nft:17:83-1: meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip daddr 2.2.4.10 akceptēt ruleset.nft:8:17-74: meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 akceptēt iekšā: iifname . ip saddr . ip daddr { eth1 . 1.1.1.1. 2.2.2.3., eth1 . 1.1.1.2. 2.2.2.4., eth1 . 1.1.1.2. 2.2.3.0/24, eth1 . 1.1.1.2. 2.2.4.0-2.2.4.10, eth2 . 1.1.1.3. 2.2.2.5 } pieņemt
  • Optimizētājs var arī apkopot noteikumus, kuros jau tiek izmantoti vienkārši komplektu saraksti, kompaktākā formā, piemēram: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; politikas kritums; iifname "lo" akceptēt ct statusu izveidots,saistīts pieņemt komentāru "Satiksmē mēs izcelsme, mēs uzticamies" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 } ip daddr 123 port 32768-65535-0p31 6 pieņemt iifname "enp64.59.144.17s64.59.150.133f10.0.0.149" ip saddr { 53, 32768 } ip daddr 65535 udp sport 6 udp dport 22-149 pakotni : ruleset.nft:0:31-6: iifname "enp209.115.181.102s216.197.228.230f10.0.0.149" ip saddr { 123, 32768 } ip daddr 65535 udp sport 7. 22 udp sports 143. 0. :31-6 64.59.144.17 : iifname "enp64.59.150.133s10.0.0.149f53" ip saddr { 32768, 65535 } ip daddr 0 udp sport 31 udp dport 6-209.115.181.102 akceptēt: . ip saddr . ip tētis . udp sports. udp dport { enp10.0.0.149s123f32768 . 65535. 0 . 31 . 6-216.197.228.230, enp10.0.0.149s123f32768 . 65535 . 0 . 31 . 6-64.59.144.17, enp10.0.0.149s53f32768 . 65535. 0 . 31 . 6-64.59.150.133, enp10.0.0.149s53f32768 . 65535. XNUMX . XNUMX . XNUMX-XNUMX } pieņemt
  • Atrisināta problēma ar baitkoda ģenerēšanu, lai sapludinātu intervālus, kuros tiek izmantoti veidi ar atšķirīgu galu, piemēram, IPv4 (tīkla endian) un meta atzīme (sistēmas endian). tabula ip x { map w { typeof ip saddr . meta atzīme : spriedumu karodziņi intervālu skaitītāja elementi = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : pieņemt, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : pieņemt, } } ķēde k { tipa filtra āķa ievades prioritātes filtrs; politikas kritums; ip saddr . meta atzīme vmap @w } }
  • Uzlabota retu protokolu kartēšana, izmantojot neapstrādātas izteiksmes, piemēram: meta l4proto 91 @th,400,16 0x0 akceptēt
  • Novērstas problēmas ar kārtulu iespējošanu ar intervāliem: ievietojiet noteikumu xy tcp sport { 3478-3497, 16384-16387 } counter accept
  • JSON API ir uzlabota, lai atbalstītu izteiksmes kopu un karšu sarakstos.
  • nftables python bibliotēkas paplašinājumos ir atļauts ielādēt noteikumu kopas apstrādei pārbaudes režīmā ("-c"), un ir pievienots atbalsts ārējā mainīgā definīcijai.
  • Komentāru pievienošana ir atļauta kopu sarakstu elementos.
  • Ir atļauts norādīt nulles vērtību baitu ātruma ierobežojumā.

Avots: opennet.ru

Pievieno komentāru