iptables | |
![]() | |
Développeur | Netfilter Core Team |
---|---|
Dernière version | 1.4.9.1 [+/-] |
Environnement | Linux |
Type | Filtrage de paquets |
Licence | GNU General Public License |
Site Web | http://netfilter.org/ |
modifier |
Iptables est un logiciel libre de l'espace utilisateur Linux grâce auquel l'administrateur système peut configurer les chaînes et règles dans le pare-feu en espace noyau (et qui est composé par des modules Netfilter).
Différents programmes sont utilisés selon le protocole employé : iptables est utilisé pour le protocole IPv4, Ip6tables pour IPv6, Arptables pour ARP ou encore Ebtables, spécifique aux trames Ethernet.
Ce type de modifications doit être réservé à un administrateur du système. Par conséquent, son utilisation nécessite l'utilisation du compte root. L'utilisation du programme est refusée aux autres utilisateurs.
Sur la plupart des distributions Linux, iptables est lancé par la commande /usr/sbin/iptables et documenté par sa page de manuel iptableset ip6tables, laquelle peut être visualisée via la commande “man iptables
”.
Iptables est également fréquemment utilisé pour faire référence aux composants de bas niveau (niveau kernel). x_tables est le nom du module noyau, plus générique, qui contient le code partagé pour les quatre protocoles. C'est aussi le module qui fournit l'API des extensions. Par conséquent, Xtables désigne usuellement le pare-feu complet (IPv4, IPv6, arp, eb).
Netfilter et iptables ont été initialement conçus ensemble, leurs histoires sont donc confondues dans les premiers temps.
Avant iptables, les principaux logiciels de création de pare-feu sur Linux étaient Ipchains (noyau linux 2.2) et Ipfwadm (noyau linux 2.0), basé sur Ipfw, un programme initialement conçu sous BSDs.
Iptables conserve les principes de base introduits sous Linux par Ipfwadm : des listes de règles qui spécifient ce qu'il faut tester dans chaque paquet et ce qu'il faut faire d'un tel paquet. Ipchains a ensuite introduit le concept de chaîne de règles et enfin iptables a étendu ce concept aux tableaux : un tableau est consulté au moment de décider s'il faut utiliser NAT ou pas et un autre est consulté au moment de décider comment filtrer un paquet. En outre, les trois instants auxquels le filtrage est effectué pendant le transfert d'un paquet ont été modifiés de manière à ce qu'un paquet passe par exactement un point de filtrage.
Cette séparation permet à iptables, à son tour, d'utiliser les informations que la couche de suivi de connexion a définies pour chaque paquet (cette information était auparavant liée au NAT). Cette fonctionnalité rend iptables supérieur à Ipchains, puisque le premier a la capacité de suivre l'état d'une connexion et de réorienter, de modifier ou d'arrêter les paquets de données en se basant sur l'état de la connexion, et plus seulement sur la source, la destination ou le contenu des données du paquet. Un pare-feu utilisant iptables de cette façon est considéré comme un pare-feu stateful, au contraire d'Ipchains, qui ne peut créer qu'un pare-feu stateless (sauf dans de rares cas). Pour simplifier, Ipchains n'utilise pas le contexte lié à la transmission d'un paquet, tandis qu'iptables le fait. Par conséquent, iptables est à même de faire de meilleurs choix pour la transmission de paquets ou l'établissement de connexions.
Il existe de nombreux logiciels tiers pour iptables, qui cherchent à faciliter la mise en place de règles. Les front-ends à base de texte ou en mode graphique permettent aux utilisateurs de générer les règles simples d'un simple clic. Firestarter est une interface graphique disponible pour les distributions Linux qui utilisent l'environnement Gnome. Les scripts font habituellement référence aux scripts de Shell de Unix (mais d'autres langages de script sont également possibles). Ils appellent iptables ou (le plus rapide) “iptables-restore” avec un ensemble de règles prédéfinies, ou de règles à partir d'un modèle développé avec l'aide d'un simple fichier de configuration. Les distributions de Linux utilisent le dernier système de l'aide de modèles. Une telle approche fondée sur le modèle est presque une forme limitée d'un générateur des règles, et il existe aussi des générateurs en mode autonome, par exemple, en fichiers PHP.
Les front-ends, les générateurs et les scripts sont souvent limités par leur système de modèle, et où ce modèle permet la substitution de règles définies par l'utilisateur. En outre, les règles générées ne sont généralement pas optimisées pour les effets que l'utilisateur souhaite sur le pare-feu, car cela augmenterait probablement les coûts d'entretien pour le développeur. Les utilisateurs qui ont raisonnablement comprise iptables et qui veulent en outre que leur jeux de règles soient optimisés sont invités à construire leurs propres règles.
La commande iptables -L permet de voir quelles règles sont définies.