nftables pakettfiltri 0.9.5 väljalase

avaldatud pakettfiltri vabastamine nftables 0.9.5, mis töötatakse välja iptableside, ip6table, arptablete ja ebtable'ide asendajana, ühendades IPv4, IPv6, ARP ja võrgusildade pakettide filtreerimise liidesed. Pakett nftables sisaldab pakettfiltri komponente, mis töötavad kasutajaruumis, samas kui kerneli tasemel töö tagab alamsüsteem nf_tables, mis on Linuxi kerneli osa olnud alates versioonist 3.13. Nftables 0.9.5 väljalase töötamiseks vajalikud muudatused sisalduvad kernelis Linux 5.7.

Kerneli tase pakub ainult üldist protokollist sõltumatut liidest, mis pakub põhifunktsioone pakettidest andmete eraldamiseks, andmetoimingute tegemiseks ja voo juhtimiseks. Filtreerimisreeglid ja protokollispetsiifilised töötlejad kompileeritakse kasutajaruumis baitkoodiks, misjärel laaditakse see baitkood Netlink liidese abil kernelisse ja käivitatakse kernelis spetsiaalses BPF-i meenutavas virtuaalmasinas (Berkeley Packet Filters). Selline lähenemine võimaldab oluliselt vähendada kerneli tasemel töötava filtreerimiskoodi suurust ning teisaldada kasutajaruumi kõik sõelumisreeglite ja protokollidega töötamise loogika funktsioonid.

Peamised uuendused:

  • Komplektidesse on lisatud komplektielementidega seotud paketi- ja liiklusloendurite tugi. Loendurid on lubatud märksõna "loendur" abil:

    tabeli ip x {
    set y {
    ip tüüp saddr
    võidelda
    elemendid = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    kett z {
    tüüp filter konks väljundi prioriteetfilter; poliitika aktsepteerima;
    ip isa @y
    }
    }

  • Loendurite algväärtuste määramiseks, näiteks eelmiste loendurite taastamiseks pärast taaskäivitamist, saate kasutada käsku “nft -f”:

    # kassireeglid.nft
    tabeli ip x {
    set y {
    ip tüüp saddr
    võidelda
    elemendid = { 192.168.10.35 loenduri paketid 1 baiti 84, 192.168.10.101 \
    loendur p 192.168.10.135 loenduri paketid 0 baiti 0 }
    }

    kett z {
    tüüp filter konks väljundi prioriteetfilter; poliitika aktsepteerima;
    ip isa @y
    }
    }
    # nft -f reeglid.nft
    #nft loendi reeglistik
    tabeli ip x {
    set y {
    ip tüüp saddr
    võidelda
    elemendid = { 192.168.10.35 loenduri paketid 1 baiti 84, 192.168.10.101 \
    loendur p 192.168.10.135 loenduri paketid 0 baiti 0 }
    }

    kett z {
    tüüp filter konks väljundi prioriteetfilter; poliitika aktsepteerima;
    ip isa @y
    }
    }

  • Vootabelile on lisatud ka vastutugi:

    tabel ip foo {
    voolav riba {
    konksu sissepääsu prioriteet -100
    seadmed = { eth0, eth1 }
    võidelda
    }

    kett edasi {
    tüüp filter konks edasi prioriteediga filter;
    voolu lisamine @ baariloendur
    }
    }

    Loendurite loendit saate vaadata käsuga "conntrack -L":

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 paketti=9 baiti=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 paketti=8 baiti=428 [OFFLOAD] mark=0 \
    sectx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    paketid=1005763 baiti=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    paketid = 967505 baiti = 50310268 [OFFLOAD] mark = 0 sectx = null kasutus = 2

  • Konkateneerimise komplektides (konkatenatsioon, teatud aadresside kimbud ja pordid, mis lihtsustavad võrdlemist) on võimalik kasutada "typeof" direktiivi, mis määrab komplekti elementide koostisosade jaoks elementide andmetüübi:

    tabel ip foo {
    määra valge nimekiri {
    ip tüüp saddr . tcp dport
    elemendid = { 192.168.10.35 . 80, 192.168.10.101. 80}
    }

    kettriba {
    tüüp filter konks premarsruutimise prioriteetfilter; poliitika langus;
    ip isa. tcp dport @whitelist nõustu
    }
    }

  • Direktiiv kehtib nüüd ka liitumiste kohta kaardiloendites:

    tabel ip foo {
    kaart addr2mark {
    ip tüüp saddr . tcp dport: metamärk
    elemendid = { 192.168.10.35 . 80 : 0x00000001,
    192.168.10.135. 80 : 0x00000002 }
    }

    kettriba {
    tüüp filter konks premarsruutimise prioriteetfilter; poliitika langus;
    metamärgise komplekt ip daddr . tcp dport map @addr2mark nõustu
    }
    }

  • Anonüümsete (nimetute) komplektide vahemiku liitumise tugi on lisatud:

    # nft lisa reegel inet filter sisend ip daddr . tcp dport\
    { 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8. 80-443 } aktsepteerima

  • Pakutakse võrgusildade töötlemisel 802.1q (VLAN) lippudega pakettide ärajätmise võimalust:

    # nft lisa reegli sild foo bar eetri tüüpi vlan tagasilükkamine tcp lähtestusega

  • Lisatud on TCP seansi identifikaatori (conntrack ID) vastendamise tugi. Conntracki ID määramiseks võite kasutada valikut "--output id".

    # conntrack -L —väljundi ID
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 paketti=2 \
    baiti=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 paketti=2 baiti=320 \
    [KINNITATUD] mark=0 use=1 id=2779986232

    # nft lisa reegli foo bar ct id 2779986232 loendur

Allikas: opennet.ru

Lisa kommentaar