Vydanie balíkového filtra nftables 0.9.2

Sa uskutočnilo vydanie paketového filtra nftables 0.9.2, ktorý sa vyvíja ako náhrada za iptables, ip6tables, arptables a ebtables, pomocou unifikácie filtrovacích rozhraní pre IPv4, IPv6, ARP a sieťové mosty. Paketu nftables sú súčasťou komponenty paketového filtra fungujúce v užívateľskom priestore, zatiaľ čo na úrovni jadra je práca zabezpečená subsystémom nf_tables, ktorý je súčasťou Linuxu od verzie 3.13. Zmeny potrebné na vydanie nftables 0.9.2 sú zahrnuté v jadre Linux 5.3.

Na úrovni jadra je poskytované len všeobecné rozhranie, nezávislé od konkrétneho protokolu a poskytujúce základné funkcie na extrakciu údajov z paketov, vykonávanie operácií s údajmi a riadenie toku. Logika filtrovania a protokolom špecifické procesory sa kompilujú do bajtkódu v priestore používateľa, po ktorom sa tento bajtkód načíta do jadra pomocou rozhrania Netlink a vykonáva sa v špeciálnej virtuálnej mašine, podobnej BPF (Berkeley Packet Filters). Tento prístup umožňuje výrazne znížiť veľkosť kódu filtrovania na úrovni jadra a preniesť všetky funkcie analýzy pravidiel a logiky práce s protokolmi do priestoru používateľa.

Hlavné novinky:

  • Možnosť kontroly čísla portu z hlavičky paketov transportnej vrstvy nezávisle od typu protokolu 4. úrovne:

    add rule x y ip protocol { tcp, udp } th dport 53

  • Podpora obnovy času života množiny prvkov:

    add element ip x y { 1.1.1.1 timeout 30s expires 15s }

  • Možnosť kontroly jednotlivých možností (lsrr, rr, ssrr a ra) z paketov IPv4:

    add rule x y ip option rr exists drop

    Pre možnosti smerovania je možné kontrolovať polia type, ptr, length a addr:

    add rule x y ip option rr type 1 drop

  • V výrazoch je teraz možné uvádzať sieťové prefixy a rozsahy adries:

    iifname ens3 snat to 10.0.0.0/28
    iifname ens3 snat to 10.0.0.1-10.0.0.15

  • Podpora používania premenných v definíciách reťazcov:

    define default_policy = accept
    add chain ip foo bar { type filter hook input priority filter; policy $default_policy }

  • Určenie priority reťazca môže byť teraz vykonávané ako v číselnom, tak aj v symbolickom formáte:

    define prio = filter
    define prionum = 10
    define prioffset = «filter - 150»

    add table ip foo
    add chain ip foo bar { type filter hook input priority $prio; }
    add chain ip foo ber { type filter hook input priority $prionum; }
    add chain ip foo bor { type filter hook input priority $prioffset; }

  • Bola realizovaná podpora modulu synproxy. Napríklad na zabezpečenie TCP portu 8888 pomocou synproxy je možné použiť množinu pravidiel:

    table ip x {
    chain y {
    type filter hook prerouting priority raw; policy accept;
    tcp dport 8888 tcp flags syn notrack
    }

    chain z {
    type filter hook forward priority filter; policy accept;
    tcp dport 8888 ct state invalid,untracked synproxy mss 1460 \
    wscale 7 timestamp sack-perm ct state invalid drop
    }
    }

  • Na definovanie v tabuľke conntrack očakávaných dodatočných pripojení súvisiacich s aktuálnym pripojením, ktoré sa používajú v protokoloch a scénaroch vyžadujúcich vytvorenie viacerých pripojení, je teraz možné definovať politiky prostredníctvom štandardných množín pravidiel. Napríklad na definovanie očakávaných pripojení k TCP portu 8888 nasledujúcich po pripojení k portu 5432 je možné uviesť nasledujúce pravidlá:

    table x {
    ct expectation myexpect {
    protocol tcp
    dport 5432
    timeout 1h
    size 12
    l3proto ip
    }

    chain input {
    type filter hook input priority 0;
    ct state new tcp dport 8888 ct expectation set myexpect
    ct state established,related counter accept
    }
    }

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster