Veröffentlichung des Paketfilters nftables 0.9.3

Veröffentlicht Erscheinung des Paketfilters nftables 0.9.3, das sich als Ersatz fĂŒr iptables, ip6tables, arptables und ebtables entwickelt, indem es die Schnittstellen zur Paketfilterung fĂŒr IPv4, IPv6, ARP und NetzwerkbrĂŒcken vereinheitlicht. Das nftables-Paket enthĂ€lt Komponenten des Paketfilters, die im Benutzerspeicher arbeiten, wĂ€hrend auf Kernel-Ebene die nf_tables-UnterstĂŒtzung bereitgestellt wird, die mit der Linux-Kernel-Version 3.13 eingefĂŒhrt wurde. Die fĂŒr die Funktion von nftables 0.9.3 erforderlichen Änderungen sind im zukĂŒnftigen Branch des Linux-Kernels 5.5 enthalten.

Im Kernel wird lediglich eine allgemeine Schnittstelle bereitgestellt, die unabhĂ€ngig vom spezifischen Protokoll ist und grundlegende Funktionen zum Extrahieren von Daten aus Paketen, zur DurchfĂŒhrung von Datenoperationen und zur Steuerung des Flusses bereitstellt. Die Logik der Filterung und die spezifischen Protokoll-Handler werden in Bytecode im Benutzerspeicher kompiliert, der dann ĂŒber die Netlink-Schnittstelle in den Kernel geladen und in einer speziellen virtuellen Maschine ausgefĂŒhrt wird, die an BPF (Berkeley Packet Filters) erinnert. Dieser Ansatz ermöglicht es, die GrĂ¶ĂŸe des im Kernel arbeitenden Filtercodes erheblich zu reduzieren und alle Funktionen zur Regelparser und zur Logik der Protokollverarbeitung in den Benutzerspeicher auszulagern.

Hauptneuheiten:

  • UnterstĂŒtzung der zeitlichen PaketĂŒbereinstimmung. Es kann sowohl ZeitrĂ€ume und Daten definiert werden, in denen die Regel wirksam wird, als auch die Aktivierung an bestimmten Wochentagen eingestellt werden. Außerdem wurde eine neue Option „-T“ zur Ausgabe der epochalen Zeit in Sekunden hinzugefĂŒgt.

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

  • UnterstĂŒtzung fĂŒr das Setzen und Speichern von SELinux-Markierungen (secmark).

    ct secmark set meta secmark
    meta secmark set ct secmark

  • UnterstĂŒtzung fĂŒr die synproxy-Mappings, die es ermöglichen, mehr als eine Regel auf einen Backend zu definieren.

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

    Kette 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» }
    }
    }

  • Möglichkeit zur dynamischen Löschung von Elementen aus Set-Sets in den Paketverarbeitungsregeln.

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

  • UnterstĂŒtzung fĂŒr die Übereinstimmung von VLAN nach Identifikator und Protokoll, die in den Metadaten der NetzwerkbrĂŒcke definiert sind;

    meta ibrpvid 100
    meta ibrvproto vlan

  • Die Option „-t“ („—terse“) zur Ausschluss von Elementen aus Satzregeln bei der Anzeige von Regeln. Bei der AusfĂŒhrung von „nft -t list ruleset“ wird ausgegeben:

    table ip x {
    set y {
    type ipv4_addr
    }
    }

    Und bei „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 }
    }
    }

  • Die Möglichkeit, mehr als ein GerĂ€t in netdev-Ketten anzugeben (funktioniert nur mit Kernel 5.5) zur ZusammenfĂŒhrung typischer Filterregeln.

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

  • Die Möglichkeit, Beschreibungen von Datentypen hinzuzufĂŒgen.

    # nft describe ipv4_addr
    datatype ipv4_addr (IPv4-Adresse) (Basistyp Integer), 32 Bits

  • Die Möglichkeit, eine CLI-Schnittstelle mit der Bibliothek linenoise anstelle von libreadline zu erstellen.

    .\/configure —with-cli=linenoise

Quelle: opennet.ru

60GB SSD 8Gb DDR4