Recherche de site Web

iptables vs nftables : quelle est la différence ?


Depuis longtemps, iptables est l'outil préféré des administrateurs système. Mais les nftables sont recommandés de nos jours. Lisez pour savoir pourquoi.

Chaque administrateur Linux a sûrement travaillé avec iptables, le pare-feu Linux de longue date qui nous a bien servi pendant de nombreuses années. Mais vous n'êtes peut-être pas encore familier avec nftables, un nouveau venu censé nous offrir des mises à niveau indispensables et, à terme, remplacer les vieillissants iptables.

Pourquoi nftables au lieu d'iptables ?

nftables est développé par Netfilter, la même organisation qui gère actuellement iptables. Il a été créé pour remédier aux problèmes d'iptables, à savoir l'évolutivité et les performances.

Hormis une nouvelle syntaxe et quelques mises à niveau, vous constaterez qu'il fonctionne de manière très similaire à son prédécesseur.

Une autre justification pour un nouvel utilitaire est que le framework iptables est devenu un peu alambiqué avec iptables, ip6tables, arptables et ebtables fournissant tous des fonctions différentes mais similaires.

Par exemple, il est tout simplement inefficace de créer des règles IPv4 dans iptables et des règles IPv6 dans ip6tables et de garder les deux synchronisées. Nftables vise à remplacer tout cela et à être une solution centralisée.

Bien que nftables soit inclus dans le noyau Linux depuis 2014, il a récemment gagné en popularité à mesure que son adoption se généralisait. Le changement est lent dans le monde Linux et les utilitaires obsolètes mettent souvent quelques années, voire plus, à être progressivement supprimés au profit de leurs homologues mis à niveau.

Nftables devient le pare-feu de choix recommandé et il incombe aux administrateurs Linux de mettre à jour leur répertoire. C'est le moment idéal pour apprendre nftables et mettre à jour votre configuration iptables existante.

Si vous utilisez iptables depuis des années et que vous n'êtes pas trop enthousiasmé par l'idée de devoir apprendre un tout nouvel utilitaire, ne vous inquiétez pas, nous avons ce qu'il vous faut dans ce guide. Dans cet article, nous aborderons les différences entre nftables et iptables et montrerons des exemples de configuration de vos règles de pare-feu dans la nouvelle syntaxe nftables.

Chaînes et règles dans nftables

Dans iptables, il existe trois chaînes par défaut : input, output et forward. Ces trois « chaînes » (et d'autres chaînes, si vous en avez configurées) contiennent des « règles » et iptables fonctionne en faisant correspondre le trafic réseau à la liste des règles d'une chaîne. Si le trafic examiné ne correspond à aucune règle, la politique par défaut de la chaîne sera utilisée sur le trafic (c'est-à-dire ACCEPT, DROP).

Nftables fonctionne de la même manière, avec des « chaînes » et des « règles » également. Cependant, il ne démarre avec aucune chaîne de base, ce qui rend la configuration un peu plus flexible.

Un domaine d'inefficacité pour iptables est que toutes les données du réseau devaient traverser une ou plusieurs de ces chaînes susmentionnées, même si le trafic ne correspondait à aucune règle. Que vous ayez configuré ou non les chaînes, iptables vérifie toujours les données de votre réseau par rapport à celles-ci.

Installer nftables sous Linux

Nftables est disponible dans toutes les principales distributions Linux et vous pouvez facilement l'installer à l'aide du gestionnaire de packages de vos distributions.

Sur une distribution basée sur Ubuntu ou Debian, vous pouvez utiliser cette commande :

sudo apt install nftables

Pour vous assurer que nftables démarre automatiquement au redémarrage de votre système :

sudo systemctl enable nftables.service

Différence de syntaxe entre iptables et nftables

Nftables a une syntaxe différente et beaucoup plus simple que celle d'iptables. Soyons honnêtes, la syntaxe d'iptables n'était toujours pas claire et nécessitait des efforts supplémentaires pour l'apprendre. Heureusement pour ceux qui migrent depuis iptables, nftables accepte toujours l'ancienne syntaxe.

Vous pouvez également utiliser l'utilitaire iptables-translate, qui acceptera les commandes iptables et les convertira en équivalent nftables. C'est un moyen simple de voir en quoi les deux syntaxes diffèrent.

Installez iptables-translate sur les distributions Ubuntu et Debian avec cette commande :

sudo apt install iptables-nftables-compat

Une fois installé, vous pouvez transmettre votre syntaxe iptables à la commande iptables-translate, et elle renverra la commande équivalente nftables.

Voyons quelques exemples afin que vous puissiez voir en quoi ces commandes diffèrent les unes des autres.

Bloquer les connexions entrantes

Cette commande bloquerait les connexions entrantes depuis l'adresse IP 192.168.2.1 :

linux@handbook:~$ iptables-translate -A INPUT -s 192.168.2.1 -j DROP
nft add rule ip filter INPUT ip saddr 192.168.2.1 counter drop

Autoriser les connexions SSH entrantes

Regardons quelques exemples supplémentaires – des choses courantes que vous vous retrouveriez normalement à saisir dans iptables lors du renforcement d'un serveur Linux.

linux@handbook:~$ iptables-translate -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT tcp dport 22 ct state new,established counter accept

Autoriser les connexions SSH entrantes à partir d'une plage IP spécifique

Si vous souhaitez autoriser les connexions SSH entrantes à partir de 192.168.1.0/24 :

linux@handbook:~$ iptables-translate -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip saddr 192.168.1.0/24 tcp dport 22 ct state new,established counter accept

Autoriser les connexions MySQL à l'interface réseau eth0

Voici la syntaxe pour iptables et nftables :

linux@handbook:~$ iptables-translate -A INPUT -i eth0 -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT iifname eth0 tcp dport 3306 ct state new,established counter accept

Autoriser le trafic HTTP et HTTPS entrant

Pour autoriser un certain trafic de type f, voici la syntaxe des deux commandes :

linux@handbook:~$ iptables-translate -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
nft add rule ip filter INPUT ip protocol tcp tcp dport { 80,443} ct state new,established counter accept

Comme vous pouvez le voir sur ces exemples, la syntaxe est toujours assez similaire à celle d'iptables, mais les commandes sont un peu plus intuitives.

Journalisation avec nftables

L'option « counter » présente dans les exemples de commandes nft ci-dessus indique à nftables de compter le nombre de fois qu'une règle est touchée, comme iptables le faisait par défaut.

Dans nftables, ils sont facultatifs et doivent être spécifiés.

nft add rule ip filter INPUT ip saddr 192.168.2.1 counter accept

Nftables dispose d'options intégrées pour exporter votre configuration. Il prend actuellement en charge XML et JSON.

nft export xml

Conclusion

Dans cet article, j'ai expliqué pourquoi nftables est le nouveau choix recommandé en matière de pare-feu Linux. J'ai également répertorié de nombreuses différences entre les anciens iptables et les nouveaux nftables, y compris leurs fonctionnalités et leur syntaxe.

Ce guide vous a montré pourquoi envisager de passer à nftables et comment démarrer avec la nouvelle syntaxe avec laquelle vous devrez vous familiariser afin de réussir la mise à niveau de vos anciennes règles iptables.

Si vous avez des questions ou des suggestions, n'hésitez pas à me le faire savoir dans les commentaires.

Articles connexes: