Нусхаи филтри бастаи nftables 0.9.5

нашр шудааст озод кардани филтри баста nftables 0.9.5, ҳамчун ҷойгузини iptables, ip6table, arptables ва ebtables тавассути муттаҳид кардани интерфейсҳои филтркунии бастаҳо барои IPv4, IPv6, ARP ва пулҳои шабакавӣ таҳия карда мешавад. Бастаи nftables ҷузъҳои филтри бастаҳоро дар бар мегирад, ки дар фазои корбар кор мекунанд, дар ҳоле ки кори сатҳи ядро ​​аз ҷониби зерсистемаи nf_tables таъмин карда мешавад, ки аз замони нашри 3.13 қисми ядрои Linux мебошад. Тағиротҳое, ки барои версияи nftables 0.9.5 барои кор заруранд, ба ядро ​​дохил карда шудаанд Linux 5.7.

Сатҳи ядро ​​​​танҳо интерфейси мустақили протоколро таъмин мекунад, ки вазифаҳои асосиро барои истихроҷи додаҳо аз пакетҳо, иҷрои амалиёти додаҳо ва назорати ҷараён таъмин мекунад. Қоидаҳои филтркунӣ ва коркардкунандагони мушаххаси протокол дар фазои корбар ба байткод тартиб дода мешаванд, ки пас аз он ин байткод бо истифода аз интерфейси Netlink ба ядро ​​бор карда мешавад ва дар ядро ​​​​дар мошини махсуси виртуалӣ, ки BPF (Беркли Пакет Филтрҳо) ба хотир меорад, иҷро карда мешавад. Ин равиш ба шумо имкон медиҳад, ки андозаи коди филтркуниро, ки дар сатҳи ядро ​​кор мекунад, хеле кам кунед ва тамоми функсияҳои қоидаҳои таҳлил ва мантиқи кор бо протоколҳоро ба фазои корбар интиқол диҳед.

Навовариҳои асосӣ:

  • Дастгирии ҳисобкунакҳои маҷмӯӣ ва трафики бо унсурҳои маҷмӯи алоқаманд ба маҷмӯаҳо илова карда шудааст. Ҳисобкунакҳо бо истифода аз калимаи калидии "counter" фаъол карда мешаванд:

    ҷадвали ip x {
    муқаррар y {
    typeof ip saddr
    шунидан
    унсурҳо = {192.168.10.35, 192.168.10.101, 192.168.10.135}
    }

    занҷир z {
    навъи филтр қалмоқе филтри афзалиятнок баромад; қабули сиёсат;
    ip daddr @y
    }
    }

  • Барои муқаррар кардани арзишҳои ибтидоии ҳисобкунакҳо, масалан, барои барқарор кардани ҳисобкунакҳои қаблӣ пас аз бозоғозӣ, шумо метавонед фармони "nft -f" -ро истифода баред:

    # cat ruleset.nft
    ҷадвали ip x {
    муқаррар y {
    typeof ip saddr
    шунидан
    унсурҳо = {192.168.10.35 бастаҳои муқобил 1 байт 84, 192.168.10.101 \
    counter p 192.168.10.135 пакетҳои ҳисобкунанда 0 байт 0 }
    }

    занҷир z {
    навъи филтр қалмоқе филтри афзалиятнок баромад; қабули сиёсат;
    ip daddr @y
    }
    }
    # nft -f ruleset.nft
    #nft маҷмӯи қоидаҳои рӯйхат
    ҷадвали ip x {
    муқаррар y {
    typeof ip saddr
    шунидан
    унсурҳо = {192.168.10.35 бастаҳои муқобил 1 байт 84, 192.168.10.101 \
    counter p 192.168.10.135 пакетҳои ҳисобкунанда 0 байт 0 }
    }

    занҷир z {
    навъи филтр қалмоқе филтри афзалиятнок баромад; қабули сиёсат;
    ip daddr @y
    }
    }

  • Дастгирии муқобил инчунин ба ҷадвали flowable илова карда шудааст:

    table ip foo {
    сатри ҷадвали ҷараён {
    Афзалияти воридшавии қалмоқ -100
    дастгоҳҳо = {eth0, eth1}
    шунидан
    }

    занҷир ба пеш {
    навъи филтр қалмоқ филтри афзалиятнок;
    ҷараёнро илова кунед @bar counter
    }
    }

    Посмотреть список счётчиков можно командной «conntrack -L»:

    tcp 6 src = 192.168.10.2 dst = 10.0.1.2 варзиш = 47278 dport = 5201 пакет = 9 байт = 608 \
    src = 10.0.1.2 dst = 10.0.1.1 варзиш = 5201 dport = 47278 бастаҳо = 8 байт = 428 [OFFLOAD] тамға = 0 \
    secctx = истифодаи нул = 2 TCP 6 src = 192.168.10.2 dst = 10.0.1.2 варзиш = 47280 dport = 5201 \
    бастаҳо = 1005763 байт = 44075714753 src = 10.0.1.2 dst = 10.0.1.1 варзиш = 5201 dport = 47280 \
    бастаҳо = 967505 байт = 50310268 [OFFLOAD] аломат = 0 secctx = истифодаи бенуксон = 2

  • Дар маҷмӯаҳои пайвастшавӣ (пайванд, бастаҳои муайяни суроғаҳо ва портҳое, ки муқоисаро содда мекунанд) мумкин аст дастури “typeof”-ро истифода бурд, ки намуди додаҳои элементҳоро барои қисмҳои таркибии элементҳои маҷмӯи муайян мекунад:

    table ip foo {
    муқаррар кардани рӯйхати сафед {
    typeof ip saddr. tcp dport
    унсурҳои = {192.168.10.35. 80, 192.168.10.101. 80}
    }

    бари занҷир {
    навъи филтр қалмоқе пеш аз масир филтри афзалиятнок; паст кардани сиёсат;
    ип падар. tcp dport @whitellist қабул кунед
    }
    }

  • Директиваи typeof ҳоло ба ҳамроҳшавӣ дар рӯйхатҳои харитаҳо низ дахл дорад:

    table ip foo {
    харитаи addr2mark {
    typeof ip saddr. tcp dport: аломати мета
    унсурҳои = {192.168.10.35. 80 : 0x00000001,
    192.168.10.135. 80 : 0x00000002 }
    }

    бари занҷир {
    навъи филтр қалмоқе пеш аз масир филтри афзалиятнок; паст кардани сиёсат;
    Мета тамға маҷмӯи IP daddr. харитаи tcp dport @addr2mark қабул
    }
    }

  • Дастгирии иловашуда барои пайвастани диапазон дар маҷмӯаҳои беном (номнашуда):

    # nft илова кардани қоида inet филтри вуруди ip daddr. tcp dport\
    {10.0.0.0/8. 10-23, 192.168.1.1-192.168.3.8. 80-443 } кабул кунед

  • Имконияти партофтани пакетҳо бо парчамҳои 802.1q (VLAN) ҳангоми коркарди пулҳои шабакавӣ таъмин карда шудааст:

    # nft илова пули қоида foo bar ether навъи vlan рад бо аз нав танзимкунии tcp

  • Дастгирии иловашуда барои мувофиқат тавассути идентификатори сессияи TCP (ID conntrack). Барои муайян кардани ID-и conntrack, шумо метавонед имконоти "--output id" -ро истифода баред:

    # conntrack -L — ID-и баромад
    udp 17 18 src = 192.168.2.118 dst = 192.168.2.1 варзиш = 36424 dport = 53 бастаҳо = 2 \
    байт = 122 src = 192.168.2.1 dst = 192.168.2.118 варзиш = 53 dport = 36424 пакет = 2 байт = 320 \
    [БОВАР] тамға = 0 истифода = 1 ID = 2779986232

    # nft илова кардани қоида foo bar ct id 2779986232 counter

Манбаъ: opennet.ru

Илова Эзоҳ