Wydanie filtrów pakietowych nftables 0.9.3

Opublikowano wydanie filtra pakietów nftables 0.9.3, rozwijającego się jako zamiennik iptables, ip6tables, arptables i ebtables poprzez unifikację interfejsów filtrowania pakietów dla IPv4, IPv6, ARP i mostów sieciowych. W pakiecie nftables znajdują się komponenty filtrowania pakietów działające w przestrzeni użytkownika, podczas gdy na poziomie jądra pracuje subsystem nf_tables, który jest częścią jądra Linux od wydania 3.13. Niezbędne dla działania wydania nftables 0.9.3 zmiany są zawarte w przyszłej gałęzi jądra Linux 5.5.

Na poziomie jądra udostępniany jest jedynie ogólny interfejs, niezależny od konkretnego protokołu, który zapewnia podstawowe funkcje wyodrębniania danych z pakietów, wykonywania operacji na danych i zarządzania ruchem. Logika filtrowania oraz specyficzne dla protokołów przetwarzacze są kompilowane do bajtkodu w przestrzeni użytkownika, a następnie ten bajtkod jest ładowany do jądra za pomocą interfejsu Netlink i wykonywany w specjalnej maszynie wirtualnej, przypominającej BPF (Berkeley Packet Filters). Tego rodzaju podejście pozwala znacznie zmniejszyć rozmiar kodu filtrowania działającego na poziomie jądra oraz przenieść wszystkie funkcje analizy reguł i logiki obsługi protokołów do przestrzeni użytkownika.

Główne nowości:

  • Wsparcie dla dopasowywania pakietów według czasu. Można zdefiniować zarówno zakresy czasowe i daty, w których reguła będzie działać, jak i skonfigurować działanie w poszczególnych dniach tygodnia. Dodano również nową opcję „-T” do wyświetlania czasu epokowego w sekundach.

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

  • Wsparcie dla przywracania i zapisywania znaczników SELinux (secmark).

    ct secmark set meta secmark
    meta secmark set ct secmark

  • Wsparcie dla list map-ów synproxy, pozwalających na określenie więcej niż jednej reguły dla backendu.

    tabela 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
    }

    łańcuch 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żliwość dynamicznego usuwania elementów zestawów set z reguł przetwarzania pakietów.

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

  • Wsparcie dla dopasowywania VLAN według identyfikatora i protokołu, określonych w metadanych interfejsu mostu sieciowego;

    meta ibrpvid 100
    meta ibrvproto vlan

  • Opcja „-t” („—terse”) do wykluczania elementów zestawów set przy wyświetlaniu reguł. Przy wykonaniu „nft -t list ruleset” zostanie wyświetlone:

    table ip x {
    set y {
    type ipv4_addr
    }
    }

    A przy „nft list ruleset”

    table 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żliwość wskazania więcej niż jednego urządzenia w łańcuchach netdev (działa tylko z jądrem 5.5) w celu łączenia typowych reguł filtrowania.

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

  • Możliwość dodawania opisów typów danych.

    # nft describe ipv4_addr
    datatype ipv4_addr (adres IPv4) (typ podstawowy integer), 32 bity

  • Możliwość budowy interfejsu CLI z biblioteką linenoise zamiast libreadline.

    ./configure —with-cli=linenoise

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster