nftables paketni filter 1.0.6 izdanje

Objavljeno je izdanje paketnog filtera nftables 1.0.6 koje objedinjuje interfejse za filtriranje paketa za IPv4, IPv6, ARP i mrežne mostove (s ciljem zamjene iptables, ip6table, arptables i ebtables). Paket nftables uključuje komponente filtera paketa koje se pokreću u korisničkom prostoru, dok rad na razini kernela osigurava podsistem nf_tables, koji je dio Linux kernela od izdanja 3.13. Nivo kernela pruža samo generički interfejs nezavisan od protokola koji obezbeđuje osnovne funkcije za izdvajanje podataka iz paketa, izvođenje operacija sa podacima i kontrolu toka.

Sama pravila filtriranja i rukovaoci specifični za protokol se kompajliraju u bajt-kod korisničkog prostora, nakon čega se ovaj bajt kod učitava u kernel pomoću Netlink interfejsa i izvršava u kernelu u posebnoj virtuelnoj mašini koja liči na BPF (Berkeley paketni filteri). Ovaj pristup omogućava značajno smanjenje veličine koda za filtriranje koji radi na nivou kernela i premještanje svih funkcija raščlanjivanja pravila i logike rada s protokolima u korisnički prostor.

Glavne promjene:

  • Optimizator pravila, koji se poziva kada je navedena opcija “-o/—optimize”, ima automatsko pakovanje pravila tako što ih kombinuje i pretvara u liste mapa i skupova. Na primjer, pravila # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; pad politike; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 prihvati meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 prihvati meta iifname eth1 ip saddr 1.1.1.2 ip daddr ip daddr 2.2.3.0. .24 ip daddr 1-1.1.1.2 prihvati meta iifname eth2.2.4.0 ip saddr 2.2.4.10 ip daddr 2 prihvati } } nakon izvršavanja "nft -o -c -f ruleset.nft" će se konvertirati u sljedeće: set pravila nft:1.1.1.3:2.2.2.5-4: meta iifname eth17 ip saddr 74 ip daddr 1 accept ruleset.nft:1.1.1.1:2.2.2.3-5: meta iifname eth17 ip saddr 74 ip daddr 1 accept ruleset. : 1.1.1.2:2.2.2.4-6: meta iifname eth17 ip saddr 77 ip daddr 1/1.1.1.2 accept ruleset.nft:2.2.3.0:24-7: meta iifname eth17 ip saddr 83 ip daddr 1-1.1.1.2. prihvati set pravila.nft:2.2.4.0:2.2.4.10-8: meta iifname eth17 ip saddr 74 ip daddr 2 prihvati u: 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 } prihvatiti
  • Optimizator također može pretvoriti pravila koja već koriste jednostavne liste skupova u kompaktniji oblik, na primjer pravila: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; pad politike; iifname “lo” prihvatiti ct stanje uspostavljeno, povezano prihvati komentar “U saobraćaju mi ​​potičemo, vjerujemo” iifname “enp0s31f6” ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 prihvatiti u123d sport d32768 ud65535 iifname "enp0s31f6" ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 prihvatiti } } nakon -ftsn paket će slijediti -ftsn kao paket -ftsn. : ruleset.nft:6:22-149: iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123:32768 prihvatiti pravila- 65535 7 : iifname "enp22s143f0" ip saddr { 31, 6 } ip daddr 64.59.144.17 udp sport 64.59.150.133 udp dport 10.0.0.149-53 prihvati u: iifname . ip saddr. ip daddr. udp sport. udp dport { enp32768s65535f0 . 31. 6. 209.115.181.102. 10.0.0.149-123, enp32768s65535f0. 31. 6. 216.197.228.230. 10.0.0.149-123, enp32768s65535f0. 31. 6. 64.59.144.17. 10.0.0.149-53, enp32768s65535f0. 31. 6. 64.59.150.133. 10.0.0.149-53 } prihvatiti
  • Rešen problem sa generisanjem bajtkoda za intervale spajanja koji koriste tipove sa različitim redosledom bajtova, kao što su IPv4 (mrežni redosled bajtova) i meta oznaka (sistemski redosled bajtova). tabela ip x { map w { typeof ip saddr. meta oznaka : zastavice presude elementi brojača intervala = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : prihvatiti, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : prihvatiti, } } lanac k { tip filter zakačiva ulazni prioritetni filter; pad politike; ip saddr. meta oznaka vmap @w } }
  • Poboljšano poređenje rijetkih protokola kada se koriste neobrađeni izrazi, na primjer: meta l4proto 91 @th,400,16 0x0 accept
  • Problemi sa omogućavanjem pravila u intervalima su riješeni: ubaci pravilo xy tcp sport { 3478-3497, 16384-16387 } counter accept
  • JSON API je poboljšan kako bi uključio podršku za izraze u listama skupova i mapa.
  • Proširenja za nftables python biblioteku dozvoljavaju učitavanje skupova pravila za obradu u režimu validacije ("-c") i dodaju podršku za eksternu definiciju varijabli.
  • Dodavanje komentara je dozvoljeno u elementima set liste.
  • Ograničenje brzine bajtova omogućava specificiranje nulte vrijednosti.

izvor: opennet.ru

Dodajte komentar