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.