nftables filtre de paquets version 1.0.2

La version du filtre de paquets nftables 1.0.2 a été publiée, unifiant les interfaces de filtrage de paquets pour IPv4, IPv6, ARP et les ponts réseau (destiné à remplacer iptables, ip6table, arptables et ebtables). Les modifications requises pour que la version nftables 1.0.2 fonctionne sont incluses dans le noyau Linux 5.17-rc.

Le package nftables comprend des composants de filtre de paquets qui s'exécutent dans l'espace utilisateur, tandis que le travail au niveau du noyau est assuré par le sous-système nf_tables, qui fait partie du noyau Linux depuis la version 3.13. Le niveau noyau fournit uniquement une interface générique indépendante du protocole qui fournit des fonctions de base pour extraire les données des paquets, effectuer des opérations sur les données et contrôler le flux.

Les règles de filtrage elles-mêmes et les gestionnaires spécifiques au protocole sont compilés en bytecode de l'espace utilisateur, après quoi ce bytecode est chargé dans le noyau à l'aide de l'interface Netlink et exécuté dans le noyau dans une machine virtuelle spéciale ressemblant à BPF (Berkeley Packet Filters). Cette approche permet de réduire considérablement la taille du code de filtrage s'exécutant au niveau du noyau et de déplacer toutes les fonctions de règles d'analyse et la logique de travail avec les protocoles dans l'espace utilisateur.

Principales nouveautés :

  • Un mode d'optimisation des règles a été ajouté, activé à l'aide de la nouvelle option "-o" ("--optimize"), qui peut être combinée avec l'option "--check" pour vérifier et optimiser les modifications apportées au fichier d'ensemble de règles sans le charger réellement. . L'optimisation vous permet de combiner des règles similaires, par exemple les règles : méta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accepter méta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 accepter ip saddr 1.1.1.1 ip daddr 2.2.2.2 .2.2.2.2 accepter IP Saddr 3.3.3.3 IP Daddr XNUMX supprimer

    sera combiné en méta iifname . IP Saddr. ip papar { eth1 . 1.1.1.1. 2.2.2.3, eth1 . 1.1.1.2. 2.2.2.5 } acceptez ip saddr . ip papadr vmap { 1.1.1.1 . 2.2.2.2 : accepter, 2.2.2.2 . 3.3.3.3 : déposer }

    Exemple d'utilisation : # nft -c -o -f Ruleset.test Fusion : Ruleset.nft:16:3-37 : ip daddr 192.168.0.1 compteur accepté Ruleset.nft:17:3-37 : ip daddr 192.168.0.2 compteur accepté Ruleset.nft:18:3-37 : ip daddr 192.168.0.3 compteur accepté dans : ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } compteur de paquets 0 octets 0 accepté

  • Les listes d'ensembles implémentent la possibilité de spécifier les options ip et tcp, ainsi que les fragments sctp : set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp chunk init num-inbound-streams elements = { 1, 4 } } chaîne c5 { option ip valeur ra @s5 accepter } chaîne c7 { sctp chunk init num-inbound-streams @s7 accepter }
  • Ajout de la prise en charge des options TCP fastopen, md5sig et mptcp.
  • Ajout de la prise en charge de l'utilisation du sous-type mp-tcp dans les mappages : option tcp sous-type mptcp 1
  • Code de filtrage amélioré côté noyau.
  • Flowtable prend désormais entièrement en charge le format JSON.
  • La possibilité d'utiliser l'action « rejeter » dans les opérations de correspondance de trame Ethernet a été fournie. ether saddr aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 rejeter

Source: opennet.ru

Ajouter un commentaire