accueil > Gestion réseau > iptables

iptables : Gestion des règles de pare-feu sous Linux

iptables est un utilitaire en ligne de commande qui permet de configurer et de gérer les règles de filtrage de paquets IPv4 et de NAT (Network Address Translation) en utilisant le framework Netfilter du noyau Linux. Il permet de contrôler le trafic réseau et de renforcer la sécurité du système. iptables définit les règles de traitement des paquets en utilisant les concepts de chaînes (chains) et de tables (tables).

Aperçu

iptables implémente la politique de sécurité du système en définissant des règles pour les paquets réseau entrants et sortants. Chaque règle spécifie une action (cible) telle que ACCEPT (accepter), DROP (ignorer) ou REJECT (rejeter) pour les paquets qui correspondent à des conditions spécifiques. Les chaînes INPUT, OUTPUT et FORWARD sont principalement utilisées, et les chaînes PREROUTING et POSTROUTING sont également utilisées pour les fonctions NAT.

Fonctionnalités principales

  • Filtrage de paquets (pare-feu)
  • Traduction d'adresses réseau (NAT)
  • Redirection et transfert de ports
  • Contrôle du trafic basé sur des adresses IP, ports, protocoles spécifiques

Options principales

La commande iptables est utilisée avec diverses options pour ajouter, supprimer, modifier des règles spécifiques ou pour afficher les règles actuelles.

Gestion des règles

Conditions de correspondance

Cibles (Actions)

Commande générée :

Essayez de combiner les commandes.

Description:

`iptables` Exécute la commande.

Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.

Exemples d'utilisation

Voici des exemples de configuration de règles de pare-feu courantes à l'aide d'iptables. Il est toujours recommandé de sauvegarder vos règles actuelles avant d'en ajouter de nouvelles.

Afficher toutes les règles actuelles

sudo iptables -L -v -n

Affiche les règles avec des informations détaillées et les adresses IP en format numérique.

Autoriser SSH (port 22)

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

Autorise les connexions SSH entrantes depuis l'extérieur.

Bloquer une adresse IP spécifique

sudo iptables -A INPUT -s 192.168.1.100 -j DROP

Bloque tout le trafic entrant provenant d'une adresse IP spécifique (par exemple, 192.168.1.100).

Autoriser tout le trafic sortant

sudo iptables -P OUTPUT ACCEPT

Définit la politique par défaut de la chaîne OUTPUT pour autoriser tout le trafic sortant du système.

Redirection de port pour serveur web (80 -> 8080)

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

Redirige les requêtes entrantes sur le port 80 vers le port 8080 local. (Utilise la table NAT)

Masquerade pour réseau interne (NAT)

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Modifie l'adresse IP source du trafic du réseau interne lorsqu'il sort par l'interface externe (par exemple, eth0). (Utilise la table NAT)

Installation

iptables est préinstallé sur la plupart des distributions Linux. S'il n'est pas installé, vous pouvez l'installer en utilisant les commandes suivantes.

Debian/Ubuntu

sudo apt update
sudo apt install iptables

CentOS/RHEL/Fedora

sudo dnf install iptables

Conseils et précautions

Les règles iptables peuvent disparaître lors du redémarrage du système, il est donc important de savoir comment sauvegarder les règles de manière permanente. Faites également attention à l'ordre des règles et aux politiques par défaut lors de la configuration.

Sauvegarde permanente des règles

Les règles iptables sont volatiles par défaut et doivent être sauvegardées pour persister après un redémarrage. Les méthodes recommandées varient selon la distribution.

  • **Debian/Ubuntu** : Installez `sudo apt install iptables-persistent`, puis sauvegardez les règles avec la commande `sudo netfilter-persistent save`. Les règles sont sauvegardées dans `/etc/iptables/rules.v4` et `/etc/iptables/rules.v6`.
  • **CentOS/RHEL/Fedora** : Installez `sudo dnf install iptables-services`, puis activez le service avec `sudo systemctl enable iptables && sudo systemctl start iptables`, et sauvegardez les règles avec `sudo iptables-save > /etc/sysconfig/iptables`.
  • **Méthode générale** : Sauvegardez les règles dans un fichier avec `sudo iptables-save > /path/to/rules.v4`, puis créez un script qui charge le fichier avec la commande `sudo iptables-restore < /path/to/rules.v4` au démarrage.

Importance de l'ordre des règles

Les règles iptables sont appliquées séquentiellement, de haut en bas, dans une chaîne. Lorsqu'un paquet correspond à une règle spécifique, l'action de cette règle est exécutée et les règles suivantes ne sont pas vérifiées. Il est donc important de placer les règles plus spécifiques (par exemple, bloquer une IP spécifique) avant les règles plus générales (par exemple, autoriser tout le trafic HTTP).

Précautions lors de la définition de la politique par défaut

Soyez très prudent lorsque vous définissez la politique par défaut d'une chaîne (par exemple, `iptables -P INPUT DROP`). Avant de changer la politique par défaut en DROP, vous devez d'abord ajouter des règles d'autorisation pour les services essentiels tels que les connexions SSH. Sinon, toutes les connexions réseau au système seront bloquées, rendant l'accès impossible.

Transition vers nftables

Dans les distributions Linux récentes, `nftables` est souvent utilisé comme framework de pare-feu par défaut à la place d'iptables. `nftables` intègre les fonctionnalités d'iptables et offre une syntaxe améliorée. La commande `iptables` peut fonctionner comme une couche de compatibilité utilisant `nftables` en interne, il est donc conseillé de vérifier l'outil de pare-feu par défaut de votre système.


Commandes de la même catégorie