nftables packet filter 1.0.0 rilaxx

Ġie ppubblikat ir-rilaxx tal-packet filter nftables 1.0.0, li jgħaqqad l-interfaces tal-iffiltrar tal-pakketti għall-IPv4, IPv6, ARP u pontijiet tan-netwerk (immirati biex jissostitwixxu iptables, ip6table, arptables u ebtables). Il-bidliet meħtieġa għar-rilaxx ta 'nftables 1.0.0 biex jaħdmu huma inklużi fil-kernel Linux 5.13. Bidla sinifikanti fin-numru tal-verżjoni mhix assoċjata ma 'xi tibdil fundamentali, iżda hija biss konsegwenza tal-kontinwazzjoni konsistenti tan-numerazzjoni f'notazzjoni deċimali (ir-rilaxx preċedenti kien 0.9.9).

Il-pakkett nftables jinkludi komponenti tal-filtri tal-pakketti li jaħdmu fl-ispazju tal-utent, filwaqt li x-xogħol fil-livell tal-kernel huwa pprovdut mis-subsistema nf_tables, li ilha parti mill-kernel tal-Linux sa mir-rilaxx 3.13. Il-livell tal-qalba jipprovdi biss interface ġeneriku indipendenti mill-protokoll li jipprovdi funzjonijiet bażiċi għall-estrazzjoni tad-dejta minn pakketti, it-twettiq ta 'operazzjonijiet tad-dejta, u l-kontroll tal-fluss.

Ir-regoli tal-filtrazzjoni nfushom u handlers speċifiċi għall-protokoll huma kkompilati f'bytecode tal-ispazju tal-utent, u wara dan il-bytecode jitgħabba fil-kernel bl-użu tal-interface Netlink u eżegwit fil-kernel f'magna virtwali speċjali li tixbaħ BPF (Berkeley Packet Filters). Dan l-approċċ jagħmilha possibbli li jitnaqqas b'mod sinifikanti d-daqs tal-kodiċi tal-filtrazzjoni li jaħdem fil-livell tal-qalba u l-funzjonijiet kollha tar-regoli tal-parsing u l-loġika tal-ħidma bi protokolli jitmexxew fl-ispazju tal-utent.

Innovazzjonijiet ewlenin:

  • L-appoġġ għall-element tal-maskra "*" ġie miżjud mal-listi tas-sett, li jiġi attivat għal kwalunkwe pakkett li ma jaqax taħt elementi oħra definiti fis-sett. tabella x { lista ta 'blokk tal-mappa { tip ipv4_addr : elementi ta' intervall bnadar ta 'verdett = { 192.168.0.0/16 : taċċetta, 10.0.0.0/8 : taċċetta, * : qatra } } katina y { tip filtru hook prerouting prijorità 0; politika taċċetta; ip saddr vmap @blocklist } }
  • Huwa possibbli li jiġu definiti varjabbli mil-linja tal-kmand billi tuża l-għażla "--define". # cat test.nft table netdev x { chain y { type filter hook ingress devices = $dev prijorità 0; tnaqqis fil-politika; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • Fil-listi tal-mapep, l-użu ta' espressjonijiet kostanti (stateful) huwa permess: tabella inet filter { map portmap { tip inet_service : elementi tal-counter verdict = { 22 counter packets 0 bytes 0 : jump ssh_input, * counter packets 0 bytes 0 : drop } } chain ssh_input { } chain wan_input { tcp dport vmap @portmap } chain prerouting { tip filtru hook prerouting prijorità raw; politika taċċetta; iif vmap { "lo" : jaqbeż wan_input } } }
  • Miżjud kmand "list hooks" biex juri lista ta' handlers għal familja ta' pakketti partikolari: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_tables] } hook input { -0000000100 chain ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } hook forward { -0000000225 selinux_ipv4_forward 0000000000 chain ip ac [nf_tables] -0000000225 poġġi } hook postroute { +4 0000000225 selinux_ipv4_postroute } }
  • Il-blokok tal-kju jippermettu li espressjonijiet jhash, symhash, u numgen jiġu kkombinati biex iqassmu pakketti fil-kjuwijiet fl-ispazju tal-utent. … kju għal symhash mod 65536 … kju bnadar bypass għal numgen inc mod 65536 … kju għal jhash oif . meta mark mod 32 "kju" tista 'wkoll tiġi kkombinata ma' listi ta 'mapep biex tagħżel kju fl-ispazju tal-utent ibbażat fuq ċwievet arbitrarji. ... kju bnadar jaqbżu għall-mappa oifname { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Huwa possibbli li tespandi varjabbli li jinkludu lista ta 'sett f'diversi mapep. tiddefinixxi interfaces = { eth0, eth1 } tabella ip x { katina y { tip filter hook input prijorità 0; politika taċċetta; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft list ruleset table ip x { chain y { type filter hook input priority 0; politika taċċetta; iifname vmap { "lo" : aċċetta, "eth0" : qatra, "eth1" : qatra } } }
  • Il-kombinazzjoni ta' vmaps (mappa tal-verdett) f'intervalli hija permessa: # nft add rule xy tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : aċċetta }
  • Sintassi simplifikata għall-mappings NAT. Ippermettiet li tispeċifika firxiet ta' indirizzi: ... snat to ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } jew indirizzi IP espliċiti u portijiet: ... dnat to ip saddr map { 10.141.11.4 : 192.168.2.3. . 80 } jew kombinazzjonijiet ta 'firxiet IP u portijiet: ... dnat to ip saddr . tcp dport map { 192.168.1.2 . 80: 10.141.10.2-10.141.10.5. 8888-8999}

Sors: opennet.ru

Żid kumment