nftables filtre de paquets version 0.9.3

Publié libération du filtre de paquets nfttables 0.9.3, se développant en remplacement d'iptables, ip6table, arptables et ebtables en unifiant les interfaces de filtrage de paquets pour IPv4, IPv6, ARP et les ponts réseau. 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. Les modifications requises pour que la version nftables 0.9.3 fonctionne sont incluses dans la prochaine branche du noyau Linux 5.5.

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. La logique de filtrage elle-même et les gestionnaires spécifiques au protocole sont compilés en bytecode dans l'espace utilisateur, après quoi ce bytecode est chargé dans le noyau à l'aide de l'interface Netlink et exécuté dans une machine virtuelle spéciale rappelant BPF (Berkeley Packet Filters). Cette approche vous permet de réduire considérablement la taille du code de filtrage exécuté au niveau du noyau et de déplacer toutes les fonctions de règles d'analyse et de logique pour travailler avec des protocoles dans l'espace utilisateur.

Principales nouveautés :

  • Prise en charge de la correspondance des paquets par heure. Vous pouvez définir des plages d'heures et de dates dans lesquelles la règle sera déclenchée, et configurer le déclenchement pour des jours individuels de la semaine. Ajout également d'une nouvelle option "-T" pour afficher l'heure d'époque en secondes.

    heure méta \»2019-12-24 16:00\" — \»2020-01-02 7:00\"
    méta-heure \"17:00\" - \"19:00\"
    méta-jour "Vendredi"

  • Prise en charge de la récupération et de la sauvegarde des marques SELinux (secmark).

    ct secmark définir méta secmark
    méta secmark défini ct secmark

  • Prise en charge des listes de cartes synproxy, vous permettant de définir plusieurs règles par backend.

    table ip foo {
    synproxy https-synproxy {
    message 1460
    wéchelle 7
    horodatage sac-perm
    }

    synproxy autre-synproxy {
    message 1460
    wéchelle 5
    }

    chaîne pré {
    type filtre crochet préroutage priorité brute ; politique acceptée ;
    tcp dport 8888 drapeaux tcp syn notrack
    }

    barre de chaîne {
    tapez le filtre de priorité avant à crochet de filtre ; politique acceptée ;
    état ct invalide, nom du proxy synproxy non suivi carte ip saddr { 192.168.1.0/24 : « https-synproxy », 192.168.2.0/24 : « other-synproxy » }
    }
    }

  • La possibilité de supprimer dynamiquement des éléments définis des règles de traitement des paquets.

    nft ajouter une règle ... supprimer @set5 { ip6 saddr . papa ip6}

  • Prise en charge du mappage VLAN par ID et protocole définis dans les métadonnées de l'interface du pont réseau ;

    méta ibrpvid 100
    méta ibrvproto vlan

  • Option "-t" ("--terse") pour exclure les éléments des ensembles lors de l'affichage des règles. L’exécution de « nft -t list Ruleset » affichera :

    table ip x {
    définir y {
    tapez ipv4_addr
    }
    }

    Et avec « ensemble de règles de liste nft »

    table ip x {
    définir y {
    tapez ipv4_addr
    éléments = { 192.168.10.2, 192.168.20.1,
    192.168.4.4, 192.168.2.34 }
    }
    }

  • Possibilité de spécifier plusieurs périphériques dans les chaînes netdev (fonctionne uniquement avec le noyau 5.5) pour combiner des règles de filtrage communes.

    ajouter une table netdev x
    ajouter une chaîne netdev xy { \
    tapez les périphériques d'entrée du crochet de filtre = { eth0, eth1 } priorité 0 ;
    }

  • Possibilité d'ajouter des descriptions de types de données.

    #nft décrit ipv4_addr
    type de données ipv4_addr (adresse IPv4) (type de base entier), 32 bits

  • Possibilité de construire une interface CLI avec la bibliothèque Linenoise au lieu de libreadline.

    ./configure --with-cli=linenoise

Source: opennet.ru

Ajouter un commentaire