Sortie du filtre de paquets nftables 1.1.6

La version 1.1.6 du filtre de paquets nftables a été publiée, unifiant les interfaces de filtrage des paquets pour IPv4, IPv6, ARP et les ponts réseau (visant à remplacer iptables, ip6tables, arptables et ebtables). Parallèlement, la version 1.3.1 de la bibliothèque associée libnftnl, fournissant une API de bas niveau pour interagir avec le sous-système nf_tables, a été publiée.

Le paquet nftables comprend des composants du filtre de paquets fonctionnant dans l'espace utilisateur, tandis qu'au niveau du noyau, le fonctionnement est assuré par la sous-système nf_tables, intégré dans le noyau Linux depuis la version 3.13. Au niveau du noyau, une interface générale est fournie, indépendante du protocole spécifique, offrant des fonctions de base pour l'extraction de données des paquets, l'exécution d'opérations sur les données et la gestion de flux.

Les règles de filtrage et les gestionnaires spécifiques aux protocoles sont compilés en bytecode dans l'espace utilisateur, après quoi ce bytecode est chargé dans le noyau via l'interface Netlink et exécuté dans le noyau dans une structure spéciale une machine virtuelle, similaire aux BPF (Berkeley Packet Filters). Cette approche permet de réduire considérablement la taille du code de filtrage fonctionnant au niveau du noyau et de transférer toutes les fonctions de parsing des règles et de logique de traitement des protocoles dans l'espace utilisateur.

Principales modifications :

  • Le support complet des modèles de tunnels légers, tels que vxlan, geneve et erspan, a été fourni : table netdev global { tunnel t1 { id 10 ip saddr 192.168.2.10 ip daddr 192.168.2.11 sport 1025 dport 20020 ttl 1 erspan { version 1 index 2 } } tunnel t2 { id 10 ip saddr 192.168.3.10 ip daddr 192.168.3.11 sport 1025 dport 21021 ttl 1 erspan { version 1 index 2 } } chain in { type filter hook ingress device veth0 priority 0; tunnel name ip saddr map { 10.141.10.12 : "t1", 10.141.10.13 : "t2" } fwd to erspan1 } } Avant de charger les règles, il convient de créer l'interface réseau erspan1 : ip link add dev erspan1 type erspan external
  • Le support des masques dans les noms des interfaces réseau a été ajouté dans les gestionnaires netdev, par exemple, pour ajouter une chaîne de base dans le filtre du trafic entrant pour tous les dispositifs vlan, il est possible de spécifier : table netdev t { chain c { type filter hook ingress devices = { "vlan*", "veth0" } priority filter; policy accept; } }
  • Sur les systèmes avec un noyau Linux 6.18 et supérieur, le support du transfert de trames L2 dans l'interface des ponts réseau pour un traitement local a été mis en œuvre, par exemple, pour diriger dans la pile IP toutes les trames Ethernet pour l'adresse MAC de:ad:00:00:be:ef, il est possible de spécifier : table bridge global { chain pre { type filter hook prerouting priority 0; policy accept; ether daddr de:ad:00:00:be:ef meta pkttype set host ether daddr set meta ibrhwaddr accept } }
  • Une nouvelle infrastructure pour les tests de fuzzing utilisant l'outil afl++ (american fuzzy lop++) a été ajoutée, activée lors de la compilation via « ./configure —with-fuzzer ».

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster