1 iptables : une introduction
Transcription
1 iptables : une introduction
Département R & T - Module R4 : Technologie TCP/IP [email protected] TP 6 : Filtrage de paquets & NAT 27 avril 2011 Objectifs pédagogiques : L’objectif de ce TP est d’introduire l’utilitaire iptables qui permet de définir de règles de manipulation (filtrage et et modification) des paquets IP. 1 iptables : une introduction 1.1 Description générale iptables est un utilitaire Linux intégré au noyau système depuis la version 2.4 et qui permet de définir de règles de filtrage de paquets IP. Une règle de filtrage est composée de trois parties : 1. la chaîne : qui désigne la phase du traitement d’un paquet IP dans laquelle la règle est activée (voir plu loin), 2. le paquet cible : cette partie est composé d’un ensemble de caractéristiques qui désignent les paquets cible de la règles, 3. l’action : qui spécifie l’action qui sera exécutée sur un paquet cible intercepté. La figure 1 illustre le parcours typique d’un paquets IP dans un système (i.e. machine) A la réception d’un paquet IP le système commence par consulter le processus du routage pour déterminer la destination du paquet. IL est possible d’agir sur un paquet avant de considérer le processus du routage en associant un règle à la chaîne prédéfinie PREROUTING. Si le paquet traverse cette chaîne, le routage va être effectué. deux cas sont possibles : – le paquet est destin à la machine elle même. Dans ce cas le paquet va être envoyé à un processus local. Avant que le paquet soit livré à ce processus il doit traverser la chaîne prédéfinie INPUT. Autrement dit, on dispose de la possibilité de désigner une règle de filtrage qui concerne les paquets destinée à la machine elle-même. – Le paquet est destiné à un autre réseau. Dans ce cas, si le drapeau du routage est activé sur la machine locale, alors le paquet va être propagé vers le réseau cible mains en traversant d’abords, les chaînes prédéfinie FORWARD puis POSTROUTING. Un paquet généré par la machine locale commence par traverser la chaîne prédéfinie OUTPUT puis la chaîne POSTROUTING. A la traversé d’une chaîne, les règles de filtrage associées à cette chaîne vont être examinée dans l’ordre. La première règle dont la partie paquet cible 1 Département R & T - Module R4 : Technologie TCP/IP [email protected] Figure 1 – Les chaînes iptables correspond au paquet à traiter sera exécutée. Ainsi, comme pour les règles de routage, l’ordre des règles de filtrage est importante. En plus des chaînes prédéfinies citées ci-haut, on peut définir des chaînes utilisateurs. Ce sont des chaîne logiques qui permettent de structurer le processus du filtrage. Une règle peut avoir l’une des actions suivantes : – ACCEPT : le paquet traverse la chaîne avec succès. – DROP : le paquet sera supprimé sans avertir l’expéditeur. – REJECT : le paquet sera supprimé mais l’expéditeur sera notifié de la suppression du paquet. – MASQUERADE : consiste à effectuer la traduction d’adresses IP (i.e. NAT) – SNAT : permet de changer l’adresse source du paquet. – DNAT : permet de modifier l’adresse destination du paquet. – LOG : une entrée dans le fichier de trace de l’activité du noyau sera ajoutée pour tracer le traitement du paquet. – redirection vers une autre chaîne. Cette action est utilisée pour diriger le paquet d’une chaîne prédéfinie vers une chaîne utilisateur. Afin de faciliter la gestion de règles de filtrage, iptables regroupes les règles de filtrage dans des tables. Deux principales tables seront utilisée dans ce TP. – la table filter. C’est la table par défaut et qui regroupe les chaînes INPUT, FORWARD, OUTPUT, – la table NAT qui regroupe les chaînes PREROUTING, POSTROUTING et OUTPUT. Les actions de traduction d’adresses ne sont autorisées que dans la table NAT. 2 Département R & T - Module R4 : Technologie TCP/IP 1.2 [email protected] Syntaxe de commandes iptables Pour ajouter une règle la commande à exécuter est la suivante : iptables -t table -A chaîne <paquets cibles> -j action Par exemple, pour interdire de traiter les paquet icmp envoyé sur la boucle locale on peut donner la règle suivante : iptables -t filter -A INPUT-p icmp -s 127.0.0.1 -j DROP L’option -s désigne l’adresse source du paquet IP. Ainsi celte règle stipule qu’il ne faut pas traiter le paquets à la machine à partir de la boucle locale. La règle suivante permet d’interdire à la machine de se connecter à un serveur web qui s’exécute sur la machine 209.85.129.99 : iptables -A OUTPUT -d 209.85.129.99 -p tcp -dport 80 -j DROP Noter que si la table n’est pas spécifiée, alors la règle sera ajoutée par défaut à la table filter. La commande suivante permet d’activer le service de traduction d’adresses sur un routeur : iptables -t nat -A POSTROUTING -s réseau privé -j MASQUERADE La commande iptables -A INPUT -j LOG a pour effet d’ajouter au fichier de trace système (/var/log/messages) tous les paquets reçus et destinée à la machine locale. Pour supprimer une règle on utilise l’option -D au lieu de -A. Par exemple la commande suivante : iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP permet d’effacer la règle introduite ci-haut. De spécifier le numéro de la règle à effacer dans une chaîne comme suit : iptables -D chaîne n où n est le numéro de la règle à effacer de la chaîne chaîne. Quelques commandes utiles sont les suivantes : – iptables -t table -F pour effacer toutes les règles dans la table table – iptables -L pour afficher les règles actives. – iptables -P chaîne action qui permet de spécifier la politique par défaut associé à une chaîne. Par exemple iptables -P INPUT DROP spécifie que la machine va ignorer par défaut tous les paquets qui lui sont destinées. Normalement, on ajoute ensuite des règles pour spécifier quels sont les paquets autorisés à être reçus. La politique par défunt associée aux différentes chaînes est d’accepter les paquets. – iptables -N Nouvelle chaîne : permet de définir une chaîne utilisateur. 3 Département R & T - Module R4 : Technologie TCP/IP 2 [email protected] Travail à réaliser En utilisant l’environnement Marionnet on définit 5 machines P C1 à P C5 . La machine P C3 joue le rôle d’un routeur qui relie deux réseaux LAN1 (composé de P C1 et P C2 ) et LAN2 composé de P C4 et P C5 . Réaliser le montage et la configuration comme suit : – LAN1 est un réseau privé attribué l’adresse 10.0.0.0/8. Un serveur DHCP lancé sur P C3 doit être configuré pour mettre d’attribuer les adresses aux machines dans LAN1 . – Le réseau LAN2 est attribué l’adresse 198.160.45.0/24. – Le routeur P C3 ne doit pas traiter les paquets à destination de réseaux privés. – P C3 fournit à LAN1 un service de traduction d’adresses (NAT). – Les machines de LAN1 sont autorisées à envoyer des paquets icmp echo request) aux machines sur le réseau local mais à destination d’autres machines. L’interface publique du routeur P C3 est à exclure de l’interdiction. – Les machines de LAN1 ne sont pas autorisées à se connecter à des serveurs web distants. – Chaque tentative de connexion à un serveur web par une machine privée doit être tracer sur le routeur dans son fichier de log. – Permettre aux machines de LAN1 d’exécuter l’utilitaire tracepath vers des machines publiques toute en interdisant le ping vers ces machines. – La machine P C4 répond aux paquets ICMP request envoyé par P C5 mais pas l’inverse. – Seul P C3 peut accéder aux machines de LAN1 en utilisant ssh. – La machine P C1 garde trace de toute demande d’ouverture de connexion tcp. 4