Tutoriel nftables

Tutoriel nftables

Ce tutoriel explique comment travailler avec le pare-feu Linux NFTABLE. Ce contenu est optimisé à la fois pour les utilisateurs expérimentés de Linux et de nouveaux.

Nftables est un composant du noyau Linux offrant des fonctionnalités de pare-feu. C'est le remplacement des iptables.

Après avoir lu ce tutoriel, vous comprendrez les règles des NFTables et vous pourrez créer votre pare-feu. Vous n'avez pas besoin de connaissances préalables sur les iptables.

Tous les exemples de ce tutoriel contiennent des captures d'écran, ce qui facilite la tâche de tous les utilisateurs de Linux, indépendamment de leur niveau de connaissances, de les comprendre et de les implémenter.

Début avec nftables

Avant de démarrer, créez et ouvrez un fichier à l'aide d'un éditeur de texte comme Nano ou VI pour commencer à taper vos premières règles NFTABLE en fonction de l'exemple suivant. Ne pas copier-coller; Tapez tout.

pare-feu nano.NFT

L'exemple de ce tutoriel est assez simple et montre un pare-feu restrictif dans lequel tout le trafic IPv4 est abandonné à l'exception de Loopback et de ports spécifiques.

Dans la capture d'écran précédente, j'ai utilisé la première ligne pour définir mon réseau local (192.168.0.0/16) comme LinuxHintnet.

définir LinuxHintnet = 192.168.0.0/16

Dans la deuxième ligne, je définis un groupe de ports (80 443 et 22). J'appelle ce groupe Allowports parce que je prévois d'autoriser le trafic à travers eux. Autorports est un nom arbitraire.

Définir Allowports = 80,443,53,22

Ensuite, j'ajoute une table, qui est un conteneur ou un groupe de chaînes et de règles; Les deux sont expliqués ci-dessous. Les tableaux aident les règles et les chaînes à organiser. J'ai appelé le tableau dans l'exemple «restrictif» car il contient une politique restrictive, et son nom est arbitraire.

L'IP avant le nom du tableau indique que les règles de table Que ne seront appliquées qu'au trafic IPv4. Vous pouvez utiliser INET au lieu de l'IP pour appliquer des règles aux protocoles IPv4 et IPv6. Ou vous pouvez remplacer IP par IP6 pour IPv6 uniquement.

Rappelez-vous, restrictif est un nom que j'ai défini arbitrairement. Vous pouvez nommer la table comme vous le souhaitez.

Dans mon cas, j'applique des règles uniquement à IPv4, comme indiqué ci-dessous.

Ajouter la table IP restrictive

Pour les deux protocoles, utilisez ce qui suit:

Ajouter la table INET restrictive

Ensuite, nous ajoutons la première chaîne de base, que je nomme arbitrairement entrant car elle est liée au trafic entrant. Cependant, vous pouvez le nommer comme vous le souhaitez.

La chaîne de base suivante abandonne tout le trafic entrant par défaut:

  • Ajouter une chaîne IP restrictive entrante: cette section ajoute la chaîne entrante restrictive à appliquer à IPv4
  • Filtre de type: cela définit le type de chaîne comme un filtre car il filtrera le trafic. D'autres types de chaînes possibles sont l'itinéraire ou le nat
  • Entrée de crochet: fait référence aux paquets entrants
  • Priorité 0: La priorité de la chaîne de base définit l'ordre des chaînes de base
  • Drop de stratégie: la stratégie de dépôt, par défaut, rejette tous les paquets
Ajouter une chaîne IP restrictive entrante Type Filter Hook Priorité 0; baisse de politique;

Comme vous pouvez le voir dans la capture d'écran suivante, j'ai créé deux autres chaînes de base similaires à la redirection restrictive précédente et restrictive. La différence est le crochet défini pour chacun (crochet en avant et sortie de crochet). Les expliquer est répétitif.

Après les trois chaînes de base, nous pouvons continuer les règles NFTRALS pour permettre le trafic de bouclage.

J'ajoute les lignes suivantes pour le trafic entrant et sortant sur l'interface de bouclage.

Ajouter la règle IP restrictive entrante iifname lo compteur accepter
Ajouter la règle IP restrictive entrante oifname lo compteur accepter

Maintenant, j'ajoute quatre règles en acceptant le trafic TCP et UDP sortant et entrant dans tous les ports inclus dans la variable $ ALLANTORTS définis au début du fichier.

Ajouter la règle IP restrictive TCP Sport entrant $ ALLANTORTS COMPTORS ACCEPT
Ajouter la règle IP restrictive TCP DPPORT $ ALLANTORTS COMPTORT ACCEPT
Ajouter la règle IP restrictive entrante UDP Sport $ ALLANTORTS COMPTORS ACCEPT
Ajouter la règle IP restrictive UDP DPPORT $ ALLANTORTS COMPRENDRE ACCEPTER

Vous pouvez voir le script complet ci-dessous.

Une fois que vous avez fini de taper vos tables, chaînes et règles, fermez le document et enregistrez les modifications.

# Dans les deux premières lignes, je définis mon réseau local (LinuxHintnet) et un ensemble de ports (80,
# 443,22) pour permettre le trafic à travers eux dans les règles ci-dessous.
définir LinuxHintnet = 192.168.0.0/16
Définir Allowports = 80,443,53,22
#Je déclare un nouveau tableau qui contiendra des chaînes et des règles. J'appelle ce tableau "restrictif".
#La "IP" applique les règles à IPv4 uniquement. Pour IPv6, utilisez uniquement "IP6" et utilisez "INET" pour les deux protocoles.
Ajouter la table IP restrictive
# Après avoir créé la table, je crée trois chaînes, entrants, redirigez et sortant,
#Les noms sont arbitraires. Tous abandonnent le trafic entrant, sortant et transfert par défaut.
Ajouter une chaîne IP restrictive entrante Type Filter Hook Priorité 0; baisse de politique;
Ajouter la chaîne IP Redirection restrictive Type Filtre Hook Forward Priority 0; baisse de politique;
Ajouter une chaîne IP restrictive sortante Type Filtre Hook Sortie Priorité 0; baisse de politique;
# J'implémente deux règles pour permettre le trafic de bouclage.
Ajouter la règle IP restrictive entrante iifname lo compteur accepter
Ajouter la règle IP restrictive entrante oifname lo compteur accepter
# J'implémente les règles pour permettre le trafic via des ports définis dans la variable AllyPorts.
Ajouter la règle IP restrictive TCP Sport entrant $ ALLANTORTS COMPTORS ACCEPT
Ajouter la règle IP restrictive TCP DPPORT $ ALLANTORTS COMPTORT ACCEPT
Ajouter la règle IP restrictive entrante UDP Sport $ ALLANTORTS COMPTORS ACCEPT
Ajouter la règle IP restrictive UDP DPPORT $ ALLANTORTS COMPRENDRE ACCEPTER

Pour activer le pare-feu, exécutez la commande suivante:

SUDO NFT -F pare-feu.NFT

Vous pouvez vérifier vos règles en exécutant la commande suivante:

SUDO NFT Liste de règles

C'est un pare-feu restrictif de base.

Conclusion:

Comme vous pouvez le voir, NFTABS est beaucoup plus sympathique que les iptables, et les utilisateurs peuvent apprendre les NFTABLES plus rapidement que les iptables. Puisque Iptables est en cours de cession, et de nombreuses distributions utilisent NFTABLE comme pare-feu par défaut, y compris Debian. Les utilisateurs expérimentés iptables souhaitent peut-être regarder l'outil iptables-nftables-compat, qui traduit les iptables en nftables. Cela peut les aider à comprendre les différences.

Les utilisateurs professionnels comme les administrateurs système ont tendance à continuer de travailler avec Iptables; Évitez d'ignorer les NFTables pour gagner du temps tout en améliorant le filtrage. J'espère que cet article était assez simple pour vous convaincre d'essayer nftables.