Tables, chaines, règles, ça devient compliqué !

Chapitre Progression:

Il est vrai que la notion de table ne diffère que très légèrement par rapport à IPtables. Mais il est bon de revoir ces notions de "tables", "chaines  et de "règles" dans NFtables

I. Les tables

Une table est un objet qui va contenir des chaines. Il ne s'agit dans NFtables que d'un simple conteneur que l'on peut dire "organisationnel" qui est défini par l'utilisateur.

Il n'y a pas de table prédéfinie dans NFtables a contrario d'IPtables dans lequel on pouvait trouver les tables "filter", "raw", "NAT", etc.

Il existe en revanche des familles de table, qui correspondent chacune à un outil différent dans la suite "IPtables". Pour rappel, NFtables ne remplace en effet pas qu'IPtables, mais également d'autres outils. On trouvera ainsi :

  • Les tables de la famille "IP" qui remplace "IPtables"
  • Les tables de la famille "ARP" qui remplace "arptables"
  • Les tables de la famille "IP6" qui remplace "ip6tables"
  • Les tables de la famille "INET" qui remplace "IPtables" et "ip6btables" qui permettra de faciliter l'administration des routeurs dual-stack (les routeurs qui sont présent sur la pile IPV4 et également sur la pile IPv6, le tout en même temps).
  • Les tables de la famille "bridge"=

II. Les chaines

Une chaine va contenir et stocker une règle. A nouveau, il n'existe pas de chaine prédéfinie, mais celles-ci doivent se rattacher à des Hooks (ceux vus dans le chapitre précédent). Une chaine va au final permettre de fixer et de regrouper les règles entre elles.

Comme nous l'avons vu plus haut, une chaine correspond donc à un crochet ("Hook") vu précédemment ("Input", "Output", etc.). Nous verrons techniquement comment lier une chaine à un Hook un peu plus tard.

III. Les règles

Ce dernier point est assez simple à comprendre. Une règle n'est qu'au final une action à appliquer. Elle se compose :

  • D'un filtre qui permet de cibler certains paquets
  • D'une action qui permet d'accepter, de supprimer ou de modifier un paquet

Voyons un exemple de règle :

ip saddr 192.168.1.1
ip daddr 192.168.19.5 drop

Il s'agit ici d'une règle qui va bloquer tous les paquets venant de l'IP 192.168.1.1 et allant vers 192.168.19.5. On remarque donc les deux parties de notre règle :

  • "ip saddr 192.168.1.1 ip daddr 192.168.19.5" : c'est notre filtre qui permet d'appliquer et de cibler notre action
  • "drop" : c'est notre action, ici le fait de supprimer le paquet, donc de le bloquer

Pour schématiser l'ensemble :

schema-nftables-netfilter-hooks-03
Schéma des notions de tables, chaines et règles dans Nftables

Nous avons différentes tables, qui peuvent ou non être de familles différentes (ici une pour ipv4, une pour ipv6) et qui contiennent des chaines (qui se réfèrent à des Hooks NetFilter), qui elles-mêmes contiennent des règles d'acceptation, de suppression ou de modification des paquets.

C'est la fin de ce second module plutôt "théorique". Dans le prochain module, vous pourrez faire vos premiers pas dans la configuration de NFtables car pour l'instant, à part l'avoir installé, nous n'avons pas fait grand-chose coté pratique ! 🙂

Rendez-vous au prochain module !

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

    Mickael Dorigny

    Co-fondateur d'IT-Connect.fr. Auditeur en sécurité des systèmes d'information chez Amossys

      mickael has 502 posts and counting.See all posts by mickael