iptables

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?
"… UNE Utilitaire Unix de l'espace utilisateur qui donne aux administrateurs système la possibilité de configurer les règles de filtrage de paquets IP implémentées par le module de filtrage réseau du noyau." Iptables agit comme un pare-feu en utilisant des règles de filtrage de paquets basées sur divers critères tels que l'adresse IP, le port et les protocoles.

Ce guide expliquera comment configurer et utiliser les règles iptables sur un système Ubuntu pour sécuriser votre réseau. Que vous soyez un utilisateur Linux novice 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 le pare-feu GUFW, une alternative graphique que vous pouvez utiliser pour travailler avec iptables.

REMARQUE: Pour utiliser et configurer iptables, vous aurez besoin des 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 Iptables, plongeons-nous dans le vif du sujet!

Comment utiliser iptables pour gérer le trafic IPv4?

Pour utiliser Iptables pour la gestion du réseau et du trafic IPv4, vous devez comprendre les éléments suivants :

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.

REMARQUE: 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 des règles iptables, commençons par comprendre les bases d'iptables, telles que la syntaxe générale et les arguments par défaut.

Considérez la commande ci-dessous :

sudo iptables -I INPUT -s 192.168.0.24 -j GOUTTE

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

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

Iptables 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 incluent :

Paramètre de règle Iptables La description
-s -source Spécifiez la source, qui peut être une adresse, un nom d'hôte ou un nom de réseau.
-p -protocole 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 -saut Définit l'action qu'iptables doit effectuer après avoir trouvé un paquet.
-o -out-interface Définit l'interface à travers laquelle iptable envoie le paquet.
-i -dans-interface Définit l'interface utilisée pour établir les paquets réseau.
-c-set-compteurs Permet à l'administrateur de définir les compteurs d'octets et de paquets pour une règle spécifiée.
-chaîne g-goto Le paramètre spécifie que le traitement doit se poursuivre dans la chaîne définie par l'utilisateur au retour.
-f -fragment Indique à iptables d'appliquer la règle uniquement au deuxième et aux fragments suivants des paquets fragmentés.

Options Iptables

La commande iptables prend en charge un large éventail d'options. Parmi les plus courants, citons :

Option La description
-A -append Ajoute une règle à la fin d'une chaîne spécifiée
-D-supprimer Supprime une règle de la chaîne spécifiée
-F-affleurant Supprime toutes les règles, une à la fois
-L -liste Affiche toutes les règles de la chaîne spécifiée
-je -insère Insère une règle dans la chaîne spécifiée (passée sous forme de nombre, lorsqu'aucun nombre n'est spécifié ; la règle est ajoutée en haut)
-C-vérifier Requêtes pour une correspondance de règle ; exigence dans une règle spécifiée
-v -verbeux Affiche plus de détails lorsqu'il est utilisé avec le paramètre -L
-N-nouvelle-chaîne Ajoute une nouvelle chaîne définie par l'utilisateur
-X -delete-chain Supprime une chaîne définie par l'utilisateur spécifique

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

REMARQUE: Les tables par défaut dépendront fortement de votre configuration Kernel et des modules installés.

Voici les tables iptables par défaut :

1 : Les tableaux de filtres

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

Chaîne La description
Contribution Iptables utilise cette chaîne pour tous les paquets entrants dans le système, je.e., paquets allant aux sockets du réseau local.
Production Iptables utilise la chaîne de sortie pour les paquets générés localement, je.e., paquets sortant du système.
Avant Cette chaîne est ce que les Iptables utilisent pour les paquets routés ou transférés 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 plage d'adresses privée avec le réseau public.

NAT a été développé pour prendre en charge le masquage des adresses IP réelles, permettant aux plages d'adresses IP privées d'atteindre le réseau extérieur. Cela aide à protéger les détails des réseaux internes contre la divulgation dans les réseaux publics.

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

Iptables a une table par défaut pour l'adressage NAT. Cette table a trois chaînes principales :

Chaîne La description
PRÉROUTAGE Permet la modification des informations sur les paquets avant d'arriver dans la chaîne INPUT utilisée pour les paquets entrants
PRODUCTION Réservé aux paquets créés localement, je.e., avant que le routage réseau ne se produise
POSTROUTAGE Permet la modification des paquets sortants - Paquets sortant de la chaîne OUTPUT

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 Mangle

La table mangle est principalement utilisée pour la 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 de réseau valides pour un paquet, etc.

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

Chaîne La description
PRÉROUTAGE Réservé aux paquets entrants
POSTROUTAGE Utilisé pour les paquets sortants
CONTRIBUTION Utilisé pour les paquets entrant directement dans le serveur
PRODUCTION 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 des exceptions pour les paquets qui ne sont pas destinés à être traité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 fonctionnalité 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 réseau.

La table brute a deux chaînes principales :

Chaîne La description
PRÉROUTAGE Réservé aux paquets reçus par les interfaces réseau
PRODUCTION Réservé aux paquets initiés par des processus locaux

5 : La table de sécurité

L'utilisation principale de cette table est de définir le mécanisme de sécurité interne Security Enhancement for 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 obligatoire et constitue la deuxième table accessible après la table de filtrage. Il propose les chaînes par défaut suivantes :

Chaîne La description
CONTRIBUTION Réservé aux paquets entrants vers le système
PRODUCTION Utilisé pour les paquets créés localement
AVANT Utilisé pour les paquets acheminés via le système

Après avoir examiné les Iptables par défaut, allons un peu 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 par ordre croissant. Cela signifie que la première règle d'un ensemble spécifique est appliquée en premier, suivie de la deuxième, puis de la troisième, et ainsi de suite, jusqu'à la dernière.

A cause de cette fonction, iptables vous empêche 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 d'Iptables

Pour afficher vos iptables, utilisez la commande iptables -L -v pour IPv4 et ip6tables -L -v pour IPv6.

Insertion de 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 autorisant les connexions entrantes au port 9001 via TCP, nous devons spécifier le numéro de règle à la chaîne INPUT adhérant aux règles de trafic pour le Web.

sudo iptables -I INPUT 1 -p TCP --dport 9001 -m state --state NEW -j ACCEPT

Une fois que vous avez affiché 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 la même manière que l'insertion, cependant, elle utilise la commande iptables -R. Par exemple, pour modifier la règle ci-dessus et définir le port 9001 sur Refuser, nous :

sudo iptables -R INPUT 1 -p TCP --dport 9001 -m state --state NEW -j REJECT

Suppression d'une règle

Pour supprimer une règle, on passe 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 distributions Linux, les iptables sont vides pour IPv4 et IPv6. Par conséquent, si vous n'avez ajouté aucune nouvelle règle, vous obtiendrez une sortie similaire à celle illustrée ci-dessous. C'est risqué car cela signifie que le système autorise tout le trafic entrant, sortant et routé.

Voyons comment configurer iptables :

Comment configurer 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.

Blocage et autorisation du trafic par 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 INPUT -j ACCEPTER -p TCP --destination-port 1001 -i wlan0

Les commandes ci-dessus autorisent le trafic sur le port 1001 TCP sur l'interface wlan0.

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0

Cette commande fait le contraire de la commande ci-dessus car elle bloque tout le trafic sur le port 1001 sur wlan0.

Voici une inspection minutieuse de la commande :

REMARQUE: Iptables ne comprend 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 explicitement.

Par example:

sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0 -d 192.168.0.24

Liste blanche et liste noire des adresses IP

Vous pouvez créer des règles de pare-feu en utilisant iptables. Un exemple consiste à arrêter tout le trafic et à autoriser le trafic réseau à partir d'adresses IP explicites uniquement.

Exemple:

iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
iptables -A INPUT -i lo -m comment --comment "Autoriser les connexions en boucle" -j ACCEPT
iptables -A INPUT -p icmp -m comment --comment "Autoriser Ping à fonctionner comme prévu" -j

J'ACCEPTE

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 BAISSE D'ENTRÉE
iptables -P FAIRE SUIVRE

La première ligne définit une règle pour autoriser toutes les adresses IP source dans le 192.168.0.1/24 sous-réseau. Vous pouvez également utiliser des adresses CIDR ou des adresses IP individuelles. Dans la commande suivante, nous définissons la règle pour autoriser tout le trafic connecté aux connexions existantes. Dans les commandes finales, nous définissons une politique pour INPUT et FORWARD pour supprimer tous.

Utiliser iptables sur IPv6

La commande Iptables ne fonctionne que sur IPv4. Pour utiliser iptables sur IPv6, vous devez utiliser la commande ip6tables. Ip6tables utilise des tables raw, filter, security et mangle. La syntaxe générale pour ip6tables est similaire à iptables, et elle prend également en charge les options correspondantes d'iptables telles que l'ajout, la suppression, etc.

Pensez à utiliser les pages de manuel ip6tables pour plus d'informations.

Exemple d'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é sur un système et des ports utilisés. Cependant, voici quelques règles de configuration réseau de base que vous pouvez utiliser pour sécuriser votre système :

1 : autoriser le trafic de l'interface de bouclage et rejeter tout bouclage provenant d'autres interfaces

iptables -A INPUT -i lo -j ACCEPT (Vous pouvez également utiliser ip6tables)
iptables -A ENTRÉE ! -je suis là -s 127.0.0.0 -j REJECT (ip6tables également applicable)

2: Refuser toutes les demandes de ping

iptables -A INPUT -p icmp -m state --state NOUVEAU --icmp-type 8 -j REJECT

3: Autoriser les connexions SSH

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

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.

MISE EN GARDE: 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 :

priorité ::ffff:0:0/96 100 trouvé dans /etc/gai.conf .

C'est parce que le gestionnaire de packages APT résout le domaine miroir dans IPv6 en raison de la mise à jour apt-get.

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 fichiers correspondants : règles IPv4 au fichier ip4 et règles IPv6 au fichier ip6.

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

sudo iptables-restauration < /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-persistant

Ubuntu et les distributions courantes basées sur Debian sont livrés avec un package iptables-persistent qui vous permet d'appliquer facilement vos règles de pare-feu au 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 au démarrage.

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

Comment installer iptables-persistent?

Assurez-vous que iptables-persistent est installé sur votre système. Utilisez dpkg pour vérifier si vous avez installé le paquet.

Sinon, utilisez la commande suivante :

sudo apt-get install iptables-persistent

Vous serez invité deux fois à 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 disposez du 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 elles seront appliquées automatiquement par iptables-persistent. Les fichiers sont de simples fichiers texte que vous pouvez facilement modifier à l'aide de n'importe quel éditeur de texte de votre choix.

Conclusion

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

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

Comment changer la taille, la couleur et le schéma du pointeur et du curseur de la souris sous Windows 10
Le pointeur et le curseur de la souris dans Windows 10 sont des aspects très importants du système d'exploitation. Cela peut également être dit pour d...
Moteurs de jeux gratuits et open source pour le développement de jeux Linux
Cet article couvrira une liste de moteurs de jeux gratuits et open source qui peuvent être utilisés pour développer des jeux 2D et 3D sur Linux. Il ex...
Tutoriel Shadow of the Tomb Raider pour Linux
Shadow of the Tomb Raider est le douzième ajout à la série Tomb Raider - une franchise de jeux d'action-aventure créée par Eidos Montréal. Le jeu a ét...