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