Publication du filtre de paquets nftables 1.0.7

Publication du filtre de paquets nftables 1.0.7, unifiant les interfaces de filtrage des paquets pour IPv4, IPv6, ARP et les ponts réseau (visant à remplacer iptables, ip6tables, arptables et ebtables). Le paquet nftables contient des composants de filtre de paquets fonctionnant dans l'espace utilisateur, tandis qu'au niveau du noyau, la sous-systÚme nf_tables assure cette fonction, intégrée 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, permettant des fonctionnalités de base pour extraire des données des paquets, effectuer des opérations sur ces données et gérer le 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 :

  • Pour les systĂšmes avec un noyau Linux 6.2 et plus, la prise en charge du mappage des protocoles vxlan, geneve, gre et gretap a Ă©tĂ© ajoutĂ©e, permettant d'utiliser des expressions simples pour vĂ©rifier les en-tĂȘtes des paquets encapsulĂ©s. Par exemple, pour vĂ©rifier adresses IP dans l'en-tĂȘte d'un paquet imbriquĂ© VxLAN, il est dĂ©sormais possible d'utiliser des rĂšgles (sans avoir besoin de prĂ©-dĂ©capsuler l'en-tĂȘte VxLAN et de lier le filtre Ă  l'interface vxlan0) : 
 udp dport 4789 vxlan ip protocol udp 
 udp dport 4789 vxlan ip saddr 1.2.3.0/24 
 udp dport 4789 vxlan ip saddr . vxlan ip daddr { 1.2.3.4 . 4.3.2.1 }
  • La prise en charge de la fusion automatique des restes aprĂšs la suppression partielle d'un Ă©lĂ©ment de la liste set a Ă©tĂ© mise en Ɠuvre, permettant de supprimer un Ă©lĂ©ment ou une partie d'une plage d'existence (auparavant, une plage ne pouvait ĂȘtre supprimĂ©e que dans son intĂ©gralitĂ©). Par exemple, aprĂšs la suppression de l'Ă©lĂ©ment 25 d'une liste set avec des plages 24-30 et 40-50, la liste contiendra 24, 26-30 et 40-50. Les corrections nĂ©cessaires au fonctionnement de la fusion automatique seront proposĂ©es dans les versions correctives des branches stables du noyau 5.10+. # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24-30, 40-50 } } } # nft delete element ip x y { 25 } # nft list ruleset table ip x { set y { typeof tcp dport flags interval auto-merge elements = { 24, 26-30, 40-50 } } }
  • L'utilisation de contact et de plages est autorisĂ©e lors du mappage de la traduction d'adresses (NAT). table ip nat { chain prerouting { type nat hook prerouting priority dstnat; policy accept; dnat to ip daddr . tcp dport map { 10.1.1.136 . 80 : 1.1.2.69 . 1024, 10.1.1.10-10.1.1.20 . 8888-8889 : 1.1.2.69 . 2048-2049 } persistent } }
  • Ajout de la prise en charge de l'expression «last», permettant de connaĂźtre le dernier temps d'utilisation d'un Ă©lĂ©ment de rĂšgle ou d'une liste set. Cette possibilitĂ© est prise en charge Ă  partir du noyau Linux 5.14. table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h } chain z { type filter hook output priority filter; policy accept; update @y { ip daddr . tcp dport } } } # nft list set ip x y table ip x { set y { typeof ip daddr . tcp dport size 65535 flags dynamic,timeout last timeout 1h elements = { 172.217.17.14 . 443 last used 1s591ms timeout 1h expires 59m58s409ms, 172.67.69.19 . 443 last used 4s636ms timeout 1h expires 59m55s364ms, 142.250.201.72 . 443 last used 4s748ms timeout 1h expires 59m55s252ms, 172.67.70.134 . 443 last used 4s688ms timeout 1h expires 59m55s312ms, 35.241.9.150 . 443 last used 5s204ms timeout 1h expires 59m54s796ms, 138.201.122.174 . 443 last used 4s537ms timeout 1h expires 59m55s463ms, 34.160.144.191 . 443 last used 5s205ms timeout 1h expires 59m54s795ms, 130.211.23.194 . 443 last used 4s436ms timeout 1h expires 59m55s564ms } } }
  • Ajout de la possibilitĂ© de dĂ©finir des quotas dans les listes set. Par exemple, pour dĂ©finir un quota de trafic pour chaque adresse IP cible, on peut indiquer : table netdev x { set y { typeof ip daddr size 65535 quota over 10000 mbytes } chain y { type filter hook egress device «eth0» priority filter; policy accept; ip daddr @y drop } } # nft add element inet x y { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft list ruleset table netdev x { set y { type ipv4_addr size 65535 quota over 10000 mbytes elements = { 8.8.8.8 quota over 10000 mbytes used 196 bytes } } chain y { type filter hook egress device «eth0» priority filter; policy accept; ip daddr @y drop } }
  • L'utilisation de constantes dans les listes set est autorisĂ©e. Par exemple, en utilisant l'adresse de destination et l'identifiant VLAN comme clĂ© de liste, on peut directement indiquer le numĂ©ro VLAN (daddr . 123): table netdev t { set s { typeof ether saddr . vlan id size 2048 flags dynamic,timeout timeout 1m } chain c { type filter hook ingress device eth0 priority 0; policy accept; ether type != 8021q update @s { ether daddr . 123 } counter } }
  • Ajout d'une nouvelle commande «destroy» pour la suppression sans condition d'objets (contrairement Ă  la commande delete qui ne gĂ©nĂšre pas d'ENOENT lors de la tentative de suppression d'un objet manquant). Un noyau Linux 6.3-rc est nĂ©cessaire. destroy table ip filter

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