Lancement du filtrage de paquets nftables 0.9.2

A eu lieu publication du filtre de paquets nftables 0.9.2, qui se développe comme une alternative à iptables, ip6table, arptables et ebtables grùce à l'unification des interfaces de filtrage des paquets pour IPv4, IPv6, ARP et les ponts réseaux. Le paquet nftables comprend des composants de filtrage de paquets fonctionnant en espace utilisateur, tandis qu'au niveau du noyau, le travail est assuré par le sous-systÚme nf_tables, inclus dans le noyau Linux depuis la version 3.13. Les modifications nécessaires pour le fonctionnement de la version nftables 0.9.2 sont comprises dans le noyau Linux 5.3.

Au niveau du noyau, seule une interface générale, indépendante du protocole spécifique, est fournie, offrant des fonctions de base pour l'extraction de données à partir de paquets, l'exécution d'opérations sur les données et la gestion du flux. La logique de filtrage et les gestionnaires spécifiques aux protocoles sont compilés en bytecode en espace utilisateur, aprÚs quoi ce bytecode est chargé dans le noyau via l'interface Netlink et exécuté dans une machine virtuelle spéciale, similaire à BPF (Berkeley Packet Filters). Cette approche permet de réduire considérablement la taille du code de filtrage qui fonctionne au niveau du noyau et d'externaliser toutes les fonctions d'analyse des rÚgles et de logique de travail avec les protocoles en espace utilisateur.

Les principales nouveautés :

  • La possibilitĂ© de vĂ©rifier le numĂ©ro de port Ă  partir de l'en-tĂȘte de paquet de la couche de transport, indĂ©pendamment du type de protocole de la couche 4 :

    add rule x y ip protocol { tcp, udp } th dport 53

  • Prise en charge de la rĂ©cupĂ©ration de la durĂ©e de vie d'un ensemble d'Ă©lĂ©ments :

    add element ip x y { 1.1.1.1 timeout 30s expires 15s }

  • PossibilitĂ© de vĂ©rifier des options individuelles (lsrr, rr, ssrr et ra) dans les paquets IPv4 :

    add rule x y ip option rr exists drop

    Pour les options de routage, il est possible de vérifier les champs type, ptr, length et addr :

    add rule x y ip option rr type 1 drop

  • Dans les expressions, il est dĂ©sormais permis de spĂ©cifier des prĂ©fixes rĂ©seau et des plages d'adresses :

    iifname ens3 snat to 10.0.0.0/28
    iifname ens3 snat to 10.0.0.1-10.0.0.15

  • Prise en charge de l'utilisation de variables dans les dĂ©finitions de chaĂźnes :

    define default_policy = accept
    add chain ip foo bar { type filter hook input priority filter; policy $default_policy }

  • La spĂ©cification de la prioritĂ© de la chaĂźne peut dĂ©sormais se faire Ă  la fois sous forme numĂ©rique et symbolique :

    define prio = filter
    define prionum = 10
    define prioffset = «filter — 150»

    add table ip foo
    add chain ip foo bar { type filter hook input priority $prio; }
    add chain ip foo ber { type filter hook input priority $prionum; }
    add chain ip foo bor { type filter hook input priority $prioffset; }

  • Prise en charge du module synproxy. Par exemple, pour protĂ©ger le port TCP 8888 avec synproxy, vous pouvez utiliser un ensemble de rĂšgles :

    table ip x {
    chaĂźne y {
    type filter hook prerouting priority raw; policy accept;
    tcp dport 8888 tcp flags syn notrack
    }

    chaĂźne z {
    type filter hook forward priority filter; policy accept;
    tcp dport 8888 ct state invalid,untracked synproxy mss 1460 \
    wscale 7 timestamp sack-perm ct state invalid drop
    }
    }

  • Pour dĂ©terminer dans la table conntrack les connexions supplĂ©mentaires attendues associĂ©es Ă  la connexion actuelle, qui sont appliquĂ©es dans les protocoles et scĂ©narios nĂ©cessitant l'Ă©tablissement de plusieurs connexions, il est maintenant possible de dĂ©finir des politiques via les ensembles de rĂšgles standards. Par exemple, pour dĂ©finir les connexions attendues suite Ă  une connexion au port TCP 8888, pour celles visant le port 5432, vous pouvez spĂ©cifier les rĂšgles suivantes :

    table x {
    ct expectation myexpect {
    protocol tcp
    dport 5432
    timeout 1h
    size 12
    l3proto ip
    }

    chain input {
    type filter hook input priority 0;
    ct state new tcp dport 8888 ct expectation set myexpect
    ct state established,related counter accept
    }
    }

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