Nftables 0.9.4 paketifiltri vÀljalaskmine

Avaldatud paketifiltri vÀljalaskmine nftables 0.9.4, mis areneb iptables, ip6tables, arptables ja ebtables asendamiseks, unifitseerides pakettide filtreerimise liideseid IPv4, IPv6, ARP ja vÔrgu silmade jaoks. Paketis nftables on komponentide paketifilter, mis töötab kasutaja ruumis, samas kui tuuma tasemel pakub tööd nf_tables subsystem, mis on osa Linuxi tuumast alates versioonist 3.13. Nftables 0.9.4 vÀljalaske jaoks vajalikud muudatused on lisatud tulevasse tuuma haru. Linux 5.6.

Ytme tasandi kasutab vaid ĂŒldist liidest, mis ei sĂ”ltu konkreetsest protokollist ja pakub pĂ”hifunktsioone andmete vĂ€ljatĂ”mbeks pakettidest, andmetega töötamiseks ja voogude haldamiseks. Filtreerimisreeglid ja protokollispetsiifilised töötlejad kompileeritakse kasutajaruumi baidi koodi, seejĂ€rel laaditakse see baidikood Netlinki liidese kaudu ytmesse ning seda tĂ€idetakse ytmes spetsiaalses virtuaalmasinas, mis meenutab BPF (Berkeley Packet Filters) protokolli. Selline lĂ€henemine vĂ”imaldab oluliselt vĂ€hendada ytmes töötava filtreerimiskoodi suurust ja viia kĂ”ik reeglite parsingu ja protokollidega töötamise funktsioonid kasutajaruumi.

PÔhilised uuendused:

  • Toetused vahemike jaoks konkateneerimistes (concatenation, teatud aadressi ja portide sidumist, mis lihtsustavad vastavust). NĂ€iteks „whitelist“ seadistuses, mille elemendid on konkateneerimine, nĂ€itab „interval“ lipu mÀÀramine, et komplekt vĂ”ib sisaldada vahemikke konkateneerimises (nt „ipv4_addr . ipv4_addr . inet_service“ puhul oli varem vĂ”imalik loetleda tĂ€psed vasteid nagu „192.168.10.35 . 192.68.11.123 . 80“, nĂŒĂŒd on lubatud mÀÀrata aadressigruppide vahemikke nagu „192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80“):

    table ip foo {
    set whitelist {
    type ipv4_addr . ipv4_addr . inet_service
    flags interval
    elements = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80 }
    }

    chain bar {
    type filter hook prerouting priority filter; policy drop;
    ip saddr . ip daddr . tcp dport @whitelist accept
    }
    }

  • Komplektides ja map-loendites on tagatud vĂ”imalus kasutada direktiivi „typeof”, mis mÀÀrab elemendi formaadi vastavuse ajal.
    NĂ€iteks:

    table ip foo {
    set whitelist {
    typeof ip saddr
    elements = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    chain bar {
    type filter hook prerouting priority filter; policy drop;
    ip daddr @whitelist accept
    }
    }

    table ip foo {
    map addr2mark {
    typeof ip saddr : meta mark
    elements = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Lisatud on vĂ”imalus kasutada konkateneerimisi NAT-seostes, mis vĂ”imaldab mÀÀrata aadressi ja pordi NAT-muunduste mÀÀratlemisel map-loendite vĂ”i nimetatud komplektide alusel:

    nft add rule ip nat pre dnat ip addr . port to ip saddr map { 1.1.1.1 : 2.2.2.2 . 30 }

    nft add map ip nat destinations { type ipv4_addr . inet_service : ipv4_addr . inet_service \\; }
    nft add rule ip nat pre dnat ip addr . port to ip saddr . tcp dport map @destinations

  • Riistvara kiirenduse tugi, mis viib mĂ”ned filtreerimise operatsioonid vĂ”rgu kaardi kanda. Kiirendus aktiveeritakse utiliidiga ethtool ("ethtool -K eth0 hw-tc-offload on"), seejĂ€rel aktiveeritakse nftables jaoks peamises ahelas lipuga "offload". Linuxi tuuma versioonis 5.6 toetatakse riistvara kiirendust pĂ€isevĂ€ljade sobitamiseks ja sissetuleva liidese kontrollimiseks koos pakettide vastuvĂ”tmise, Ă€raviskamise (dup) ja suunamise (fwd) funktsioonidega. JĂ€rgnevas nĂ€ites visatakse pakette, mis tulevad aadressilt 192.168.30.20, vĂ”rgu kaardi tasemel, ilma pakettide tuuma saatmiseta:

    # cat file.nft
    table netdev x {
    chain y {
    type filter hook ingress device eth0 priority 10; flags offload;
    ip saddr 192.168.30.20 drop
    }
    }
    # nft -f file.nft

  • Parandatud vigade teatamise tĂ€psus reeglite puhul.

    # nft delete rule ip y z handle 7
    Viga: Reegli töötlemine ebaÔnnestus: Tegu ei kehti
    delete rule ip y z handle 7
    ^

    # nft delete rule ip x x handle 7
    Viga: Reegli töötlemine ebaÔnnestus: Tegu ei kehti
    delete rule ip x x handle 7
    ^

    # nft delete table twst
    Viga: Tegu ei kehti; kas soovisite table 'test' peres ip?
    delete table twst
    ^^^^

    Esimeses nĂ€ites on nĂ€idatud, et tabel "y" puudub sĂŒsteemist, teises, et puudub töötleja "7", ja kolmandas, et kuvatakse soovitus trĂŒkivea kohta tabeli nime sisestamisel.

  • Lisatud tugi slave-liidese kontrollimiseks, kasutades "meta sdif" vĂ”i "meta sdifname":

    
 meta sdifname vrf1 


  • Lisatud tugi paremale vĂ”i vasakule nihke operatsioonidele. NĂ€iteks, et nihutada olemasolevat paketi mĂ€rki vasakule ĂŒhe biti vĂ”rra ja seada madalam bit vÀÀrtusele 1:

    
 meta mark set meta mark lshift 1 or 0x1 


  • Rakendatud valik "-V" laienenud versiooniteabe kuvamiseks.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli: readline
    json: jah
    minigmp: ei
    libxtables: jah

  • KĂ€skude valikud peavad nĂŒĂŒd olema nĂ€idatud enne kĂ€ske. NĂ€iteks tuleb kirjutada "nft -a list ruleset", samas kui "nft list ruleset -a" kĂ€ivitamine toob kaasa veateate.

    Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster