nftables-Paketfilter 1.0.6-Version

Die Paketfilterversion nftables 1.0.6 wurde veröffentlicht und vereinheitlicht Paketfilterschnittstellen für IPv4, IPv6, ARP und Netzwerkbrücken (mit dem Ziel, iptables, ip6table, arptables und ebtables zu ersetzen). Das nftables-Paket enthält Paketfilterkomponenten, die im Userspace laufen, während die Kernel-Ebene vom nf_tables-Subsystem bereitgestellt wird, das seit Release 3.13 Teil des Linux-Kernels ist. Auf Kernel-Ebene wird nur eine generische protokollunabhängige Schnittstelle bereitgestellt, die grundlegende Funktionen zum Extrahieren von Daten aus Paketen, zum Durchführen von Operationen an Daten und zum Steuern des Flusses bereitstellt.

Die Filterregeln selbst und protokollspezifische Handler werden in User-Space-Bytecode kompiliert. Anschließend wird dieser Bytecode über die Netlink-Schnittstelle in den Kernel geladen und im Kernel in einer speziellen virtuellen Maschine ausgeführt, die BPF (Berkeley Packet Filters) ähnelt. Dieser Ansatz ermöglicht es, die Größe des auf Kernelebene ausgeführten Filtercodes erheblich zu reduzieren und alle Funktionen der Parsing-Regeln und die Logik der Arbeit mit Protokollen in den Benutzerbereich zu verlagern.

Wichtigste Änderungen:

  • Der Regeloptimierer, der aufgerufen wird, wenn die Option „-o/—optimize“ angegeben wird, verfügt über eine automatische Paketierung von Regeln, indem er diese kombiniert und in Karten- und Satzlisten umwandelt. Zum Beispiel: Rules # Cat Ruleset.nft Table IP x { Chain Y { Type Filter Hook Input Priority Filter; Politikabfall; Meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 akzeptiere meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 akzeptiere meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 akzeptiere meta iifname eth1 ip saddr 1.1.1.2 .2.2.4.0 ip daddr 2.2.4.10-2 akzeptieren meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 4 akzeptieren } } nach der Ausführung von „nft -o -c -f Ruleset.nft“ wird wie folgt konvertiert: Regelsatz . nft:17:74-1: meta iifname eth1.1.1.1 ip saddr 2.2.2.3 ip daddr 5 akzeptiere Ruleset.nft:17:74-1: meta iifname eth1.1.1.2 ip saddr 2.2.2.4 ip daddr 6 akzeptiere Ruleset.nft : 17:77-1: meta iifname eth1.1.1.2 ip saddr 2.2.3.0 ip daddr 24/7 Accept Ruleset.nft:17:83-1: meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip daddr 2.2.4.10-8 akzeptiere Ruleset.nft:17:74-2: meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip daddr 1 akzeptieren in: iifname . ip saddr. ip daddr { eth1.1.1.1 . 2.2.2.3. 1, eth1.1.1.2 . 2.2.2.4. 1, eth1.1.1.2 . 2.2.3.0. 24/1, eth1.1.1.2 . 2.2.4.0. 2.2.4.10-2, eth1.1.1.3. 2.2.2.5. XNUMX } akzeptieren
  • Der Optimierer kann auch Regeln, die bereits einfache Setlisten verwenden, in eine kompaktere Form umwandeln, zum Beispiel die Regeln: # cat Ruleset.nft Table IP Filter { Chain Input { Type Filter Hook Input Priority Filter; Politikabfall; iifname „lo“ akzeptieren CT-Status etabliert, zugehörig akzeptieren Kommentar „In Verkehr, den wir erzeugen, vertrauen wir“ iifname „enp0s31f6“ ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 akzeptieren iifname „enp0s31f6“ ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 akzeptieren } } nach der Ausführung von „nft -o -c -f Ruleset.nft“ wird wie folgt gepackt : Ruleset.nft:6:22-149: iifname "enp0s31f6" IP Saddr { 209.115.181.102, 216.197.228.230 } IP Daddr 10.0.0.149 UDP Sport 123 UDP Dport 32768-65535 Accept Ruleset.nft:7:22 - 143: iifname „enp0s31f6“ ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 akzeptieren in: iifname . ip saddr. IP Daddr. UDP-Sport. udp dport { enp0s31f6 . 209.115.181.102. 10.0.0.149. 123. 32768-65535, enp0s31f6. 216.197.228.230. 10.0.0.149. 123. 32768-65535, enp0s31f6. 64.59.144.17. 10.0.0.149. 53. 32768-65535, enp0s31f6. 64.59.150.133. 10.0.0.149. 53. 32768-65535 } akzeptieren
  • Problem mit der Bytecode-Generierung für Zusammenführungsintervalle behoben, die Typen mit unterschiedlicher Byte-Reihenfolge verwenden, wie z. B. IPv4 (Netzwerk-Byte-Reihenfolge) und Meta-Markierung (System-Byte-Reihenfolge). Tabelle ip x {map w { typeof ip saddr . Metamarke: Urteilsmarkierungen, Intervallzählerelemente = {127.0.0.1-127.0.0.4. 0x123434-0xb00122: akzeptieren, 192.168.0.10-192.168.1.20. 0x0000aa00-0x0000aaff: akzeptieren, } } Kette k { Typ Filter Hook Eingabeprioritätsfilter; Politikabfall; ip saddr. Meta-Markierung vmap @w } }
  • Verbesserter Vergleich seltener Protokolle bei Verwendung von Rohausdrücken, zum Beispiel: meta l4proto 91 @th,400,16 0x0 akzeptieren
  • Probleme mit der Aktivierung von Regeln in Intervallen wurden behoben: Regel einfügen xy tcp sport { 3478-3497, 16384-16387 } Zähler akzeptieren
  • Die JSON-API wurde verbessert und bietet nun Unterstützung für Ausdrücke in Set- und Map-Listen.
  • Erweiterungen der nftables-Python-Bibliothek ermöglichen das Laden von Regelsätzen für die Verarbeitung im Validierungsmodus („-c“) und fügen Unterstützung für die externe Definition von Variablen hinzu.
  • Das Hinzufügen von Kommentaren ist in Setlistenelementen zulässig.
  • Byte ratelimit ermöglicht die Angabe eines Nullwerts.

Source: opennet.ru

Kommentar hinzufügen