TP 3 Réseaux : Subnetting IP et Firewall Durée approximative du temps à passer sur chaque partie: I) 1h II-A) 1h II-B) 1h II-C) 45 mn II-D) 15 mn Important Il est nécessaire de ne pas avoir de services (applications) réseaux lancés sur la machine. Pour cela démontez les éventuels répertoires partagés en réseau (umount /home, ) puis arrêtez les services réseau à l aide des commandes : /etc/init.d/iptables stop, /etc/init.d/nfs stop et /etc/init.d/ypbind stop Videz la table de routage de chacune des machines, seule l entrée de loopback doit rester. I) SUBNETTING: Réalisez le montage ci-dessous. Pour un câblage en paire torsadée il faut normalement un Hub/Switch par réseau, mais étant donné qu'il n'y a que 2 machines par réseau vous pouvez utiliser un câble croisé en remplacement de chaque Hub/Switch. PC1 R1 R2 PC4 net1 net2 net3 a) En utilisant l adresse réseau 192.168.1.0/24, attribuez des adresses machines sur net1, net2 et net3 de façon à permettre d avoir au moins 20 adresses machines disponibles pour chacun des sous-réseaux. Décrivez votre plan d adressage en précisant les divers paramètres sur net1, net2 et net3. Combien de sous-réseaux supplémentaires pourriez vous faire avec ce plan d'adressage? Donnez leurs paramètres. b) Faites un routage déclaratif (pas de routage par défaut) sur chacune des machines de façon à pouvoir atteindre les 3 réseaux à partir de chaque machine et vérifiez les communications avec ping. Décrivez. Que doit-t-on avoir dans les tables de routage de PC1 et PC4? c) Depuis PC1 faite la commande "traceroute @IP-de-PC4". En observant les trames capturées avec ethereal sur net1, net2 et net3, expliquer le mécanisme utilisé par cette commande pour retourner à PC1 la liste des routeurs utilisés pour atteindre PC4 (regardez en particulier le champ TTL de l entête IP des paquets observés). d) Videz ensuite les tables de routage et faites un routage automatique. Décrivez. II) MISE EN ŒUVRE D UN FIREWALL: Constituez maintenant des plates-formes de 2 machines Routeur-FW + PC-privé comme sur le schéma ci-dessous. Le rôle du routeur-fw sera d'isoler votre réseau privé du réseau standard de la salle en S.Viardot, E.Chotin Page 1 sur 5 06/12/2007
utilisant l'utilitaire "ip-tables" implanté sous Linux. Veillez à conserver au moins une machine sur le réseau standard de la salle. PC salle Routeur-FW PC-privé eth0 réseau université eth0 eth1/2 eth1/2 réseau privé Sur les réseaux privés des différentes plate-formes, utilisez les adresse réseau privées différentes : 10.0.1.0/24, 10.0.2.0/24, 10.0.3.0/24 La machine R-FW doit avoir des fonctionnalités firewall. Pour cela vérifiez avec la commande iptables L v que le noyau fait tourner iptables: Vous devez obtenir 3 listes de règles ("Chain") "INPUT", "FORWARD" et "OUTPUT", chaque liste devant être vide au début du TP. Il s'agit des 3 listes de règles de la table "filter". Faites en sorte que toutes les machines puissent communiquer entre elles, y compris d'un réseau à l'autre. Iptables est l'utilitaire firewall qui est intégré dans le noyau de Linux et que nous allons utiliser sur la machine R-FW durant ce TP. Principe de fonctionnement des "ip-tables": Lorsqu un paquet passe par la machine R-FW il traverse plusieurs règles qui le laissent passer (ACCEPT) ou non (DROP) en fonction de certains critères. Certaines règles peuvent également effectuer des modifications sur un paquet. Une table de règles est parcourue jusqu à ce que le paquet corresponde aux critères définis d une règle donnée. Une règle peut éventuellement enregistrer dans /var/log/messages (avec LOG) certains paquets qui arrivent. Les règles sont placées dans des tables différentes selon leur type: table filter : il s'agit des règles de filtrage de paquet: INPUT: il s'agit de la liste des règles appliquées sur les paquets destinés à la machine R-FW ellemême (en entrée sur ses processus). OUTPUT: il s'agit de la liste des règles appliquées pour les paquets qui sont émis par la machine R- FW elle-même (en sortie de ses processus). FORWARD: il s'agit de la liste des règles appliquées sur les paquets qui sont transférés par la machine R-FW d une interface vers une autre (fonction de routage). table nat: POSTROUTING: il s'agit de la liste des règles appliquées pour les manipulations (modifications) du paquet au moment où le paquet va sortir sur une interface.(translation d adresse à la source SNAT) PREROUTING: il s'agit de la liste des règles appliquées pour les manipulations (modifications) du paquet au moment où le paquet entre sur une interface.(translation d adresse à la destination DNAT) table mangle: Utilisée pour modifier les données internes d'un paquet. Pour plus de détails consulter man iptables ou le tutorial à l url : http://www.linuxsecurity.com/resource_files/firewalls/iptables-tutorial/iptables-tutorial.html S.Viardot, E.Chotin Page 2 sur 5 06/12/2007
Paquets destinés à la machine «Firewall» Réseau nat :PREROUTING Routage filter: FORWARD filter : INPUT processus nat :POSTROUTIN G Routage filter : OUPUT Les principales commandes permettant de manipuler l ensemble de ces tables et des listes dans ces tables sont les suivantes : Pour consulter le table filter: iptables L v Pour consulter une autre table (par ex. nat) : iptables t nat L v Pour ajouter une règle dans une des tables : à la fin de la table iptables t nom_de la_table A nom_de_la_liste conditions j règle à une position précise iptables t nom_de la_table I nom_de_la_liste position conditions j règle Pour supprimer une règle dans une des listes d'une table à une position: iptables t nom_de la_table D nom_de_la_liste position Pour vider complètement une liste d'une table: iptables t nom_de la_table F nom_de_la_liste Remarque: Par défaut c est le type de table filter qui est sélectionné si on ne précise pas l option t. EXEMPLE: on souhaite avoir dans la table filter les règles suivantes (à ne pas entrer tout de suite sur R- FW!) Remarque: eth0 est l interface permettant à R-FW de sortir sur net2 (remplacer eth0 par l interface correspondante) INPUT : Les paquets entrant dans les processus de la machine qui ne respectent aucune des règles sont jetés : iptables -P INPUT DROP règle 1 : on autorise l entrée des paquets icmp "icmp-reply" provenant de eth0: iptables A INPUT i eth0 p icmp --icmp-type echo-reply j ACCEPT Dernière règle : tous les paquets qui ne respectent pas les règles précédentes sont "loguées" iptables A INPUT j LOG -log-prefix FWLOG INPUT S.Viardot, E.Chotin Page 3 sur 5 06/12/2007
OUTPUT : Les paquets sortant des processus de la machine qui ne respectent aucune des règles sont jetés : iptables P OUTPUT DROP règle 1 : on autorise la sortie des paquets icmp "echo-request" sortant sur eth0: iptables A OUTPUT o eth0 p icmp -icmp-type echo-request j ACCEPT Dernière règle : tous les paquets qui ne respectent pas les règles précédentes sont "loguées" iptables A OUTPUT j LOG -log-prefix FWLOG OUTPUT FORWARD : Les paquets traversant R-FW qui ne respectent aucune des règles sont jetés : iptables P FORWARD DROP Dernière règle : tous les paquets qui ne respectent pas les règles précédentes sont loguées iptables A FORWARD j LOG -log-prefix FWLOG FORWARD Remarque : Pour toutes les manipulations veillez à ce que chaque règle mentionnée comme étant la "dernière règle" (-j LOG) soit effectivement la dernière dans la liste concernée. A) GESTION DES FILTRES PROTÉGEANT LES PROCESSUS D UNE MACHINE. a)pour entrer les règles précédentes dans R-FW vous allez créer un fichier script dans lequel vous placerez les commandes d'ajout des règles, et en début de ce script vous commencerez par vider toutes les tables. Ensuite exécutez votre script, puis vérifiez avec "iptables L v" que les règles sont conformes. Ainsi pour modifier la configuration de R-FW, il suffit de modifier le script puis de le relancer. Vous comprendrez que c'est beaucoup plus pratique que de retaper les règles à chaque fois dans le shell. Essayez ensuite de faire un ping : 1) sur une machine du réseau de l'université 2) sur une machine du réseau privé 3) sur R-FW lui même. Est-ce que le ping passe dans tous les cas? Pourquoi? (Aidez-vous en regardant les éléments logués dans le fichier /var/log/messages à l'aide de la commande tail, et en faisant des analyses de trame avec Ethereal) b)quelle est la signification de la première entrée de chaque table «iptables -P xxxx DROP»? Faites l'essai en la remplaçant par " iptables -P xxxx ACCEPT ". c)en conservant la première entrée à «iptables P.. DROP» dans chaque liste, trouver une solution pour que les ping passent dans les 3 cas. (On n autorisera dans un premier temps que les messages ping!) d)les machines des réseaux université et privé peuvent-elles "pinger" R-FW? Pourquoi? e)trouver une solution pour que les ping passent dans tous les cas. f)peut-on utiliser un autre protocole depuis R-FW? Par exemple peut-t-on faire un telnet sur un PC du réseau université? Pourquoi? g)faites en sorte que R-FW puisse faire des telnet sur tous les postes du réseau université. ATTENTION, pour certaines commandes, dont "telnet", "ps", l'affichage des résultats nécessite d'autoriser les entrées/sorties sur l'interface "lo". Il faut donc rajouter des règles dans ce sens. B) GESTION DES FILTRES PERMETTANT DE PROTÉGER UN RÉSEAU GRÂCE À UN ROUTEUR "INTELLIGENT" On s intéresse à présent à la protection d un réseau par la configuration du firewall au niveau des règles S.Viardot, E.Chotin Page 4 sur 5 06/12/2007
FORWARD. a)essayez de faire un ping de PC-privé vers PC-université. Expliquez ce résultat? b) Mettez en œuvre une politique semblable à la partie précédente pour que ce soit le cas. c)autorisez le passage du protocole telnet de PC-privé vers le réseau université et uniquement dans ce sens. Vérifiez. Pour faire un telnet sur une machine vous devrez préalablement créer un utilisateur local sur cette machine (utilisez adduser). Pour imposer un sens précis quel est le paramétrage de la règle que vous devez faire sur les numéros de port? d)pour le telnet ou autre protocole reposant sur TCP (par exemple http) que vous ne voulez autoriser que dans un seul sens, étudiez l'option "-m state --state ESTABLISHED" (partie "Extensions de correspondance" du man). En quoi l'utilisation de cette option sécurise-t-elle plus l'accès au réseau que de simplement préciser quelle extrémité utilise la valeur de wellknown port? C) TRANSLATION D ADRESSE On souhaite à présent que le réseau privé soit complètement invisible (translation d adresse), c est à dire que la machine R-FW masque le réseau privé. Pour cela vous allez utiliser la règle POSTROUTING suivante : iptables -t nat -A POSTROUTING -o interface_r-fw_coté_res_univ -j SNAT --to-source @IP_R-FW_coté_res_univ Cela signifie que tout ce qui sort (-o) de l interface interface_r-fw_coté_res_université va avoir comme adresse @IP_R-FW_coté_res_université même si les paquets viennent d une autre machine. a) Tester cette configuration en faisant un ping de PC-privé vers PC-salle. b) Analyser les trames émises et reçues sur PC-privé et PC-salle avec ethereal. Regarder tout particulièrement les adresses IP sources et destinations. Qu observe-t-on? c) Faire un ping de R-FW vers PC-salle. Analyser les trames avec ethereal comme précédemment. Comment fait le routeur pour s y retrouver (analyser plus en détails les éléments qui permettent de faire la différence entre une trame ping venant réellement de R-FW et une trame ping provenant de PC-privé translatée par R-FW). d) Faire un telnet de R-FW vers PC-salle, ainsi qu'un telnet de PC-privé vers PC-salle. Analyser les trames avec ethereal comme précédemment. Comment fait le routeur pour s y retrouver entre les trames qui lui sont destinés et celles qu'il doit faire suivre vers PC-privé? D) QUESTION DE SYNTHÈSE Faites en sorte que l ensemble des machines du réseau privé puissent accéder aux services DNS et HTTP d Internet en se faisant passer pour routeur-fw. Détailler la configuration d iptables. Quel est le problème qui peut se poser si le réseau privé utilise une adresse IP publique, déjà attribué officiellement à un autre réseau sur Internet? S.Viardot, E.Chotin Page 5 sur 5 06/12/2007