Vydání balíčkového filtru nftables 0.9.3

Byl zveřejněn vydání paketového filtru nftables 0.9.3, vyvíjející se jako náhrada za iptables, ip6table, arptables a ebtables díky unifikaci filtrovacích rozhraní pro IPv4, IPv6, ARP a síťové mosty. V balíčku nftables jsou komponenty filtrování paketů pracující v uživatelském prostoru, zatímco na úrovni jádra práci zajišťuje subsystém nf_tables, který je součástí jádra Linux od verze 3.13. Potřebné změny pro vydání nftables 0.9.3 jsou zahrnuty v budoucí větvi jádra Linux 5.5.

Na úrovni jádra je poskytováno pouze obecné rozhraní, nezávislé na konkrétním protokolu a zajišťující základní funkce získávání dat z paketů, provádění operací s daty a řízení toku. Přímá logika filtrování a specifické pro protokoly zpracovatele jsou kompilovány do bajtkódu v uživatelském prostoru, který je potom nahrán do jádra pomocí rozhraní Netlink a vykonáván ve speciální virtuální stroji, která připomíná BPF (Berkeley Packet Filters). Tento přístup významně snižuje velikost kódu filtrování, který pracuje na úrovni jádra, a přenáší všechny funkce analýzy pravidel a logiku práce s protokoly do uživatelského prostoru.

Hlavní novinky:

  • Podpora časového porovnávání paketů. Lze definovat jak časové a datové rozsahy, ve který bude pravidlo aktivováno, tak i nastavit aktivaci na jednotlivé dny v týdnu. Také byla přidána nová možnost „-T“ pro výstup epochálního času v sekundách.

    meta time "2019-12-24 16:00" — "2020-01-02 7:00"
    meta hour "17:00" — "19:00"
    meta day "Fri"

  • Podpora obnovy a ukládání značek SELinux (secmark).

    ct secmark set meta secmark
    meta secmark set ct secmark

  • Podpora map seznamů synproxy, které umožňují definovat více než jedno pravidlo na backend.

    tabulka ip foo {
    synproxy https-synproxy {
    mss 1460
    wscale 7
    timestamp sack-perm
    }

    synproxy other-synproxy {
    mss 1460
    wscale 5
    }

    chain pre {
    type filter hook prerouting priority raw; policy accept;
    tcp dport 8888 tcp flags syn notrack
    }

    řetězec bar {
    type filter hook forward priority filter; policy accept;
    ct state invalid,untracked synproxy name ip saddr map { 192.168.1.0/24 : "https-synproxy", 192.168.2.0/24 : "other-synproxy" }
    }
    }

  • Možnost dynamického odstraňování prvků set-nastavení z pravidel zpracování paketů.

    nft add rule … delete @set5 { ip6 saddr . ip6 daddr }

  • Podpora VLAN porovnání podle identifikátoru a protokolu určených v metadatech rozhraní síťového mostu;

    meta ibrpvid 100
    meta ibrvproto vlan

  • Možnost „-t“ („—terse“) pro vyloučení prvků souborů set při zobrazování pravidel. Při provedení „nft -t list ruleset“ se zobrazí:

    tabulka ip x {
    set y {
    type ipv4_addr
    }
    }

    A při „nft list ruleset“

    tabulka ip x {
    set y {
    type ipv4_addr
    elements = { 192.168.10.2, 192.168.20.1,
    192.168.4.4, 192.168.2.34 }
    }
    }

  • Možnost uvést více než jedno zařízení v řetězcích netdev (funguje pouze s jádrem 5.5) pro kombinaci standardních pravidel filtrování.

    add table netdev x
    add chain netdev x y { \
    type filter hook ingress devices = { eth0, eth1 } priority 0;
    }

  • Možnost přidání popisů typů dat.

    # nft describe ipv4_addr
    datatype ipv4_addr (IPv4 adresa) (basetype integer), 32 bits

  • Možnost sestavení CLI rozhraní s knihovnou linenoise místo libreadline.

    .\/configure —with-cli=linenoise

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster