Hidlydd pecyn nftables 0.9.1 rhyddhau

Ar ôl blwyddyn o ddatblygiad wedi'i gyflwyno rhyddhau hidlydd pecyn nftables 0.9.1, gan ddatblygu yn lle iptables, ip6table, arpttables a ebtables trwy uno rhyngwynebau hidlo pecynnau ar gyfer IPv4, IPv6, ARP a phontydd rhwydwaith. Mae'r pecyn nftables yn cynnwys cydrannau hidlo pecyn sy'n rhedeg yng ngofod y defnyddiwr, tra bod y gwaith lefel cnewyllyn yn cael ei ddarparu gan yr is-system nf_tables, sydd wedi bod yn rhan o'r cnewyllyn Linux ers rhyddhau 3.13.

Mae lefel y cnewyllyn yn darparu rhyngwyneb protocol-annibynnol generig yn unig sy'n darparu swyddogaethau sylfaenol ar gyfer tynnu data o becynnau, perfformio gweithrediadau data, a rheoli llif.
Mae'r rhesymeg hidlo ei hun a thrinwyr protocol-benodol yn cael eu crynhoi i beitcode yn y gofod defnyddiwr, ac ar ôl hynny mae'r beitcode hwn yn cael ei lwytho i'r cnewyllyn gan ddefnyddio'r rhyngwyneb Netlink a'i weithredu mewn peiriant rhithwir arbennig sy'n atgoffa rhywun o BPF (Berkeley Packet Filters). Mae'r dull hwn yn caniatáu ichi leihau'n sylweddol faint y cod hidlo sy'n rhedeg ar lefel y cnewyllyn a symud holl swyddogaethau rheolau dosrannu a rhesymeg ar gyfer gweithio gyda phrotocolau i ofod defnyddwyr.

Prif arloesiadau:

  • Cefnogaeth IPsec, gan ganiatáu paru cyfeiriadau twnnel yn seiliedig ar becyn, ID cais IPsec, a thag SPI (Mynegai Paramedr Diogelwch). Er enghraifft,

    ... ipsec yn ip saddr 192.168.1.0/24
    ... ipsec yn spi 1-65536

    Mae hefyd yn bosibl gwirio a yw llwybr yn mynd trwy dwnnel IPsec. Er enghraifft, i rwystro traffig nad yw trwy IPSec:

    … hidlydd allbwn rt ipsec gollyngiad ar goll

  • Cefnogaeth i IGMP (Protocol Rheoli Grŵp Rhyngrwyd). Er enghraifft, gallwch ddefnyddio rheol i ddileu ceisiadau aelodaeth grŵp IGMP sy'n dod i mewn

    nft ychwanegu rheol netdev foo bar math igmp aelodaeth-ymholiad cownter galw heibio

  • Posibilrwydd defnyddio newidynnau i ddiffinio cadwyni trosiannol (neidio / goto). Er enghraifft:

    diffinio dest = ber
    ychwanegu rheol ip foo bar jump $dest

  • Cefnogaeth i fasgiau i adnabod systemau gweithredu (Olion Bysedd OS) yn seiliedig ar werthoedd TTL yn y pennawd. Er enghraifft, i farcio pecynnau yn seiliedig ar yr anfonwr OS, gallwch ddefnyddio'r gorchymyn:

    ... meta marc set osf ttl skip enw map { "Linux" : 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "anhysbys" : 0x0 }
    ... osf ttl skip version "Linux: 4.20"

  • Y gallu i gyd-fynd â chyfeiriad ARP yr anfonwr a chyfeiriad IPv4 y system darged. Er enghraifft, i gynyddu rhifydd y pecynnau ARP a anfonwyd o'r cyfeiriad 192.168.2.1, gallwch ddefnyddio'r rheol ganlynol:

    bwrdd arp x {
    cadwyn y {
    math bachyn hidlydd mewnbwn hidlydd blaenoriaeth; derbyn polisi;
    arp saddr ip 192.168.2.1 pecynnau cownter 1 beit 46
    }
    }

  • Cefnogaeth i anfon ceisiadau ymlaen yn dryloyw trwy ddirprwy (tproxy). Er enghraifft, i ailgyfeirio galwadau i borth 80 i borthladd dirprwy 8080:

    tabl ip x {
    cadwyn y {
    bachyn hidlydd math prerouting blaenoriaeth -150; derbyn polisi;
    tcp dport 80 tproxy i:8080
    }
    }

  • Cefnogaeth ar gyfer marcio socedi gyda'r gallu i gael y marc gosod ymhellach trwy setsockopt () yn y modd SO_MARK. Er enghraifft:

    tabl inet x {
    cadwyn y {
    bachyn hidlydd math prerouting blaenoriaeth -150; derbyn polisi;
    tcp dport 8080 marc gosod marc soced
    }
    }

  • Cefnogaeth ar gyfer pennu enwau testun â blaenoriaeth ar gyfer cadwyni. Er enghraifft:

    nft ychwanegu cadwyn ip x amrwd { bachyn hidlydd math rhag-lwybro blaenoriaeth amrwd; }
    nft ychwanegu cadwyn ip x hidlydd { bachyn hidlydd yn rhag-gyfeirio'r hidlydd blaenoriaeth; }
    nft ychwanegu cadwyn ip x filter_later { math bachyn hidlydd rhag-gyfeirio'r hidlydd blaenoriaeth + 10; }

  • Cefnogaeth i dagiau SELinux (Secmark). Er enghraifft, i ddiffinio'r tag "sshtag" mewn cyd-destun SELinux, gallwch redeg:

    nft ychwanegu hidlydd inet secmark sshtag "system_u:object_r: ssh_server_packet_t:s0"

    Ac yna defnyddiwch y label hwn yn y rheolau:

    nft ychwanegu rheol mewnbwn hidlydd inet tcp dport 22 meta secmark set “sshtag”

    nft ychwanegu secmapping hidlydd inet map { type inet_service : secmark; }
    nft ychwanegu elfen hidlo inet secmapping { 22 : "sshtag" }
    nft ychwanegu rheol inet hidlydd mewnbwn meta secmark set tcp dport map @secmapping

  • Y gallu i nodi porthladdoedd sydd wedi'u neilltuo i brotocolau ar ffurf testun, fel y'u diffinnir yn y ffeil /etc/services. Er enghraifft:

    nft ychwanegu rheol xy tcp dport "ssh"
    nft list ruleset -l
    bwrdd x {
    cadwyn y {
    ...
    tcp dport "ssh"
    }
    }

  • Y gallu i wirio'r math o ryngwyneb rhwydwaith. Er enghraifft:

    ychwanegu rheol inet raw prerouting meta iifkind "vrf" derbyn

  • Gwell cefnogaeth ar gyfer diweddaru cynnwys setiau yn ddeinamig trwy nodi'n benodol y faner “ddeinamig”. Er enghraifft, i ddiweddaru set "s" i ychwanegu'r cyfeiriad ffynhonnell ac ailosod y cofnod os nad oes pecynnau am 30 eiliad:

    ychwanegu tabl x
    ychwanegu set xs { math ipv4_addr; maint 128; terfyn amser 30s; baneri deinamig; }
    ychwanegu cadwyn xy { blaenoriaeth mewnbwn bachyn hidlydd math 0; }
    ychwanegu rheol xy update @s { ip saddr }

  • Posibilrwydd gosod amod terfyn amser ar wahân. Er enghraifft, i ddiystyru'r terfyn amser rhagosodedig ar gyfer pecynnau sy'n cyrraedd porthladd 8888, gallwch nodi:

    hidlydd ip bwrdd {
    goramser ct ymosodol-tcp {
    protocol tcp;
    l3proto ip;
    polisi = {sefydlwyd: 100, close_wait: 4, cau: 4}
    }
    allbwn cadwyn {
    ...
    terfyn amser tcp dport 8888 ct gosod "ymosodol-tcp"
    }
    }

  • Cefnogaeth NAT i deulu anadweithiol:

    tabl inet nat {
    ...
    ip6 daddr marw::2::1 dnat i farw:2::99
    }

  • Gwell adroddiadau gwallau teipio:

    nft ychwanegu prawf hidlo cadwyn

    Gwall: Dim ffeil neu gyfeiriadur o'r fath; oeddech chi'n ei olygu tabl “hidlo” yn ip teulu?
    ychwanegu prawf hidlo cadwyn
    ^^^^^^

  • Y gallu i nodi enwau rhyngwyneb mewn setiau:

    gosod sc {
    teipiwch inet_service . ifenw
    elfennau = { "ssh". "eth0" }
    }

  • Cystrawen rheolau lliffwrdd wedi'i diweddaru:

    nft ychwanegu tabl x
    nft ychwanegu flowtable x ft { bachyn mynediad blaenoriaeth 0; dyfeisiau = { eth0, wlan0 }; }
    ...
    nft ychwanegu rheol x protocol ip ymlaen { tcp, udp } llif ychwanegu @ft

  • Gwell cefnogaeth JSON.

Ffynhonnell: opennet.ru

Ychwanegu sylw