Nftables : remplacant de Iptables

Soumis par drupal_admin le sam 31/01/2015 - 14:53

NOTE juin 2016 : CE "LIVRE" EST TOUJOURS EN COURS DE REALISATION.
Nouveauté Mai 2016 : utilisation notation CIDR et intervalles dans un "set nommé", voir l'article spécifique.
Juillet 2017, Nftables progresse toujours, je vais reprendre des tests plus complets.

"NFTABLES" :

C'est le remplaçant prévu des commande IPTABLES et IPSET utilisées par tous les parefeux sour Linux.
Le développement ne semble pas hyper actif ni réactif et de nombreuses commandes ne sont pas encore, à mon goût, complètes, notamment au niveau des "sets" (remplaçants de Ipset) ou suffisament souples.
Tout est prêt au niveau du noyau Linux depuis déjà quelques versions (3.16 en principe) mais je pense que pour des tests (NFTABLES ne semble pas encore prêt pour mise en exploitation) il vaut mieux utiliser une version très récente du noyau.
Ici j'utiliserai une 3.19-rc6, la dernière disponible au moment de ces tests.
Il faut utiliser un moyau compilé avec tous les modules spécifiques à NFTABLES, malheureusement dans "make menuconfig" les sifférentes options sont un peu dispersées. Il faut aussi se rappeler que NFTABLES concernera IpV6 aussi bien que IpV4, donc configurer le tout.

Il faut avoir configuré dans le noyau (>= 3.16, ici 3.19) les extensions pour "nftables":
   <M> Netfilter nf_tables support
   <M>   Netfilter nf_tables mixed IPv4/IPv6 tables support
   <M>   Netfilter nf_tables IPv6 exthdr module
   <M>   Netfilter nf_tables meta module
   <M>   Netfilter nf_tables conntrack module
   <M>   Netfilter nf_tables rbtree set module
   <M>   Netfilter nf_tables hash set module
   <M>   Netfilter nf_tables counter module
   <M>   Netfilter nf_tables log module
   <M>   Netfilter nf_tables limit module
   <M>   Netfilter nf_tables masquerade support
   <M>   Netfilter nf_tables redirect support
   <M>   Netfilter nf_tables nat module
   <M>   Netfilter nf_tables queue module
   <M>   Netfilter nf_tables reject support
Ajouter Ethernet bridge nf_tables support
--- Ethernet Bridge nf_tables support   
  <M>   Netfilter nf_table bridge meta support
  <M>   Netfilter nf_tables bridge reject support

Il est conseillé de charger tous les modules nécessaires au démarrage en constituant une liste des modules dans un fichier dédié (ici nftables.conf) dans /etc/modules-load.d pour une Debian "Testing" ou dans le fichier /etc/modules pour une Debian "stable".
Les modules se situent dans /lib/modules/$(uname -r)/kernel/net/netfilter et commencent presque tous par "nft"  sauf les deux plus importants "nf_tables_inet" et "nf_tables".
Liste des modules chargés :

nf_tables
nf_tables_inet
nft_chain_nat_ipv6
nft_chain_nat_ipv4
nft_chain_route_ipv6
nft_chain_route_ipv4
nft_counter
nft_ct
nft_exthdr
nft_hash
nft_limit
nft_log
nft_masq
nft_meta
nft_nat
nft_queue
nft_rbtree
nft_redir
nft_reject_inet
nft_reject
nft_reject_ipv4
nft_reject_ipv6

On sera ainsi parés pour toutes les éventualités.
 

Quelques références :
http://wiki.gentoo.org/wiki/Nftables
http://wiki.nftables.org/wiki-nftables/index.php/Main_Page