GNU/Linux >> Tutoriels Linux >  >> Linux

iptables vs nftables :quelle est la différence ?

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 ne connaissez peut-être pas encore nftables, un nouveau venu destiné à nous offrir des mises à niveau indispensables et à remplacer à terme les iptables vieillissants.

Pourquoi nftables au lieu d'iptables ?

Le 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.

Outre 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 gagne récemment en popularité à mesure que l'adoption se généralise. Le changement est lent dans le monde Linux, et les utilitaires obsolètes mettent souvent quelques années ou plus à être 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 ravi à l'idée de devoir apprendre un tout nouvel utilitaire, ne vous inquiétez pas, nous vous avons couvert 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 :entrée, sortie et transfert. 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 en cours d'examen 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 pas avec des chaînes de base, ce qui rend la configuration un peu plus flexible.

Un domaine d'inefficacité pour iptables est que tous 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é les chaînes ou non, iptables vérifie toujours vos données réseau par rapport à elles.

Installation de 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 les nftables démarrent 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 qu'iptables. Soyons honnêtes, la syntaxe d'iptables a toujours été peu claire et a demandé un effort supplémentaire pour apprendre. Heureusement pour ceux qui migrent depuis iptables, nftables accepte toujours l'ancienne syntaxe.

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

Installez iptables-translate sur la distribution basée sur 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 à partir de l'adresse IP 192.168.2.1 :

[email protected]:~$ 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 à taper dans iptables lors du renforcement d'un serveur Linux.

[email protected]:~$ 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 depuis 192.168.1.0/24 :

[email protected]:~$ 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 :

[email protected]:~$ 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 :

[email protected]:~$ 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 encore assez similaire à 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 a des 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 la mise à niveau vers 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.


Linux
  1. Linux vs Unix :Quelle est la différence ?

  2. Quelle est la différence entre InnoDB et MyISAM ?

  3. Quelle est la différence entre fsck et e2fsck ?

  4. Quelle est la différence entre ls et l ?

  5. Quelle est la différence entre unlink et rm ?

SIGTERM vs SIGKILL :Quelle est la différence ?

DevOps vs ingénieur logiciel :quelle est la différence ?

Qu'est-ce qu'un Hyperviseur ? Quelle est la différence entre les types 1 et 2 ?

Quelle est la différence entre curl et Wget ?

HTTP vs HTTPS :quelle est la différence ?

Quelle est la différence entre les chaînes OUTPUT et FORWARD dans iptables ?