Configuration du pare-feu Kali avec iptables

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous apprendrez à configurer un pare-feu sur Kali Linux en utilisant iptables, un outil puissant pour gérer les règles de filtrage de paquets IP dans le noyau Linux. L'objectif principal est de comprendre et d'appliquer des règles de pare-feu afin d'améliorer la sécurité du réseau en contrôlant le trafic en fonction des adresses IP, des ports et des protocoles. À travers des activités pratiques étape par étape, vous visualiserez les règles iptables actuelles, bloquerez des adresses IP spécifiques, autoriserez le trafic sur des ports désignés et sauvegarderez vos configurations. En travaillant au sein d'un conteneur Kali Linux préconfiguré dans l'environnement VM LabEx, vous acquerrez des compétences concrètes dans la gestion des paramètres de pare-feu pour sécuriser le trafic réseau.

Installation et visualisation des règles iptables

Dans cette première étape, vous allez installer iptables et apprendre à visualiser les règles de pare-feu actuelles au sein du conteneur Kali Linux. C'est un point de départ essentiel pour comprendre la configuration existante du pare-feu avant d'y apporter des modifications.

Lorsque vous ouvrez le terminal dans l'environnement VM LabEx, vous êtes automatiquement connecté au shell du conteneur Kali Linux. Il n'est pas nécessaire de démarrer manuellement le conteneur ou d'entrer dans le shell ; l'environnement est déjà prêt pour vous. Commençons par installer iptables et explorer l'état actuel des règles du pare-feu.

iptables est un utilitaire en ligne de commande qui vous permet de gérer les règles de filtrage de paquets IP du noyau Linux. Ces règles déterminent la manière dont le trafic réseau est traité — qu'il s'agisse d'accepter, de rejeter ou de rediriger les paquets en fonction de critères spécifiques tels que l'IP source ou les numéros de port. La visualisation des règles vous permet de voir quelles politiques sont actuellement en place.

Tout d'abord, mettons à jour la liste des paquets et installons iptables. Tapez la commande suivante et appuyez sur Entrée :

apt update && apt install -y iptables

Cette commande mettra à jour la liste des paquets et installera iptables en une seule étape. L'opérateur && garantit que l'installation ne se poursuit que si la mise à jour réussit.

Sortie attendue (exemple, la sortie réelle peut varier) :

Get:1 http://mirrors.cloud.aliyuncs.com/kali kali-rolling InRelease [30.9 kB]
...
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
iptables is already the newest version (1.x.x-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Maintenant que iptables est installé, exécutez la commande suivante pour lister les règles iptables actuelles. Tapez la commande et appuyez sur Entrée :

iptables -L -v -n

Voici le détail de cette commande :

  • iptables : L'outil de gestion des règles de pare-feu.
  • -L : Liste toutes les règles dans les chaînes sélectionnées.
  • -v : Fournit une sortie détaillée (verbose), incluant les compteurs de paquets et d'octets.
  • -n : Affiche les adresses IP et les ports au format numérique sans résolution de nom.

Après avoir exécuté cette commande, vous verrez une sortie similaire à celle ci-dessous. La sortie exacte peut varier selon la configuration initiale du conteneur.

Sortie attendue (exemple, la sortie réelle peut varier) :

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

Cette sortie affiche les trois chaînes principales : INPUT pour le trafic entrant, FORWARD pour le trafic transitant par le système, et OUTPUT pour le trafic sortant. Chaque chaîne indique sa politique par défaut (comme ACCEPT) et les règles spécifiques si elles existent. Si les chaînes apparaissent vides, comme dans cet exemple, cela signifie qu'aucune règle personnalisée n'est appliquée pour le moment et que les politiques par défaut régissent tout le trafic.

Prenez un moment pour examiner la sortie. Il est crucial de comprendre l'état actuel de votre pare-feu avant d'ajouter ou de modifier des règles, ce que vous ferez dans les prochaines étapes. Cette étape fondamentale garantit que vous êtes familiarisé avec la configuration de départ d'iptables dans votre conteneur Kali Linux.

Comprendre les chaînes et les politiques iptables

Maintenant que vous avez installé iptables et visualisé les règles initiales, approfondissons votre compréhension du fonctionnement d'iptables avant de créer des règles personnalisées. Dans cette étape, vous découvrirez les différentes chaînes et leurs politiques par défaut.

iptables organise les règles de pare-feu en chaînes, qui sont des listes de règles auxquelles les paquets sont confrontés. Les trois principales chaînes intégrées sont :

  • INPUT : Gère les paquets destinés au système local.
  • FORWARD : Gère les paquets qui sont routés à travers le système.
  • OUTPUT : Gère les paquets provenant du système local.

Chaque chaîne possède une politique par défaut qui détermine ce qu'il advient des paquets qui ne correspondent à aucune règle spécifique. Les politiques les plus courantes sont ACCEPT (autoriser le paquet) et DROP (rejeter le paquet sans réponse).

Examinons de plus près les paramètres de politique actuels. Exécutez la commande suivante pour voir des informations détaillées sur chaque chaîne :

iptables -L -v -n --line-numbers

L'option --line-numbers ajoute des numéros de ligne à chaque règle, ce qui facilite la référence à des règles spécifiques par la suite.

Sortie attendue (exemple, la sortie réelle peut varier) :

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

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

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

Notez que toutes les chaînes ont actuellement une politique ACCEPT, ce qui signifie que si aucune règle spécifique ne correspond à un paquet, il sera autorisé à passer. Les compteurs de paquets et d'octets affichent 0 car aucun trafic n'a encore été traité dans cet environnement de conteneur tout neuf.

La compréhension de ces principes fondamentaux est cruciale avant d'ajouter des règles personnalisées, car vous devez savoir comment les paquets circulent dans le système et quel sera le comportement par défaut pour le trafic non filtré.

Blocage d'une adresse IP spécifique

Maintenant que iptables est installé, passons à la configuration de votre pare-feu en bloquant le trafic provenant d'une adresse IP spécifique. Il s'agit d'une mesure de sécurité courante pour empêcher les accès indésirables ou les menaces potentielles provenant d'une source particulière.

Bloquer une adresse IP avec iptables signifie créer une règle pour rejeter (drop) les paquets entrants provenant de cette adresse. Lorsqu'un paquet est rejeté avec DROP, le système l'ignore purement et simplement, interrompant ainsi toute communication depuis l'IP spécifiée. Pour cet exercice, vous bloquerez le trafic d'une adresse IP hypothétique, 192.168.1.100, comme exemple sûr pour pratiquer dans l'environnement du conteneur.

Tapez la commande suivante dans le terminal du conteneur Kali Linux et appuyez sur Entrée pour ajouter une règle qui bloque tout le trafic entrant provenant de 192.168.1.100 :

iptables -A INPUT -s 192.168.1.100 -j DROP

Analysons cette commande :

  • iptables : L'outil de gestion des règles de pare-feu.
  • -A INPUT : Ajoute (Append) une règle à la chaîne INPUT, qui gère le trafic entrant.
  • -s 192.168.1.100 : Spécifie l'adresse IP source (source) à faire correspondre pour cette règle.
  • -j DROP : Définit l'action à entreprendre (jump) : rejeter les paquets de l'adresse IP spécifiée.

Il n'y aura pas de sortie immédiate après l'exécution de cette commande, ce qui indique que la règle a été ajoutée avec succès à la chaîne INPUT.

Pour confirmer que la règle est bien en place, exécutez la commande suivante pour lister les règles iptables actuelles et appuyez sur Entrée :

iptables -L -v -n

Sortie attendue (exemple, la sortie réelle peut varier) :

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0

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

Cette sortie montre une règle sous la chaîne INPUT qui rejette tout le trafic provenant de 192.168.1.100. Les compteurs de paquets (pkts) et d'octets (bytes) afficheront probablement 0, à moins qu'une tentative de trafic depuis cette IP n'ait eu lieu.

En terminant cette étape, vous avez réussi à ajouter une règle pour bloquer le trafic d'une adresse IP spécifique. Cette compétence est vitale pour restreindre l'accès provenant de sources indésirables ou malveillantes. Dans l'étape suivante, vous apprendrez comment autoriser le trafic sur des ports spécifiques pour permettre les services nécessaires tout en maintenant la sécurité.

Autorisation du trafic sur un port spécifique

Après avoir bloqué une adresse IP, la compétence suivante la plus importante est d'autoriser le trafic sur des ports spécifiques pour permettre l'accès aux services nécessaires. Dans cette étape, vous ajouterez une règle pour autoriser le trafic entrant sur un port désigné à l'aide d'iptables.

Les ports sont utilisés par les services réseau pour communiquer sur un réseau. Par exemple, les serveurs web utilisent souvent le port 80 pour le trafic HTTP. Autoriser le trafic sur un port spécifique signifie créer une règle pour accepter les paquets entrants destinés à ce port, garantissant ainsi que le service associé est accessible. Pour cet exercice, vous autoriserez le trafic sur le port 80 à titre d'exemple pratique.

Tapez la commande suivante dans le terminal du conteneur Kali Linux et appuyez sur Entrée pour ajouter une règle qui accepte le trafic TCP entrant sur le port 80 :

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Analysons cette commande :

  • iptables : L'outil de gestion des règles de pare-feu.
  • -A INPUT : Ajoute une règle à la chaîne INPUT pour le trafic entrant.
  • -p tcp : Spécifie le protocole TCP, couramment utilisé pour des services comme le HTTP.
  • --dport 80 : Indique le port de destination (destination port) comme étant le 80.
  • -j ACCEPT : Définit l'action à entreprendre : accepter les paquets correspondant à cette règle.

Il n'y aura pas de sortie immédiate après l'exécution de cette commande, ce qui indique que la règle a été ajoutée avec succès.

Pour vérifier que la règle est en place, exécutez la commande suivante pour lister les règles iptables actuelles et appuyez sur Entrée :

iptables -L -v -n

Sortie attendue (exemple, la sortie réelle peut varier) :

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       all  --  *      *       192.168.1.100        0.0.0.0/0
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

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

Cette sortie montre la règle sous la chaîne INPUT pour accepter le trafic TCP sur le port 80, aux côtés de la règle précédente pour rejeter le trafic de 192.168.1.100. Les compteurs afficheront probablement 0 à moins qu'un trafic correspondant à cette règle n'ait eu lieu.

En terminant cette étape, vous avez appris comment autoriser le trafic sur un port spécifique, ce qui est essentiel pour permettre l'accès à des services tels que les serveurs web tout en sécurisant les autres ports. Dans l'étape suivante, vous sauvegarderez ces configurations pour vous assurer qu'elles puissent être consultées ou rechargées ultérieurement.

Sauvegarde de la configuration iptables

Dans cette dernière étape, vous apprendrez comment sauvegarder votre configuration iptables au sein du conteneur Kali Linux. La sauvegarde des règles est importante car elles sont stockées par défaut en mémoire vive et seraient perdues si le conteneur redémarrait. Cette étape garantit que vous pouvez conserver vos paramètres de pare-feu pour une consultation ultérieure ou un rechargement.

Par défaut, les règles iptables n'existent que dans la mémoire d'exécution du système. Les sauvegarder dans un fichier vous permet de garder une trace de votre configuration, ce qui peut être utile pour la documentation ou pour restaurer les règles plus tard à l'aide d'iptables-restore. Pour cet exercice, vous sauvegarderez les règles dans un fichier situé dans le répertoire /root du conteneur.

Tapez la commande suivante dans le terminal du conteneur Kali Linux et appuyez sur Entrée pour sauvegarder les règles iptables actuelles dans un fichier nommé iptables-rules dans le répertoire /root :

iptables-save > /root/iptables-rules

Analysons cette commande :

  • iptables-save : Exporte les règles iptables actuelles de la mémoire vers la sortie standard.
  • > /root/iptables-rules : Redirige la sortie vers un fichier nommé iptables-rules dans le répertoire /root, en l'écrasant s'il existe déjà.

Il n'y aura pas de sortie immédiate après l'exécution de cette commande, ce qui indique que les règles ont été sauvegardées avec succès dans le fichier spécifié.

Pour confirmer que les règles ont été correctement sauvegardées, visualisez le contenu du fichier en tapant la commande suivante et en appuyant sur Entrée :

cat /root/iptables-rules

Sortie attendue (exemple, la sortie réelle peut varier) :

## Generated by iptables-save v1.x.x on ...
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.1.100/32 -j DROP
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
COMMIT
## Completed on ...

Cette sortie affiche la configuration sauvegardée, incluant les règles pour rejeter le trafic de 192.168.1.100 et accepter le trafic sur le port 80. Le format est compatible avec iptables-restore, qui pourrait être utilisé pour recharger ces règles si nécessaire.

En terminant cette étape, vous avez réussi à sauvegarder votre configuration iptables dans un fichier. Cette pratique est essentielle pour préserver les paramètres du pare-feu dans des scénarios réels, même si l'environnement du conteneur peut ne pas conserver les modifications après un redémarrage. Vous maîtrisez désormais les compétences de base pour gérer une configuration de pare-feu élémentaire avec iptables.

Résumé

Dans cet atelier, vous avez appris les bases de la configuration d'un pare-feu sur Kali Linux en utilisant iptables dans un environnement conteneurisé. Vous avez commencé par visualiser les règles iptables actuelles pour comprendre l'état initial du pare-feu. Ensuite, vous avez mis à jour la liste des paquets et installé iptables pour préparer votre système. Par la suite, vous avez ajouté des règles pour bloquer le trafic provenant d'une adresse IP spécifique et autoriser le trafic sur un port désigné, renforçant ainsi le contrôle sur l'accès au réseau. Enfin, vous avez sauvegardé votre configuration dans un fichier pour référence ultérieure. Ces étapes vous ont permis d'acquérir des compétences fondamentales dans la gestion de la sécurité réseau grâce au filtrage du trafic avec iptables.