Nftables : remplacant de Iptables

NOTE février 2022 : CE "LIVRE" EST TOUJOURS EN COURS DE REALISATION. 
Le noyau utilise Nftables mais, par manque de temps, j'utilise toujours l'interface iptables + ipset, pour le moment cela fonctionne encore très bien. 
En plus je n'ai pas encore bien compris la philosophie sous tendue par Nftables et j'ai du mal à concevoir un pare-feu à la fois simple, complet et facile à maintenir. 
Nouveauté Mai 2016 : utilisation notation CIDR et intervalles dans un "set nommé", voir l'article spécifique.

"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