Retour au blog

Configuration d'un pare-feu Iptables : règles et commandes de base

Configuration d'un pare-feu Iptables : règles et commandes de base

Introduction

Iptables​ est un outil en ligne de commande ​pare-feu ​. Cela signifie qu'il s'agit d'un logiciel qui vous permet de configurer un pare-feu sur votre système. Il est généralement disponible par défaut sur ​Linux​ . Dans ce guide, nous allons ​aborder certaines des règles et commandes courantes associées au pare-feu iptables​. Chaque fois qu'une connexion tente de s'établir avec votre système, le pare-feu se réfère à ces règles pour déterminer quelle doit être la prochaine étape.

Commandes Iptables

Ce guide présentera certaines des commandes iptables les plus essentielles. Pour suivre ce guide, vous devrez avoir une compréhension de base de ce qu'est iptables et de son fonctionnement. Cela vous aidera à mieux appréhender les règles que vous mettez en œuvre avec les commandes suivantes. N'oubliez pas que toutes les commandes indiquées ci-dessous peuvent être utilisées de manière isolée. D'un autre côté, vous pouvez également les combiner pour répondre à vos besoins spécifiques.

Choses à garder à l'esprit

Avant de poursuivre votre lecture, voici quelques éléments à garder à l'esprit :

  • L'ordre des règles dans iptables est important.
  • Pour ajouter une nouvelle règle à la fin d'une chaîne, votre ​iptables commande devra utiliser le ​-A.​​
  • Si vous souhaitez ajouter la règle à une autre position, vous devez utiliser l'option ​-I . Cette option vous permet de spécifier l'emplacement exact de la règle. Si vous souhaitez placer la règle au début de la chaîne, n'indiquez tout simplement pas de numéro de règle.
  • Pour vous assurer d'avoir un accès constant à votre serveur, bloquez le trafic SSH sur le port 22 par défaut.
  • Si vous ne le faites pas et perdez l'accès à votre serveur, vous pouvez vous reconnecter à l'aide de la console. Autorisez le trafic SSH pour modifier les paramètres du pare-feu.
  • Si vous souhaitez un jour passer en revue le jeu de règles actuellement en place, utilisez les commandes sudo iptables -S​ et ​ ​sudo iptables -L.

De plus, nous disposons d'un ​guide détaillé sur la façon de lister et de supprimer les règles de pare-feu iptables​, qui vous aidera également à tirer le meilleur parti de votre pare-feu iptables.

Maintenant que les prérequis sont réglés, plongeons dans certaines des ​commandes iptables courantes​:

Comment sauvegarder vos règles

Nous commencerons par déterminer comment vous pouvez sauvegarder vos règles. Il est important de noter que les règles iptables sont éphémères. Cela signifie qu'elles seront perdues après le redémarrage de votre système, à moins que vous ne les sauvegardiez. Voici comment vous pouvez sauvegarder manuellement vos nouvelles règles sur les serveurs ​Ubuntu​ et ​CentOS​ respectifs :

  • Ubuntu

Le moyen le plus simple de sauvegarder vos nouvelles règles sur un serveur Ubuntu est d'utiliser le paquet iptables-persistent​ . Vous pouvez facilement ​créer un serveur Ubuntu en suivant ce tutoriel​.

Maintenant, la première étape pour sauvegarder vos nouvelles règles iptables consiste à installer le paquet iptables-persistent ​en utilisant apt-get. Voici comment vous pouvez l'obtenir :

Iptables Firewall 1

Pendant le processus d'installation, vous devez décider si vous souhaitez sauvegarder les règles de pare-feu actuellement en place. Pour mettre à jour les règles à la place et sauvegarder les modifications, utilisez cette commande :

Iptables Firewall 2

La commande ci-dessus fonctionne généralement pour les versions d'Ubuntu ultérieures à 16.04. Si vous utilisez une version antérieure, utilisez plutôt cette commande :

  • CentOS

Vous pouvez configurer votre pare-feu avec iptables sur CentOS 6 ou les versions antérieures. CentOS 7 utilise plutôt FirewallD. Suivez ce tutoriel pour apprendre à configurer FirewallD sur CentOS 7.

Vous pouvez sauvegarder vos nouvelles règles sur CentOS en utilisant le script d'initialisation ​iptables . Consultez la commande suivante :

Cette commande sauvegardera vos nouvelles règles pour le pare-feu iptables. Les règles iptables actuellement actives se trouvent dans le fichier /etc/sysconfig/iptables​ .

Commandes Iptables utiles

Passons maintenant à quelques commandes de pare-feu iptables très utiles que vous pourriez avoir besoin d'utiliser sur votre serveur.

  • Connexions de bouclage (Loopback)

Tout d'abord, nous allons explorer comment vous pouvez autoriser les connexions de bouclage. Votre système utilise une interface de bouclage pour s'envoyer des connexions. Par exemple, imaginez que vous ayez exécuté cette commande : ​ping localhost​ ou ​ping 127.0.0.1​. Votre serveur utilisera une interface de bouclage, ou une lo​, pour s'envoyer un ping à lui-même. D'autres fois, le serveur peut l'utiliser si votre serveur d'application est configuré pour se connecter à l'adresse « localhost ».

Quelle que soit la situation, vous devez vous assurer que votre pare-feu iptables ne bloque pas ces connexions. Par conséquent, vous devrez autoriser les connexions de bouclage pour permettre à ces fonctions de s'exécuter.

Voici les commandes que vous allez exécuter pour autoriser tout le trafic arrivant sur l'interface de bouclage :

Iptables Firewall 3

  • Connexions entrantes établies et associées

Un autre type de connexion que vous devrez peut-être autoriser est la connexion sortante. Pour vous assurer que votre serveur reçoit et envoie respectivement le trafic entrant et sortant, vous devez autoriser les connexions entrantes établies et associées. Cela permet au serveur d'envoyer du trafic de retour vers les connexions sortantes. Utilisez cette commande pour autoriser les connexions entrantes établies ainsi que les connexions associées :

Established and Related Incoming Connections

  • Connexions sortantes établies

Le serveur enverra généralement des réponses aux connexions entrantes sous la forme de trafic sortant de connexions établies. Pour les autoriser, utilisez la commande suivante :

Established Outgoing Connections

  • De l'interne vers l'externe

Parfois, vous pouvez même avoir besoin de configurer votre pare-feu pour donner l'accès interne vers l'externe. Par défaut, votre réseau externe devrait être ​eth0​ et ​eth1 devrait être votre réseau interne. Si c'est le cas, utilisez cette commande pour activer l'accès :

Internal to External

  • Abandon des paquets invalides

Parfois, certains paquets de trafic réseau seront étiquetés comme invalides. La plupart du temps, vous pouvez simplement abandonner ces paquets invalides. Pour ce faire, utilisez la commande suivante :

Dropping Invalid Packets

Règles pour bloquer les adresses IP

Ensuite, nous allons examiner quelques commandes que vous pouvez utiliser pour bloquer les connexions provenant de certaines adresses IP. Pour faciliter les choses, nous utiliserons l'adresse IP ​15.15.15.51 comme exemple dans nos commandes. Vous pouvez remplacer cette valeur par votre adresse IP spécifique.

Dans ​-s 15.15.15.51, ​​le ​-s​ signifie source. Ainsi, la commande spécifie l'adresse IP source « 15.15.15.51 ». De même, vous pouvez spécifier l'adresse IP source dans n'importe quelle règle de pare-feu. Cela inclut la règle d'autorisation et de rejet.

Si vous souhaitez rejeter la connexion, vous utiliserez REJECT à la place de DROP dans la commande comme ceci :

En conséquence, votre serveur renverra une erreur « connexion refusée » chaque fois que cette adresse IP particulière enverra une demande de connexion.

  • Blocage des connexions vers une interface spécifique

Il vous est possible de bloquer toutes les demandes de connexion provenant d'une adresse IP particulière vers une interface réseau particulière. Dans notre exemple, l'adresse IP est 15.15.15.51​ et l'interface réseau est ​eth0​. Utilisez cette commande pour bloquer les connexions :

L'avantage est que vous pouvez spécifier l'interface réseau dans n'importe quelle règle. Cela signifie que n'importe quelle règle peut être appliquée et limitée à un réseau spécifique uniquement.

Règles pour le service : SSH

SSH ​devient pertinent si vous utilisez un serveur cloud. Dans ce cas, vous devez autoriser les connexions SSH entrantes sur le port 22. L'activation de ces connexions vous permet de vous connecter à votre serveur et de le gérer. Ici, nous aborderons un certain nombre de règles courantes relatives à SSH.

  • Autoriser toutes les connexions SSH entrantes

Les commandes suivantes activent toutes les connexions SSH entrantes :

Dans l'ensemble ci-dessus, vous n'avez besoin d'utiliser la deuxième commande que si la politique ​OUTPUT​ n'est pas définie sur ​ACCEPT​. Elle autorise le trafic sortant des connexions SSH établies.

  • Autoriser le SSH entrant depuis un sous-réseau

La commande précédente autorise toutes les connexions entrantes. Vous pouvez utiliser les commandes suivantes pour autoriser uniquement les connexions entrantes provenant d'une adresse IP ou d'un sous-réseau spécifique. Supposons que vous souhaitiez uniquement autoriser les connexions entrantes provenant du sous-réseau ​15.15.15.0/24​ :

Comme précédemment, vous n'avez besoin d'utiliser la deuxième commande que si la politique ​OUTPUT​ n'est pas définie sur ​ACCEPT​. Elle autorise le trafic sortant des connexions SSH établies.

  • Autoriser le SSH sortant

Utilisez ces commandes si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ​ACCEPT​ et que vous souhaitez activer les connexions SSH. Cela permettra à votre serveur d'initier des connexions SSH vers d'autres serveurs :

Pour aller plus loin avec SSH sur vos serveurs cloud, consultez nos tutoriels sur ​ comment utiliser SSH to connecter à un serveur distant sous Ubuntu ​et comment configurer votre serveur Linux pour utiliser l'authentification par clé SSH​.

  • Autoriser le Rsync entrant depuis un sous-réseau

Rsync​ est une fonctionnalité que vous pouvez utiliser pour transférer des fichiers d'un système à un autre. Elle fonctionne sur le port 873. Ainsi, si vous souhaitez autoriser les connexions Rsync entrantes sur le port 873 depuis une adresse IP ou un sous-réseau spécifique, utilisez les commandes suivantes :

Comme vous pouvez le voir, nous avons spécifié l'adresse IP source ainsi que le port de destination. Vous n'utiliserez la deuxième commande que si la politique ​OUTPUT​ du pare-feu n'est pas définie sur ​ACCEPT​. Elle autorise le trafic sortant des connexions Rsync établies. De plus, vous pouvez consulter notre ​tutoriel sur l'utilisation de Rsync pour synchroniser des répertoires locaux et distants sur un VPS​.

Règles pour le service : Serveur Web

Les connexions HTTP sont généralement reçues sur le port 80. De même, le HTTPS arrive généralement sur le port 443. Les serveurs web comme ​Apache​ et ​Nginx​ écoutent ces ports pour intercepter les demandes de connexion. Parfois, les paramètres par défaut peuvent amener votre serveur à rejeter ou ignorer ces requêtes entrantes. C'est pourquoi vous devrez définir de nouvelles règles pour autoriser le trafic.

  • Autoriser toutes les connexions HTTP entrantes

Vous pouvez autoriser toutes les connexions HTTP entrantes sur le port 80 avec ces commandes :

Vous n'utiliserez la deuxième commande que si la politique ​OUTPUT​ du pare-feu n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions HTTP établies.

  • Autoriser toutes les connexions HTTPS entrantes

Utilisez ces commandes pour autoriser toutes les demandes de connexion HTTPS entrantes sur le port 443 :

Vous n'utiliserez la deuxième commande que si la politique du pare-feu iptables ​OUTPUT​ n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions HTTP établies.

  • Autoriser toutes les connexions entrantes depuis HTTP et HTTPS

Vous pouvez utiliser le module multiport si vous souhaitez autoriser le trafic provenant des ports HTTP et HTTPS. Utilisez ces commandes si tel est le cas :

Vous n'utiliserez la deuxième commande que si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions HTTP et HTTPS établies.

Règles pour le service : MySQL

Parfois, un client peut utiliser un serveur distant pour accéder à votre ​MySQL​ serveur de base de données. Dans ce cas, vous devez autoriser manuellement le trafic entrant depuis le port concerné. MySQL écoute les demandes de connexion sur le port 3306.

  • Autoriser les connexions MySQL entrantes depuis un sous-réseau

Vous devrez spécifier la source si vous souhaitez autoriser les connexions MySQL depuis un sous-réseau particulier. Dans notre exemple, nous autoriserons le trafic entrant provenant du 15.15.15.0/24​ sous-réseau à l'aide de ces commandes :

Vous n'utiliserez la deuxième commande que si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions MySQL établies.

  • Activer les connexions MySQL vers une interface

Si vous souhaitez également spécifier quelle interface réseau doit recevoir les connexions MySQL, vous pouvez utiliser ces commandes :

Dans ce cas, nous autorisons les connexions à une interface réseau privée appelée eth1​.

Vous n'utiliserez la deuxième commande que si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions MySQL établies.

Vous pouvez suivre notre ​tutoriel pour une configuration facile de MySQL sur votre serveur​.

Règles pour le service : PostgreSQL

Votre client peut utiliser un serveur distant pour accéder à votre ​PostgreSQL​ serveur de base de données. Dans ce cas, vous devez autoriser ces connexions entrantes. Ces connexions passeront par le port 5432.

  • Autoriser les connexions PostgreSQL entrantes depuis un sous-réseau

Vous pouvez utiliser les commandes suivantes pour autoriser les connexions PostgreSQL entrantes depuis un sous-réseau ou une adresse IP particulière. Comme vous pouvez le voir, nous avons spécifié la source qui est le ​15.15.15.0/24​ sous-réseau.

Vous n'utiliserez la deuxième commande que si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ACCEPT​. Il autorise le trafic sortant des connexions PostgreSQL établies.

  • Activation des connexions PostgreSQL vers une interface spécifique

Si vous souhaitez autoriser uniquement les connexions PostgreSQL vers une interface réseau particulière, utilisez ces commandes :

Dans ce cas, nous autorisons les connexions à une interface réseau privée appelée eth1​. Vous n'utiliserez la deuxième commande que si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ​ACCEPT​. Elle autorise le trafic sortant des connexions PostgreSQL établies.

Suivez ce ​tutoriel pour installer PostgreSQL sur votre serveur Ubuntu​.

Règles pour le service : Mail

Vous devrez peut-être également configurer votre pare-feu en fonction du serveur de messagerie que vous utilisez. Par exemple, ​Sendmail​ et ​Postfix​ peuvent recevoir des connexions sur un certain nombre de ports différents. Cela dépend du protocole que vous utilisez pour la distribution du courrier. Pour bloquer et autoriser certaines connexions de messagerie, vous devez savoir quel protocole vous utilisez.

  • Autoriser les connexions SMTP entrantes

Les connexions SMTP arrivent généralement sur le port 25. Bien que le protocole SMTP utilise également couramment le port 587 pour le courrier sortant. Pour autoriser votre serveur à répondre à ces connexions, utilisez les commandes suivantes :

Vous n'utiliserez la deuxième commande que si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions SMTP établies.

  • Autoriser toutes les connexions IMAP entrantes

Pour autoriser votre serveur à répondre à toutes les connexions IMAP entrantes sur le port 143, saisissez et exécutez simplement ceci :​

Vous n'utiliserez la deuxième commande que si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions IMAP établies.

  • Autoriser toutes les connexions IMAPS entrantes

Utilisez ces commandes pour permettre à votre serveur de répondre aux connexions IMAPS sur le port 993 :

Vous n'utiliserez la deuxième commande que si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions IMAPS établies.

  • Autoriser toutes les connexions POP3 entrantes

Ces connexions arriveront sur le port 993. Si vous souhaitez que votre serveur réponde aux demandes de connexion IMAPS, utilisez les commandes suivantes :

Vous n'utiliserez la deuxième commande que si la politique du pare-feu ​OUTPUT​ n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions POP3 établies.

  • Autoriser toutes les connexions POP3S entrantes

Utilisez ces commandes pour autoriser votre serveur à établir des connexions avec les requêtes POP3S arrivant sur le port 995 :

Vous n'utiliserez la deuxième commande que si la politique ​OUTPUT du pare-feu n'est pas définie sur ACCEPT​. Elle autorise le trafic sortant des connexions POP3S établies.

  • Comment bloquer le courrier SMTP sortant

Au lieu d'autoriser les connexions entrantes et d'activer la réponse du serveur, vous pouvez souhaiter bloquer complètement le courrier sortant. Vous pouvez bloquer tout le courrier SMTP sortant sur le port 25 à l'aide de cette commande :

Par conséquent, tout le trafic sortant sur le port 25 sera rejeté par le pare-feu iptables. Vous pouvez utiliser la même structure de commande si vous souhaitez rejeter tout autre service. Il vous suffit de remplacer le port 25 par le numéro de port correspondant.

Conclusion

Ce guide couvre les commandes essentielles du pare-feu iptables. Il vous fournit les outils indispensables pour configurer efficacement votre pare-feu iptables. Gardez à l'esprit qu'il n'existe pas de solution universelle. Ces commandes sont extrêmement flexibles. Cela signifie que vous pouvez les utiliser de la manière qui vous convient le mieux, à vous et à vos besoins.

Bonne informatique !

author

Manpreet Singh

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.