Tutoriel Iptables : sécuriser un VPS avec un pare-feu Linux

Tutoriel Iptables : sécuriser un VPS avec un pare-feu Linux

Vous cherchez un tutoriel complet sur iptables pour votre VPS ? Cet article vous montrera comment installer et utiliser iptables sur un système Ubuntu.

Suivez-nous et apprenez à sécuriser votre VPS avec l’interface de ligne de commande et un outil de pare-feu Linux.

Iptables est un programme de pare-feu pour Linux. Il surveille le trafic en provenance et à destination de votre serveur à l’aide de tableaux. Ces tableaux contiennent des ensembles de règles, appelés chaînes, qui filtrent les paquets de données entrants et sortants.

Comment fonctionne iptables ?

Lorsqu’un paquet correspond à une règle, il se voit attribuer une cible, qui peut être une autre chaîne ou l’une de ces valeurs spéciales :

  • ACCEPT – autorise le passage du paquet.
  • DROP – ne laisse pas passer le paquet.
  • RETURN – arrête le paquet qui traverse une chaîne et lui demande de revenir à la chaîne précédente.

Dans ce tutoriel d’iptables, nous allons travailler avec l’une des tables par défaut, appelée filter. Elle se compose de trois chaînes :

  • INPUT – contrôle les paquets entrants vers le serveur.
  • FORWARD – filtre les paquets entrants qui seront transférés ailleurs.
  • OUTPUT – filtre les paquets qui sortent de votre serveur.

Avant de commencer ce guide, assurez-vous d’avoir un accès SSH root ou sudo à votre machine fonctionnant sous Ubuntu 22.04 ou supérieur. Vous pouvez établir la connexion via PuTTY (Windows) ou le terminal shell (Linux, macOS). Si vous possédez un plan VPS Hostinger, vous pouvez obtenir les détails de connexion SSH dans l’onglet Serveurs de hPanel.

Important ! les règles Iptables ne s’appliquent qu’à l’ipv4. Si vous souhaitez mettre en place un pare-feu pour le protocole ipv6, vous devrez utiliser ip6tables à la place.

Comment installer et utiliser le pare-feu Linux iptables

Nous diviserons ce tutoriel iptables en trois étapes. Tout d’abord, vous apprendrez à installer l’outil sur Ubuntu. Ensuite, nous vous montrerons comment définir les règles. Enfin, nous verrons la mise en place de changements persistants dans iptables.

1. Installer iptables

Iptables est préinstallé dans la plupart des distributions Linux. Cependant, si vous ne l’avez pas par défaut dans votre système Ubuntu/Debian, suivez les étapes ci-dessous :

  1. Connectez-vous à votre serveur via SSH.
  2. Exécutez les commandes suivantes une par une :
sudo apt-get update
sudo apt-get install iptables
  1. Vérifiez l’état de votre configuration iptables actuelle en exécutant la commande suivante
sudo iptables -L -v

Ici, l’option -L est utilisée pour lister toutes les règles, et -v pour afficher les informations dans un format plus détaillé. Voici un exemple de sortie :

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Le pare-feu Linux iptables est maintenant installé. À ce stade, vous remarquerez que toutes les chaînes sont réglées sur ACCEPT et n’ont pas de règles. Ce n’est pas sûr car n’importe quel paquet peut passer sans être filtré.

Ne vous inquiétez pas, nous vous apprendrons à définir des règles dans l’étape suivante.

2. Définir les règles de la chaîne

Définir une règle signifie l’ajouter à la chaîne. Pour ce faire, il faut insérer l’option -A (Append) juste après la commande iptables, comme suit :

sudo iptables -A

Cela alertera iptables que vous ajoutez de nouvelles règles à une chaîne. Ensuite, vous pouvez combiner la commande avec d’autres options, telles que :

  • -i (interface) – l’interface réseau dont vous souhaitez filtrer le trafic, par exemple eth0, lo, ppp0, etc.
  • -p (protocol) – le protocole réseau dans lequel se déroule le processus de filtrage. Il peut s’agir de tcp, udp, udplite, icmp, sctp, icmpv6, etc. Vous pouvez également taper all pour choisir tous les protocoles.
  • -s (source) – l’adresse d’où provient le trafic. Vous pouvez ajouter un nom d’hôte ou une adresse IP.
  • -dport (destination port) – le numéro du port de destination d’un protocole, tel que 22 (SSH), 443 (https), etc.
  • -j (target) – le nom de la cible (ACCEPT, DROP, RETURN). Vous devez insérer ce nom à chaque fois que vous créez une nouvelle règle.

Si vous souhaitez les utiliser toutes, vous devez écrire les commandes dans cet ordre :

sudo iptables -A <chain> -i <interface> -p <protocol (tcp/udp) > -s <source> --dport <port no.>  -j <target>

Une fois que vous avez compris la syntaxe de base, vous pouvez commencer à configurer le pare-feu pour plus de sécurité. Pour ce tutoriel, nous allons utiliser la chaîne INPUT comme exemple.

Activation du trafic sur localhost

Pour autoriser le trafic sur localhost, tapez cette commande :

sudo iptables -A INPUT -i lo -j ACCEPT

Nous utiliserons l’interface lo ou loopback pour cette démonstration. Elle est utilisée pour toutes les communications sur l’hôte local. La commande ci-dessus permet de s’assurer que les connexions entre une base de données et une application web sur la même machine fonctionnent correctement.

Activation des connexions sur les ports HTTP, SSH et SSL

Ensuite, nous voulons que les connexions http (port 80), https (port 443) et ssh (port 22) fonctionnent comme d’habitude. Pour ce faire, nous devons spécifier le protocole (-p) et le port correspondant (-dport). Vous pouvez exécuter ces commandes une par une :

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

Il est temps de vérifier si les règles ont été ajoutées dans iptables :

sudo iptables -L -v

Il devrait renvoyer les résultats ci-dessous, ce qui signifie que toutes les connexions au protocole TCP à partir des ports spécifiés seront acceptées :

Le port de destination accepté dans iptables qui comprend http, https et ssh

Filtrage des paquets en fonction de la source

Iptables vous permet de filtrer les paquets sur la base d’une adresse IP ou d’une plage d’adresses IP. Pour ce faire, vous devez la spécifier après l’option -s. Par exemple, pour accepter les paquets provenant de 192.168.1.3, la commande serait la suivante :

sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT

Vous pouvez également rejeter les paquets provenant d’une adresse IP spécifique en remplaçant la cible ACCEPT par DROP.

sudo iptables -A INPUT -s 192.168.1.3 -j DROP

Si vous souhaitez supprimer des paquets provenant d’une plage d’adresses IP, vous devez utiliser l’option -m et le module iprange. Ensuite, spécifiez la plage d’adresses IP avec l’option -src-range. N’oubliez pas qu’un trait d’union doit séparer la plage d’adresses IP sans espace, comme ceci :

sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP

Le filtrage des paquets en fonction de leur source est crucial si vous utilisez un système de détection et de prévention des intrusions (IDS/IPS) comme Suricata. Cet outil surveille votre réseau VPS et vous informe du trafic malveillant.

L’IDS/IPS indique l’origine des paquets malveillants, que vous pouvez ajouter à la liste de blocage d’iptables. Consultez notre article pour en savoir plus sur comment installer Suricata sur Ubuntu

Bloquer tout autre trafic

Il est essentiel d’utiliser la cible DROP pour tous les autres trafics après avoir défini les règles -dport. Cela empêchera une connexion non autorisée d’accéder au serveur via d’autres ports ouverts. Pour ce faire, il suffit de taper

sudo iptables -A INPUT -j DROP

Désormais, la connexion en dehors du port spécifié sera interrompue.

Suppression de règles

Si vous souhaitez supprimer toutes les règles et repartir de zéro, vous pouvez utiliser l’option -F (flush) :

sudo iptables -F

Cette commande efface toutes les règles en vigueur. Toutefois, pour supprimer une règle spécifique, vous devez utiliser l’option -D. Tout d’abord, vous devez afficher toutes les règles disponibles en entrant la commande suivante :

sudo iptables -L --line-numbers

Vous obtiendrez une liste de règles avec des numéros :

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     all -- 192.168.0.4          anywhere
2    ACCEPT     tcp -- anywhere             anywhere tcp dpt:https
3    ACCEPT     tcp -- anywhere             anywhere tcp dpt:http
4    ACCEPT     tcp -- anywhere             anywhere tcp dpt:ssh

Pour supprimer une règle, insérez la chaîne correspondante et le numéro dans la liste. Disons que pour ce tutoriel, nous voulons éliminer la règle numéro trois de la chaîne INPUT. La commande devrait être :

sudo iptables -D INPUT 3

Alternativement, si vous avez besoin de filtrer uniquement le trafic entrant, vous pouvez utiliser le pare-feu VPS de Hostinger. Sélectionnez votre VPS et accédez à la section Pare-feu.

Créez une nouvelle configuration, donnez-lui un nom et spécifiez les règles de trafic entrant que vous préférez :

3. Rendre les modifications persistantes

Les règles iptables que nous avons créées ne sont sauvegardées que dans une mémoire temporaire. Cela signifie que nous devons les sauvegarder dans un fichier pour pouvoir les charger à nouveau après un redémarrage. Pour effectuer ces changements, vous pouvez utiliser les commandes suivantes, selon que vous sauvegardez des règles IPv4 ou IPv6 :

sudo iptables-save > /etc/iptables/rules.v4
sudo iptables-save > /etc/iptables/rules.v6

Maintenant, à chaque fois que vous redémarrez votre VPS, vous devrez charger les règles sauvegardées avec les commandes suivantes :

sudo iptables-restore < /etc/iptables/rules.v4
sudo iptables-restore < /etc/iptables/rules.v6

Si vous souhaitez que le processus de chargement soit entièrement automatique, vous pouvez configurer le paquet iptables-persistent qui se chargera de charger les règles.

sudo apt-get install iptables-persistent

Après l’installation, il vous sera demandé de sauvegarder les règles actuelles. Choisissez Yes pour IPv4 et IPv6 et terminez la configuration. Maintenant, le processus de chargement sera automatique. Gardez à l’esprit que vous devrez toujours utiliser la commande sudo iptables-save à chaque fois que vous apporterez des modifications à iptables.

Conclusion

Iptables est un puissant programme de pare-feu que vous pouvez utiliser pour sécuriser votre serveur Linux ou VPS – vous pouvez définir diverses règles en fonction de vos préférences.

Dans ce tutoriel sur iptables, vous avez appris à installer et à utiliser cet outil. Maintenant, nous espérons que vous pouvez gérer vos ensembles de règles pour filtrer les paquets entrants et sortants.

Il est temps de le tester vous-même. Bonne chance !

Découvrez comment mieux protéger votre système Linux

Comment configurer OpenVPN sur un VPS
Comment configurer le pare-feu UFW dans Ubuntu

Author
L'auteur

Fatima Z.

Fatima Zahra est une passionnée du marketing digital et de l'IT, elle fait partie de l'équipe du contenu de notre site web pour apporter à nos chers internautes une meilleure expérience client. Ses passes- temps impliquent le blogging et l'apprentissage des langues pour se connecter véritablement au cœur avec les autres.