nftables pakiti chujio 0.9.1 kutolewa

Baada ya mwaka wa maendeleo imewasilishwa kutolewa kwa chujio cha pakiti nfttables 0.9.1, inatengenezwa kama mbadala wa iptables, ip6table, arptables na ebtables kwa kuunganisha violesura vya kuchuja pakiti kwa IPv4, IPv6, ARP na madaraja ya mtandao. Kifurushi cha nftables kinajumuisha vipengee vya kichujio cha pakiti ambacho hutumika katika nafasi ya mtumiaji, wakati kazi ya kiwango cha kernel inatolewa na mfumo mdogo wa nf_tables, ambao umekuwa sehemu ya kernel ya Linux tangu kutolewa kwa 3.13.

Kiwango cha kernel hutoa kiolesura cha kawaida kinachojitegemea itifaki ambacho hutoa kazi za kimsingi za kutoa data kutoka kwa pakiti, kutekeleza shughuli za data na udhibiti wa mtiririko.
Mantiki ya kuchuja yenyewe na vidhibiti mahususi vya itifaki hukusanywa kuwa bytecode katika nafasi ya mtumiaji, baada ya hapo bytecode hii hupakiwa kwenye kernel kwa kutumia kiolesura cha Netlink na kutekelezwa katika mashine maalum inayowakumbusha BPF (Berkeley Packet Filters). Njia hii hukuruhusu kupunguza kwa kiasi kikubwa saizi ya msimbo wa kuchuja unaoendesha kwenye kiwango cha kernel na kusonga kazi zote za kanuni na mantiki ya kufanya kazi na itifaki kwenye nafasi ya mtumiaji.

Ubunifu kuu:

  • Usaidizi wa IPsec, unaoruhusu ulinganishaji wa anwani za handaki kulingana na pakiti, Kitambulisho cha ombi la IPsec, na lebo ya SPI (Kielelezo cha Vigezo vya Usalama). Kwa mfano,

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

    Inawezekana pia kuangalia ikiwa njia inapita kwenye handaki ya IPsec. Kwa mfano, kuzuia trafiki si kupitia IPSec:

    … pato la kichujio rt ipsec inakosa kushuka

  • Msaada kwa IGMP (Itifaki ya Usimamizi wa Kikundi cha Mtandao). Kwa mfano, unaweza kutumia sheria kutupa maombi yanayoingia ya uanachama wa kikundi cha IGMP

    nft add rule netdev foo bar igmp aina ya uanachama-hoja kushuka

  • Uwezekano wa kutumia vigezo kufafanua minyororo ya mpito (kuruka / goto). Kwa mfano:

    fafanua mwisho = ber
    ongeza sheria ip foo bar jump $dest

  • Usaidizi wa masks kutambua mifumo ya uendeshaji (OS Fingerprint) kulingana na maadili ya TTL kwenye kichwa. Kwa mfano, kuashiria pakiti kulingana na OS ya mtumaji, unaweza kutumia amri:

    ... meta mark set osf ttl ruka ramani ya jina {"Linux" : 0x1,
    "Windows": 0x2,
    "MacOS": 0x3,
    "haijulikani": 0x0}
    ... osf ttl ruka toleo la "Linux:4.20"

  • Uwezo wa kulinganisha anwani ya ARP ya mtumaji na anwani ya IPv4 ya mfumo lengwa. Kwa mfano, ili kuongeza kihesabu cha pakiti za ARP zilizotumwa kutoka kwa anwani 192.168.2.1, unaweza kutumia sheria:

    meza arp x {
    mnyororo y {
    kichujio cha kichujio cha pembejeo cha kipaumbele cha pembejeo ya ndoano; kukubali sera;
    arp saddr ip 192.168.2.1 pakiti za kaunta 1 byte 46
    }
    }

  • Usaidizi wa usambazaji wa maombi kwa uwazi kupitia proksi (tproxy). Kwa mfano, kuelekeza simu upya kwa lango 80 hadi lango mbadala 8080:

    meza ip x {
    mnyororo y {
    aina chujio ndoano prerouting kipaumbele -150; kukubali sera;
    tcp dport 80 tproksi hadi :8080
    }
    }

  • Usaidizi wa kuashiria soketi zenye uwezo wa kupata zaidi alama iliyowekwa kupitia setsockopt() katika hali ya SO_MARK. Kwa mfano:

    inet ya meza x {
    mnyororo y {
    aina chujio ndoano prerouting kipaumbele -150; kukubali sera;
    tcp dport 8080 alama ya kuweka alama ya tundu
    }
    }

  • Usaidizi wa kubainisha majina ya maandishi ya kipaumbele kwa minyororo. Kwa mfano:

    nft ongeza mnyororo ip x ghafi {kichujio cha aina ya ndoano inayotanguliza kipaumbele kibichi; }
    nft ongeza mnyororo ip x chujio {kichujio cha aina ya ndoano ya kutayarisha kichujio cha kipaumbele; }
    nft ongeza mnyororo ip x chujio_baadaye {kichujio cha aina ya ndoano ya kutanguliza kichujio cha kipaumbele + 10; }

  • Msaada kwa vitambulisho vya SELinux (Secmark). Kwa mfano, kufafanua tepe ya "sshtag" katika muktadha wa SELinux, unaweza kukimbia:

    nft ongeza kichujio cha inet cha alama sshtag "system_u:object_r:ssh_server_packet_t:s0"

    Na kisha tumia lebo hii katika sheria:

    nft ongeza ingizo la kichungi cha kichungi cha sheria tcp dport 22 meta sekmark seti "sshtag"

    nft ongeza kichujio cha kichujio cha ramani { type inet_service : secmark; }
    nft ongeza kichungi cha kichungi cha kipengee {22 : "sshtag" }
    nft ongeza kichujio cha kichujio cha sheria meta sekmark weka tcp dport map @secmapping

  • Uwezo wa kutaja bandari zilizopewa itifaki katika fomu ya maandishi, kama zinavyofafanuliwa kwenye faili ya /etc/services. Kwa mfano:

    nft ongeza sheria xy tcp dport "ssh"
    nft orodha kanuni -l
    meza x {
    mnyororo y {
    ...
    tcp dport "ssh"
    }
    }

  • Uwezo wa kuangalia aina ya interface ya mtandao. Kwa mfano:

    ongeza rule inet ghafi prerouting meta iifkind "vrf" kubali

  • Usaidizi ulioboreshwa wa kusasisha maudhui ya seti kwa uthabiti kwa kubainisha kwa uwazi alama ya "nguvu". Kwa mfano, kusasisha "s" ili kuongeza anwani ya chanzo na kuweka upya ingizo ikiwa hakuna pakiti kwa sekunde 30:

    ongeza jedwali x
    ongeza seti ya xs {aina ipv4_addr; ukubwa 128; kuisha 30s; bendera zenye nguvu; }
    ongeza mnyororo xy {aina ya pembejeo ya ndoano ya chujio kipaumbele 0; }
    ongeza kanuni xy sasisho @s { ip saddr }

  • Uwezo wa kuweka hali tofauti ya kuisha. Kwa mfano, ili kubatilisha muda chaguo-msingi wa kuisha kwa pakiti zinazowasili kwenye bandari 8888, unaweza kubainisha:

    kichujio cha ip cha meza {
    ct timeout aggressive-tcp {
    itifaki tcp;
    l3proto ip;
    sera = {imeanzishwa: 100, funga_subiri: 4, funga: 4}
    }
    pato la mnyororo {
    ...
    tcp dport 8888 ct timeout set "aggressive-tcp"
    }
    }

  • Msaada wa NAT kwa familia ya inet:

    meza inet nat {
    ...
    ip6 daddr dead::2::1 dnat to dead:2::99
    }

  • Ripoti ya hitilafu ya uchapaji iliyoboreshwa:

    nft ongeza mtihani wa kichungi cha mnyororo

    Hitilafu: Hakuna faili au saraka kama hiyo; ulimaanisha jedwali "chujio" katika ip ya familia?
    ongeza mtihani wa chujio cha mnyororo
    ^^^^^^

  • Uwezo wa kutaja majina ya kiolesura katika seti:

    weka sc {
    chapa inet_service . jina la jina
    vipengele = {"ssh" . "eth0"}
    }

  • Sintaksia ya sheria zinazoweza kutiririka iliyosasishwa:

    nft ongeza jedwali x
    nft kuongeza flowtable x ft { ndoano ingress kipaumbele 0; vifaa = { eth0, wlan0 }; }
    ...
    nft ongeza sheria x itifaki ya mbele ya ip { tcp, udp } mtiririko ongeza @ft

  • Usaidizi wa JSON ulioboreshwa.

Chanzo: opennet.ru

Kuongeza maoni