Ubuntu iptables comment contrôler le trafic réseau à l'aide d'iptables?

Ubuntu iptables comment contrôler le trafic réseau à l'aide d'iptables?
"… UN Utilitaire UNIX de l'espace utilisateur qui donne aux administrateurs système la possibilité de configurer les règles de filtrage des paquets IP implémentées par le module de filtre net du noyau." Les iptables agissent comme un pare-feu à l'aide de règles de filtrage des paquets en fonction de divers critères tels que l'adresse IP, le port et les protocoles.

Ce guide discutera de la façon de configurer et d'utiliser les règles iptables sur un système Ubuntu pour sécuriser votre réseau. Que vous soyez un utilisateur novice Linux ou un administrateur système chevronné, à partir de ce guide, et d'une manière ou d'une autre, vous apprendrez quelque chose d'utile sur iptables.

Iptables est préinstallé sur Ubuntu et la plupart des distributions basées sur Debian. Ubuntu emballe également Gufw Firewall, une alternative graphique que vous pouvez utiliser pour travailler avec iptables.

NOTE: Pour utiliser et configurer les iptables, vous aurez besoin de privilèges sudo sur votre système. Vous pouvez en savoir plus sur Sudo à partir du tutoriel suivant.

Maintenant que vous savez ce qu'est les iptables!

Comment utiliser les iptables pour gérer le trafic IPv4?

Pour utiliser les iptables pour le réseau IPv4 et la gestion du trafic, vous devez comprendre ce qui suit:

La commande iptables

Iptables propose une sélection d'options qui vous permettent de personnaliser et de régler vos règles iptables. Discutons de certains de ces paramètres et voyons ce qu'ils font.

NOTE: Vous pouvez configurer un ensemble de règles qui gèrent un sous-ensemble spécifique, appelé chaînes iptables.

Paramètres iptables

Avant de commencer à créer et à configurer les règles iptables, comprenons d'abord les bases des iptables, tels que la syntaxe générale et les arguments par défaut.

Considérez la commande ci-dessous:

sudo iptables -i entrée -s 192.168.0.24 -J Drop

La commande ci-dessus dit aux iptables de créer une règle dans la chaîne. La règle laisse tomber tous les paquets de l'adresse IP 192.168.0.24.

Examinons la commande, ligne par ligne, pour mieux la comprendre.

  • La première commande iptables appelle l'utilitaire de ligne de commande iptables.
  • Ensuite, l'argument est -I utilisé pour l'insertion. L'argument d'insertion ajoute une règle au début de la chaîne iptables et se fait donc attribuer une priorité plus élevée. Pour ajouter une règle à un numéro spécifique dans la chaîne, utilisez l'argument -i suivi du numéro où la règle doit être attribuée.
  • L'argument -s aide à spécifier la source. Par conséquent, nous utilisons l'argument -s suivi de l'adresse IP.
  • Le paramètre -j avec iptables spécifie le saut vers une cible spécifique. Cette option définit l'action que les iptables doivent effectuer une fois qu'il y a un paquet assorti. Iptable propose quatre cibles principales par défaut, celles-ci incluent: accepter, tomber, log et rejeter.

Iptable propose une sélection de paramètres que vous pouvez utiliser pour configurer diverses règles. Les différents paramètres que vous pouvez utiliser pour configurer les règles iptables comprennent:

Paramètre de règle iptables Description
-S -Source Spécifiez la source, qui peut être une adresse, un nom d'hôte ou un nom de réseau.
-p -protocol Spécifie le protocole de connexion; Par exemple, TCP, UDP, etc.
-D-DESTINATION Spécifie la destination, qui peut être une adresse, un nom de réseau ou un nom d'hôte.
-J-Jump Définit l'action que les iptables doivent effectuer après avoir trouvé un paquet.
-O -out-interface Définit l'interface à travers laquelle l'iptable envoie le paquet.
-I -in-interface Définit l'interface utilisée pour établir des paquets réseau.
-C -Set-Counters Permet à l'administrateur de définir les compteurs d'octets et de paquets pour une règle spécifiée.
-G -Goto Chain Le paramètre spécifie que le traitement doit se poursuivre dans la chaîne de set utilisateur à retour.
-F-Fragment Dit aux iptables d'appliquer la règle uniquement au second et suivant les fragments des paquets fragmentés.

Options iptables

La commande iptables prend en charge un large éventail d'options. Certains communs incluent:

Option Description
-A -PPENDE Ajoute une règle à la fin d'une chaîne spécifiée
-D -delete Supprime une règle de la chaîne spécifiée
-F -flush Supprime toutes les règles, une à la fois
-L -List Montre toutes les règles de la chaîne spécifiée
-I -insert Insère une règle dans la chaîne spécifiée (passée en nombre, quand il n'y a pas de numéro spécifié; la règle est ajoutée en haut)
-C-chier Requêtes pour une correspondance de règles; exigence dans une règle spécifiée
-V -Verbose Affiche plus de détails lorsqu'il est utilisé avec le paramètre -l
-N -new-chain Ajoute une nouvelle chaîne définie par l'utilisateur
-X-Delete-Chain Supprime une chaîne spécifique définie par l'utilisateur

Tables iptables

Le noyau Linux a des tables par défaut qui abritent un ensemble de règles connexes. Ces tables par défaut ont un ensemble de chaînes par défaut, mais les utilisateurs peuvent personnaliser les règles en ajoutant des règles définies par l'utilisateur.

NOTE: Les tables par défaut dépendront fortement de votre configuration du noyau et des modules installés.

Voici les tables iptables par défaut:

1: les tables de filtre

La table de filtre est une table par défaut qui contient des chaînes utilisées pour le filtrage des paquets réseau. Certaines des chaînes par défaut de ce tableau comprennent:

Chaîne Description
Saisir Les iptables utilisent cette chaîne pour tous les paquets entrants au système, je.e., paquets allant aux prises de réseau locales.
Sortir Les iptables utilisent la chaîne de sortie pour les paquets générés localement, i.e., paquets sortant du système.
Avant Cette chaîne est ce que les iptables utilisent pour les paquets acheminés ou transmis via le système.

2: les tables NAT

NAT ou Network Address Table est un périphérique de routage utilisé pour modifier les adresses IP source et cible dans un paquet réseau. L'utilisation principale de la table NAT est de connecter deux réseaux dans une gamme d'adresses privées avec le réseau public.

NAT a été développé pour prendre en charge le masquage d'adresses IP réelles, permettant à l'adresse IP privée de s'adapter au réseau extérieur. Cela aide à protéger les détails sur les réseaux internes contre les réseaux publics.

La table NAT est utilisée lorsqu'un paquet initie une nouvelle connexion.

Iptables a un tableau par défaut pour l'adressage NAT. Ce tableau a trois chaînes principales:

Chaîne Description
Prurotinage Permet la modification des informations de paquets avant d'arriver dans la chaîne d'entrée utilisée pour les paquets entrants
SORTIR Réservé aux paquets créés localement, je.e., Avant que le routage du réseau ne se produise
Postal Permet la modification des paquets sortants - les paquets quittant la chaîne de sortie

Le diagramme ci-dessous montre un aperçu de haut niveau de ce processus.

Utilisez la commande ci-dessous pour afficher vos tables de routage NAT.

iptables -t nat -n -v -l

3: Les tables de mange

La table Mangle est principalement utilisée pour une modification spéciale des paquets. En termes simples, il est utilisé pour modifier les en-têtes IP d'un paquet réseau. La modification des paquets peut inclure la modification d'une valeur TTL du paquet, la modification des sauts réseau valides pour un paquet, etc.

Le tableau contient les chaînes par défaut suivantes:

Chaîne Description
Prurotinage Réservé aux paquets entrants
Postal Utilisé pour les paquets sortants
SAISIR Utilisé pour les paquets qui arrivent directement dans le serveur
SORTIR Utilisé pour les paquets locaux
Avant Réservé aux paquets acheminés via le système

4: Les tables brutes

Le but principal de la table brute est de configurer les exceptions pour les paquets qui ne sont pas destinés à être gérés par le système de suivi. La table brute définit une marque Notrack sur les paquets, incitant la fonction Conntrack à ignorer le paquet.

Conntrack est une fonction de mise en réseau du noyau Linux qui permet au noyau Linux de suivre toutes les connexions réseau, permettant au noyau d'identifier les paquets constituant un flux de réseau.

La table brute a deux chaînes principales:

Chaîne Description
Prurotinage Réservé pour les paquets reçus par les interfaces réseau
SORTIR Réservé aux paquets initiés par les processus locaux

5: La table de sécurité

L'utilisation principale de ce tableau est de définir l'amélioration de la sécurité interne pour le mécanisme de sécurité Linux (SELINUX) qui marque sur les paquets. La marque de sécurité peut être appliquée par connexion ou paquet.

Il est utilisé pour les règles de contrôle d'accès obligatoires et est le deuxième tableau accessible après la table de filtre. Il propose les chaînes par défaut suivantes:

Chaîne Description
SAISIR Réservé aux paquets entrants au système
SORTIR Utilisé pour les paquets créés localement
AVANT Utilisé pour les paquets acheminés via le système

Après avoir regardé les iptables par défaut, allons plus loin et discutons de la façon de travailler avec les règles iptables.

Comment travailler avec les règles iptables?

Les règles iptables sont appliquées dans l'ordre croissant. Cela signifie que la première règle dans un ensemble spécifique est appliquée en premier, suivie par la deuxième, puis la troisième, et ainsi de suite, jusqu'au dernier.

En raison de cette fonction, les iptables vous empêchent d'ajouter des règles dans un ensemble en utilisant le paramètre -a; Vous devez utiliser le -i, suivi du numéro ou en le vidant pour ajouter en haut de la liste.

Affichage des iptables

Pour afficher vos iptables, utilisez la commande iptables -l -v pour ipv4 et ip6tables -l -v pour ipv6.

Insérer des règles

Pour insérer des règles dans un ensemble, vous devez les positionner dans l'ordre exact, en respectant les règles utilisées par la même chaîne. Vous pouvez afficher la liste de vos règles iptables avec la commande comme indiqué ci-dessus:

sudo iptables -l -v

Par exemple, pour insérer une règle permettant des connexions entrantes au port 9001 sur TCP, nous devons spécifier le numéro de règle à la chaîne d'entrée adhérant aux règles de trafic pour le Web.

sudo iptables -i entrée 1 -p tcp --dport 9001 -m état --state new -j accepter

Une fois que vous avez vu les iptables actuels, vous devriez voir la nouvelle règle dans l'ensemble.

sudo iptables -l -v

Remplacement des règles

La fonctionnalité de remplacement fonctionne de manière similaire à l'insertion, cependant, il utilise la commande iptable -r. Par exemple, pour modifier la règle ci-dessus et définir le port 9001 pour nier, nous:

sudo iptables -r entrée 1 -p tcp --dport 9001 -m State --state new -j rejet

Supprimer une règle

Pour supprimer une règle, nous passons le numéro de règle. Par exemple, pour supprimer la règle ci-dessus, nous pouvons spécifier comme:

Sudo iptables -d entrée 1

Dans la plupart des distros Linux, les iptables sont vides pour IPv4 et IPv6. Par conséquent, si vous n'avez pas ajouté de nouvelle règle, vous obtiendrez une sortie similaire à celle ci-dessous. C'est risqué car cela signifie que le système autorise tous les trafics entrants, sortants et routés.

Rendons dans la façon de configurer les iptables:

Comment configurer les iptables?

Il existe de nombreuses façons de configurer les règles iptables. Cette section utilise des exemples pour vous montrer comment définir des règles à l'aide d'adresses IP et de ports.

Bloquer et permettre le trafic par les ports

Vous pouvez utiliser un port spécifique pour bloquer ou autoriser tout le trafic sur une interface réseau. Considérez les exemples suivants:

sudo iptables -a entrée -j accepter -p tcp --destation-port 1001 -i wlan0

Les commandes ci-dessus permettent le trafic sur le port 1001 TCP sur l'interface WLAN0.

sudo iptables -a entrée -j drop -p tcp --destation-port 1001 -i wlan0

Cette commande fait l'opposé de la commande ci-dessus car elle bloque tout le trafic sur le port 1001 sur WLAN0.

Voici une inspection étroite de la commande:

  • Le premier argument (-a) ajoute une nouvelle règle à la fin de la chaîne de table.
  • L'argument d'entrée ajoute la règle spécifiée au tableau.
  • L'argument Drop définit l'action à effectuer comme accepter et tomber, respectivement. Cela signifie qu'une fois qu'un paquet est assorti, il est abandonné.
  • -P spécifie le protocole comme TCP et permet de passer le trafic sur d'autres protocoles.
  • -Le port de destination définit la règle pour accepter ou supprimer tout le trafic destiné au port 1001.
  • -Je dit aux iptables d'appliquer la règle au trafic à venir sur l'interface WLAN0.

NOTE: Les iptables ne comprennent pas les alias d'interface réseau. Ainsi, dans un système avec plus d'une interface virtuelle, vous devrez définir l'adresse de destination manuellement et explicite.

Par exemple:

sudo iptables -a entrée -j drop -p tcp --destation-port 1001 -i wlan0 -d 192.168.0.24

Adresses IP de liste blanche et de liste noire

Vous pouvez créer des règles de pare-feu à l'aide d'iptables. Un exemple est en arrêtant tout le trafic et en autorisant le trafic réseau à partir d'adresses IP explicites uniquement.

Exemple:

iptables -a entrée -m État - État établi, lié -J accepter
iptables -a entrée -i lo -m commentaire - comment "Autoriser les connexions de bouclage" -j accepter
iptables -a entrée -p ICMP -m Commentaire - COMMENT "Permettez au ping de fonctionner comme prévu" -J

ACCEPTER

iptables -a entrée -s 192.168.0.1/24 -J accepter
iptables -a entrée -s 192.168.0.0 -J accepter
Iptables -p Drop d'entrée
Iptables -p Drop en avant

La première ligne définit une règle pour permettre toutes les adresses IP source dans le 192.168.0.1/24 sous-réseau. Vous pouvez également utiliser des adresses IP CIDR ou individuelles. Dans la commande suivante, nous définissons la règle pour permettre à tout le trafic connecté aux connexions existantes. Dans les commandes finales, nous définissons une stratégie pour les entrées et les avant.

Utilisation des iptables sur IPv6

La commande iptables fonctionne uniquement sur IPv4. Pour utiliser iptables sur IPv6, vous devez utiliser la commande ip6tables. IP6Tables utilise des tables brutes, filtrantes, de sécurité et de mange. La syntaxe générale pour IP6Tables est similaire aux iptables, et il prend également en charge les options iptables correspondantes telles que APPEND, DELETE, etc.

Envisagez d'utiliser les pages manuelles IP6Tables pour plus d'informations.

Exemple de ensembles de règles iptables pour la sécurité du réseau

La création de règles de pare-feu appropriées dépendra principalement du service exécuté d'un système et des ports utilisés. Cependant, voici quelques règles de configuration du réseau de base que vous pouvez utiliser pour sécuriser votre système:

1: Autoriser le trafic d'interface de bouclage et rejeter toutes les boucles provenant d'autres interfaces

iptables -a entrée -i lo -j accepter (vous pouvez également utiliser ip6tables)
Iptables -Une entrée ! -i lo -s 127.0.0.0 -J Rejet (IP6Tables également applicables)

2: refuser toutes les demandes de ping

iptables -a entrée -p ICMP -M State - State New --icmp-Type 8 -J Rejet

3: Autoriser les connexions SSH

iptables -a entrée -p tcp --dport 22 -m état --state new -j accepter

Ce sont des exemples de commandes que vous pouvez utiliser pour sécuriser votre système. Cependant, la configuration dépendra fortement de quoi ou de qui vous souhaitez accéder à divers services.

AVERTIR: Si vous préférez désactiver complètement IPv6, assurez-vous de décommenter la ligne car cela ralentira le processus de mise à jour:

Précédence :: FFFF: 0: 0/96 100 trouvé dans / etc / gai.confli .

En effet.

Comment déployer des règles iptables?

Pour déployer vos iptables sur Ubuntu ou d'autres systèmes basés sur Debian, commencez par créer deux fichiers, IP4 et IP6, pour leurs adresses IP respectives.

Dans l'un ou l'autre fichier, ajoutez les règles que vous souhaitez appliquer dans leurs règles Fichiers IPV4 correspondantes aux règles de fichier IP4 et d'IPv6 au fichier IP6.

Ensuite, nous devons importer les règles à l'aide de la commande:

sudo iptables-restore < /tmp/ip4 (replace filename for IPv6)

Ensuite, vous pouvez vérifier si les règles se sont appliquées à l'aide de la commande:

sudo iptables -l -v

Un guide rapide iptables

Ubuntu et les distributions communes basées sur Debian, sont livrées avec un package iptables qui vous permet d'appliquer facilement vos règles de pare-feu lors du redémarrage. Le package fournit des fichiers que vous pouvez utiliser pour définir des règles pour IPv4 ou IPv6 et peut être appliqué automatiquement lors du démarrage.

Vous pouvez également utiliser des règles de pare-feu à l'aide de UFW ou GUFW. Considérez le tutoriel suivant pour apprendre à utiliser UFW.

Comment installer iptables persistant?

Assurez-vous que vous avez installé des iptables sur votre système. Utilisez DPKG pour vérifier si le package est installé.

Sinon, utilisez la commande suivante:

sudo apt-get install iptables persistant

Vous serez invité à deux fois pour enregistrer vos règles IPv4 et IPv6 actuelles. Cliquez sur oui pour enregistrer les deux règles.

Cliquez sur oui pour enregistrer IPv6.

Une fois l'installation terminée, vérifiez que vous avez le sous-répertoire iptables, comme indiqué dans l'image ci-dessous.

Vous pouvez maintenant utiliser les règles.v4 et règles.V6 pour ajouter des règles iptables, et ils seront appliqués automatiquement par des iptables. Les fichiers sont des fichiers texte simples que vous pouvez facilement modifier en utilisant n'importe quel éditeur de texte de votre choix.

Conclusion

Dans ce tutoriel, nous avons couvert les bases des iptables. Commencer par travailler avec iptables, commandes de base, tables iptables par défaut et paramètres.

D'après ce que vous avez appris, vous devriez être en mesure d'utiliser des iptables pour créer des règles de pare-feu qui aident à sécuriser votre système.