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