Nftables pakettifiltri versioon 0.9.5

Avaldatud paketifiltri vĂ€ljalaskmine nftables 0.9.5, mis areneb iptables, ip6table, arptables ja ebtables asendajana, ĂŒhtlustades pakettide filtreerimise liideseid IPv4, IPv6, ARP ja vĂ”rgu sildade jaoks. Nftables pakett sisaldab kasutusruumi komponentide paketifiltreid, samas kui tuumatasemel tagab töö nf_tables alamsĂŒsteem, mis on Linuxi tuumas alates versioonist 3.13. Nftables 0.9.5 vĂ€ljaande tööks vajalikud muudatused on lisatud tuumasse Linux 5.7.

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:

  • Kogumitele lisati pakettide ja liikluse loendurite tugi, mis on seotud kogumi elementidega. Loendurid aktiveeritakse mĂ€rksĂ”na "counter" abil:

    table ip x {
    set y {
    typeof ip saddr
    counter
    elements = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    chain z {
    type filter hook output priority filter; policy accept;
    ip daddr @y
    }
    }

  • Loendurite algvÀÀrtuste seadmiseks, nĂ€iteks varasemate loendurite taastamiseks pĂ€rast taaskĂ€ivitamist, saab kogumit kasutada kĂ€suga „nft -f”:

    # cat ruleset.nft
    table ip x {
    set y {
    typeof ip saddr
    counter
    elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
    counter p 192.168.10.135 counter packets 0 bytes 0 }
    }

    chain z {
    type filter hook output priority filter; policy accept;
    ip daddr @y
    }
    }
    # nft -f ruleset.nft
    # nft list ruleset
    table ip x {
    set y {
    typeof ip saddr
    counter
    elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
    counter p 192.168.10.135 counter packets 0 bytes 0 }
    }

    chain z {
    type filter hook output priority filter; policy accept;
    ip daddr @y
    }
    }

  • Loendurite tugi on lisatud ka voolutabelisse:

    table ip foo {
    flowtable bar {
    hook ingress priority -100
    devices = { eth0, eth1 }
    counter
    }

    chain forward {
    type filter hook forward priority filter;
    flow add @bar counter
    }
    }

    Loendurite nimekirja saab nĂ€ha kĂ€suga „conntrack -L”:

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packets=9 bytes=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 packets=8 bytes=428 [OFFLOAD] mark=0 \
    secctx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    packets=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    packets=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null use=2

  • Kogumis, mis kĂ€sitleb liitmisi (concatenation, mÀÀratud aadresside ja portide sidumised, mis lihtsustavad vastavust), on vĂ”imalus kasutada direktiivi „typeof”, mis mÀÀratleb elementide andmetĂŒĂŒbi koosseisudes:

    table ip foo {
    set whitelist {
    typeof ip saddr . tcp dport
    elements = { 192.168.10.35 . 80, 192.168.10.101 . 80 }
    }

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

  • Direktiiv typeof on nĂŒĂŒd rakendatav ka liitmistele map-loendites:

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

    chain bar {
    type filter hook prerouting priority filter; policy drop;
    meta mark set ip daddr . tcp dport map @addr2mark accept
    }
    }

  • Lisatud on tugi vahemike liitumistele anonĂŒĂŒmsetes (nimetuteks) kogudes:

    # nft add rule inet filter input ip daddr . tcp dport \
    { 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8 . 80-443 } accept

  • Pakettide maha viskamise vĂ”imalus, kui 802.1q (VLAN) lipud on vĂ”rgusildade töötlemise ajal:

    # nft add rule bridge foo bar ether type vlan reject with tcp reset

  • Lisatud on tugi TCP seansi identifikaatori (conntrack ID) ĂŒhendusele. Conntrack ID mÀÀramiseks saab kasutada valikut „—output id”:

    # conntrack -L —output id
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 packets=2 \
    bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
    [ASSURED] mark=0 use=1 id=2779986232

    # nft add rule foo bar ct id 2779986232 counter

Allikas: opennet.ru

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