nftables packet filter versione 1.0.6

A liberazione di packet filter nftables 1.0.6 hè stata publicata, unificatu l'interfacce di filtrazione di pacchetti per IPv4, IPv6, ARP è ponti di rete (destinata à rimpiazzà iptables, ip6table, arptables è ebtables). U pacchettu nftables include cumpunenti di filtru di pacchettu chì funzionanu in u spaziu di l'utilizatori, mentre chì u travagliu à livellu di u kernel hè furnitu da u subsistema nf_tables, chì hè stata parti di u kernel Linux da a versione 3.13. U nivellu di u kernel furnisce solu una interfaccia generica indipendente da u protokollu chì furnisce funzioni basiche per l'estrazione di dati da i pacchetti, eseguisce operazioni di dati è u cuntrollu di flussu.

I reguli di filtrazione stessi è i gestori specifichi di u protocolu sò compilati in u bytecode di u spaziu di l'utilizatori, dopu chì stu bytecode hè caricatu in u kernel utilizendu l'interfaccia Netlink è eseguitu in u kernel in una macchina virtuale speciale chì s'assumiglia à BPF (Berkeley Packet Filters). Stu approcciu permette di riduce significativamente a dimensione di u codice di filtrazione chì corre à u livellu di u kernel è move tutte e funzioni di e regule di analisi è a logica di travaglià cù protokolli in u spaziu di l'utilizatori.

I cambiamenti principali:

  • L'ottimisatore di regule, chjamatu quandu l'opzione "-o/-optimize" hè specificatu, hà un imballaggio automaticu di e regule cumminendu e cunvertisce in carte è liste di set. Per esempiu, regule # cat ruleset.nft table ip x { chain y { type filter hook input filtru priurità; caduta di pulitica; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accetta meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accetta meta iifname eth1 ip saddr 1.1.1.2 ip meta iifname 2.2.3.0 ip saddr 24 if/1 eth saddr .1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accettà meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accetta } } dopu avè esecutatu "nft -o -c -f ruleset.nft" serà cunvertitu in u seguitu: ruleset .nft: 4: 17-74: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accettà ruleset.nft: 5: 17-74: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept ruleset.nft : 6:17-77: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accettà ruleset.nft:7:17-83: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10. accettà ruleset.nft:8:17-74: meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accetta in: 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 } accettà
  • L'ottimisatore pò ancu cunvertisce e regule chì usanu digià listessi simplici in una forma più compacta, per esempiu e regule: # cat ruleset.nft table ip filter { chain input { type filter hook input filter priority ; caduta di pulitica; iifname "lo" accettà u statu ct stabilitu, cunnessu accettà cummentariu "In u trafficu avemu urigine, avemu fiducia" iifname "enp0s31f6" ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 ud 123 sport 32768 ud 65535 0 dp 31 ud iifname "enp6s64.59.144.17f64.59.150.133" ip saddr { 10.0.0.149, 53 } ip daddr 32768 udp sport 65535 udp dport 6-22 accettà } } } } dopu à eseguisce u pacchettu "-nft" -nf sarà seguitu u pacchettu cum'è u pacchettu -nft. : ruleset.nft:149:0-31: iifname "enp6s209.115.181.102f216.197.228.230" ip saddr { 10.0.0.149, 123 } ip daddr 32768 udp sport 65535 udp sport 7 udp:-22 dport:-et 143 : 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 accetta in: iifname . ip saddr. ip daddr. udp sport. udp dport {enp0s31f6. 209.115.181.102. 10.0.0.149. 123. 32768-65535, enp0s31f6. 216.197.228.230. 10.0.0.149. 123. 32768-65535, enp0s31f6. 64.59.144.17. 10.0.0.149. 53. 32768-65535, enp0s31f6. 64.59.150.133. 10.0.0.149. 53. 32768-65535 } accettà
  • Prublemu risoltu cù a generazione di bytecode per fusione intervalli chì utilizanu tipi cù un ordine di byte diffirenti, cum'è IPv4 (ordine di byte di rete) è meta marca (ordine di byte di sistema). table ip x { map w { typeof ip saddr . meta mark: verdict flags interval counter elements = {127.0.0.1-127.0.0.4. 0x123434-0xb00122 : accettà, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : accettà, } } catena k { tippu filtru hook input filtru priurità; caduta di pulitica; ip saddr. meta mark vmap @w } }
  • Comparazione mejorata di protokolli rari quandu si usanu espressioni prima, per esempiu: meta l4proto 91 @th,400,16 0x0 accetta
  • I prublemi cù e regule di attivazione à intervalli sò stati risolti: inserisci a regula xy tcp sport { 3478-3497, 16384-16387 } counter accept
  • L'API JSON hè stata migliurata per include supportu per l'espressioni in listi di set è carte.
  • L'estensioni à a libreria nftables python permettenu a carica di setti di regule per u processu in modu di validazione ("-c") è aghjunghje supportu per a definizione esterna di variàbili.
  • L'aghjunzione di cumenti hè permessa in elementi di lista set.
  • Byte ratelimit permette di specificà un valore zero.

Source: opennet.ru

Add a comment