Comptes Rendus des TPs Re seaux
TP :
TP 1 – Déploiement de réseaux IP sous Linux et MS Windows TP 2 – Partage d’une connexion en utilisant SQUID & IPTABLES TP 3 – Déploiement des services DHCP et DNS TP 4 – Déploiement de réseaux IP sous IOS Cisco TP 5 – Configuration de LANs & Interconnexion de niveau 2sous IOS Cisco
2012/2013
TP – Déploiement de réseaux IP sous Linux et MS Windows
Objectifs :
- Configuration d’adresses IP statiques. - Configuration d’un routage statique / dynamique (RIP,OSPF). - Familiarisation avec les commandes, les fichiers et les interfaces de configurations propres aux systèmes
d’exploitation : Linux, MS Windows. - Diagnostic du fonctionnement d’un réseau. Barème : 3+5+2+3+2.5+2.5+2
Environnement matériel et logiciels
Pour les besoins des différentes manipulations (sous Linux et sous MS Windows), des machines virtuelles en réseau sont installées sur un même ordinateur de travail (en utilisant VMware). Au total vous disposez de 4 machines en réseau, parmi lesquelles trois sont des machines Linux virtuelles. Ces 4 machines sont désignées respectivement par les noms suivants : OpenSuse, Fedora, Ubuntu et Windows. Pour la machine Windows il s’agit d’une version « MS Windows 2008 Server » (La version Server est utile pour la partie relative à la configuration du routage dynamique).
Pour connecter en réseau ces différentes machines, et à chaque fois que le TP le nécessite vous pouvez éditer les réseaux (sous VMware : Edit>Virtual Network Editor). A cet effet, tous les réseaux virtuels (VMnet) seront internes (Host-only). Désactiver l’affectation dynamique des adresses IP (par VMware) et fixer l’adresse réseau et le masque pour chaque réseau édité. En outre pour chaque machine virtuelle, fixer les interfaces réseaux (en se positionnant sur l’onglet relative à une machine virtuelle et avec le bouton droit > setting).
Pour ce qui est de la machine Windows, éditer la configuration réseau des interfaces VMnet en accédant à leurs propriétés comme vous le feriez pour une interface réelle.
Dans tout le TP et pour chaque manipulation vous devez préciser les privilèges nécessaires (U : simple-utilisateur, S : super-utilisateur) pour réaliser chaque manipulation.
Configuration d’adresses IP statiques
1) Nous allons commencer par configurer les 4 machines sur un même réseau IP (VMnet1 par exemple) en utilisant l’adresse privée 192.168.0.0 et en appliquant le masque par défaut. Le tableau suivant précise l’adresse de chacune des machines :
Nom de la machine Windows Fedora Ubuntu OpenSuse
Adresse IP 192.168.0.65 192.168.0.1 192.168.0.129 192.168.0.190
Login Administrateur windows fedora ubuntu opensuse
fedora ubuntu opensuse
Password/root password
TP RL / II2-ENSI
Page :1
Sous Linux, utiliser la commande ifconfig
a. Pour connaître les interfaces réseaux disponibles et toutes les informations associées.
Privilège (U ou S) : U Commande tapée sur la machine OpenSuse : /sbin/ifconfig -a
b. Proposer une classification (résumé) des informations ainsi obtenues.
eth0 le réseau dont la machine est connectée Link encap: Ethernet : l’interface est Ethernet HWaddr … : l’adresse MAC de la machine unique a chaque carte ethernet . inet addr : adresse IP de la machine Open SUSE Bcast : l’adresse brodcast. Mask : le masque du reseau BROADCAST : la machine supporte le broadcast RUNNING : l’interface est prête pour accepter des données. MULTICAST : l’interface Ethernet supporte le multicasting MTU (Maximum Transmission Unit) c’est la taille de chaque paquet reçu par la carte Ethernet. Metric : prend des valeurs entieres qui définissent la priorité de la machine (ce la n’a un sens que lors du routage des paquets) RX Packets : paquets reçus TX Packets : paquets transmis collision : nombre de collisions
c. pour configurer l’adresse IP de chaque machine Linux Privilège (U ou S) : S Commande tapée sur la machine OpenSuse : ifconfig eth6 192.168.0.190
d. pour visualiser les nouveaux paramètres de configuration (de l’interface configurée uniquement).
Privilège (U ou S) : U Commande tapée sur la machine OpenSuse : /sbin/ifconfig -a Sous Windows,
e. utiliser la commande ipconfig pour connaître les interfaces réseaux disponibles et toutes les informations associées.
Privilège (U ou S) : U Commande tapée sur la machine: ipconfig
f. utiliser « Centre réseau et partage » ou « Panneau de configuration » pour configurer l’adresse IP de la machine
Windows7.
Privilège (U ou S) : U Enchainement des fenêtres/boutons :
Fenêtres Centre réseau et partage Connexions réseau Protocol internet version 4
Boutons Gérer les connexions réseaux Bouton droit souris -> propriétés
propriétés
Commandes utiles pour le suivi du fonctionnement
2) En plus de certaines des commandes déjà utilisées, il existe d’autres commandes et des utilitaires couramment utilisés pour le suivi du fonctionnement du réseau et le diagnostic de certains dysfonctionnements pouvant affecter le réseau. Nous retrouvons dans les différents systèmes étudiés les commandes ping, arp et netstat. Il est aussi possible d’installer un analyseur réseau tel que Wireshark. L’objectif est d’apprendre à donner une interprétation à différentes réponses possibles aux commandes ping, arp et netstat et à utiliser un analyseur réseau.
a. Avant tout appel à la commande ping, grâce à la commande arp, visualiser le contenu de la table ARP (sur une
quelconque des machines Linux). Quel est le résultat obtenu ?
Table vide
b. Qu’en est-il pour la machine Windows ? Quel est la nature des entrées qui existent ?
Contient quelque adresses qui sont des adresses statiques.
TP RL / II2-ENSI
Page :2
c. Lancer sous Wireshark une nouvelle capture. Utiliser la commande ping pour vérifier que la machine OpenSuse peut joindre la machine Fedora. Réutiliser la commande arp pour visualiser le contenu de la table ARP sur ces deux machines. Grâce à Wireshark, identifier les messages échangés. Que peut-on conclure. Fedora ARP 192.168.0.190 ether 00:0c:29c:e6:90:fd c eth0 Open SUSE ARP 192.168.0.1 ether 00:0c:29:65:c7:c5 c eth6 Wireshark: Broadcast ARP how has ARP is at ICMP request ICMP reply On peut conclure que si une station tente pour la première fois de joindre une autre alors le premiers message émis et un message en broadcast (ARP how has) pour localiser le destinataire. Destinataire localisé, la station commence a émettre.
d. Arrêter toute commande ping, sur la machine OpenSuse, vérifier qu’une entrée correspondante à la machine
Fedora figure dans la table ARP. Lancer une nouvelle capture sur Wireshark. Utiliser à nouveau la commande ping pour vérifier que la machine OpenSuse peut joindre la machine Fedora. Grâce à Wireshark, identifier les 2 premiers messages échangés. Que peut-on conclure. Le résultat de wireshark : 192.168.0.190 192.168.0.1 ICMP ping request 192.168.0.1 192.168.0.190 ICMP ping reply Donc on peut remarquer l’absence du message de l’identification du destinataire, maintenant une connexion est présente entre les deux stations.
e. Arrêter toute commande ping, relancer une nouvelle capture sur Wireshark et grâce à la commande ifconfig, désactiver l’interface réseau de Fedora, puis effectuer le test d’accessibilité à Fedora à partir de Ubuntu. Dans cette question nous supposons que la table ARP de Ubuntu ne contient pas de correspondance MAC-IP relative à la machine Fedora (sinon l’effacer grâce à arp –d).
Privilège (U ou S) : S Commandes de désactivation de l’interface réseau sur Fedora :
ifconfig eth10 down f. Quel est le message retourné par la commande ping ?
Résultat de la commande Ping à partir Ubuntu lorsque la table ARP sur Ubuntu ne contient pas la correspondance entre l’adresse IP et l’adresse MAC de Fedora : Destination host unreachable
g. Arrêter toute commande ping, relancer une nouvelle capture sur Wireshark et grâce à la commande ifconfig, réactiver l’interface réseau de Fedora, puis effectuer le test d’accessibilité à Fedora à partir de Ubuntu, ne pas arrêter ce test. Pendant le test, désactiver l’interface de Fedora. Notons que la table ARP de Ubuntu contient la correspondance MAC-IP relative à la machine Fedora. Quel est le résultat retourné par la commande ping ? Détailler votre réponse en se référant aux messages capturés par Wireshark. Pas de message de type ICMP, donc la machine Fedora n’est plus accessible.
h. Donner une interprétation aux résultats des deux questions précédentes (2.f et 2.g).
TP RL / II2-ENSI
Page :3
2.f le résultat retourner par la commande ping implique que la machine Fedora n’est pas connectée au réseau alors que la machine ubuntu est bien connecté au réseau
i. En gardant l’interface réseau de Fedora désactivée, quel est le résultat de la commande ping exécutée sur Fedora pour tester l’accessibilité de Ubuntu. Est-ce que cette commande a engendré l’envoi d’un message ICMP ? Expliquer.
Résultat de la commande Ping à partir Fedora : Network unreachable Elle n’engendre pas l’envois d’un message ICMP
Explication : Ce message signifie que la machine Fedora n’est pas connectée au réseau .
j. Quelles sont les informations relatives au trafic réseau fournies par la commande netstat. Préciser les options
utilisées pour obtenir ces informations (sous Windows et Linux).
Sous Window Netstat Protocol adresse Local + port adresse destination Etat Sous Linux Netstat –a Protocol Received Sent local address foreign address state
Subdivision en sous-réseaux
3) Le masque réseau : 255.255.255.192 est utilisé sur les 4 machines. a. Configurer en conséquence les différentes interfaces réseaux.
Publicité
Privilège (U ou S) : S Commande tapée sur la machine OpenSuse : ifconfig eth6 192.168.0.190 netmask 255.255.255.128
b. Quel est le résultat des commandes exécutées sur OpenSuse : ping 192.168.0.129 et ping 192.168.0.65 ?
Expliquer.
La première commande ping est réussie car les deux stations sont dans le même sous-réseau La deuxième commande ping ne passe pas car les deux stations appartiennent à deux sous-réseaux séparés.
c. Sous VMware, créer 3 réseaux VMnet correspondant aux 3 sous-réseaux (192.168.0.0, 192.168.0.64, 192.168.0.128). Sur Windows, configurer une seconde interface ayant l’adresse 192.168.0.62 et sur Ubuntu, configurer aussi une seconde interface ayant l’adresse 192.168.0.126. En fonction de l’adresse de chaque interface et sous VMware, vous devez vous assurer que chaque interface est bien connectée au réseau VMnet approprié. A cet effet et avant de procéder à ces opérations de configuration, décrire à travers une figure appropriée le plan d’adressage de tout le réseau en précisant le VMnet associé à chaque sous réseau.
TP RL / II2-ENSI
Page :4
d. Quel est le résultat des commandes suivantes exécutées sur OpenSuse ? Expliquer.
ping 192.168.0.62 : destination host unreachable ping 192.168.0.126 : réussie
Explications : Les deux machines open suse et windows 1 (adresse ip 192.168.0.62) n’appartiennent pas au même sous-réseau. Alors que open suse et ubuntu 2 (192.168.0.129) appartiennent au même sous-réseau.
Routage statique
4) Dans cette question on s’intéresse à la configuration du routage statique à travers la saisie des routes
appropriées. a. Grâce à la commande route, consulter la table de routage de chacune des machines.
Privilège (U ou S) : U Commande tapée sur la machine Windows : Route PRINT Privilège (U ou S) : S Commande tapée sur la machine OpenSuse : …route............................................
b. Grâce à la commande route, rajouter les routes nécessaires pour que toute machine puisse joindre tout autre
machine.
Privilège (U ou S) :U Commande(s) tapée(s) sur la machine Windows : ……route ADD 192.168.0.128 mask 255.255.255.192 192.168.0.126 ........................................................ Privilège (U ou S) : S Commande(s) tapée(s) sur la machine Fedora : …route add –net 192.168.0.64 netmask 255.255.255.192 gw 192.168.0.62………………… … route add –net 192.168.0.128 netmask 255.255.255.192 gw 192.168.0.62…………… Privilège (U ou S) : S. Commande(s) tapée(s) sur la machine Ubuntu : ……route add –net 192.168.0.0 netmask 255.255.255.192 gw 192.168.0.65…………............................ Privilège (U ou S) : S Commande(s) tapée(s) sur la machine OpenSuse : ……route add –net 192.168.0.0 netmask 255.255.255.192 gw 192.168.0.129…………………… …… route add –net 192.168.0.64 netmask 255.255.255.192 gw 192.168.0.129………………………. Même avec les routes rajoutées, certains tests d’accessibilité échouent car les machines Windows et Ubuntu ne réalisent pas la redirection (Forwarding) des paquets IP d’un sous-réseau à un autre. Nous allons donc devoir l’activer sur ces deux machines.
c. Sur la machine Windows, grâce à la commande regedit mettre à 1 le registre IPEnableRouter (puis redémarrer la machine, suspendre les machines virtuelles pour pouvoir revenir sur le même état après le redémarrage de la machine Windows). Pour un système Windows Server, il est aussi possible d’utiliser sous <Démarrer>/<Outils d’administration>/<Gestionnaire de serveur> pour la configuration d’un routeur (le redémarrage n’est plus alors nécessaire).
TP RL / II2-ENSI
Page :5
d. Sur la machine Ubuntu, echo "1" > /proc/sys/net/ipv4/ip_forward e. Sur Fedora, en utilisant Wireshark, lancer une capture de trames puis tester l’accessibilité de OpenSuse. A quelle
interface correspond l’adresse MAC destination de la trame transportant le message icmp-echo ? ……………00 :ef :ac :00 :c7 :c5………………………….………………………………………………………................................... ……………………………………………………………………………………………....………………………………………………………...................................
f. Sur la machine Fedora, taper la commande :
traceroute 192.168.0.190 Reporter le résultat de la commande. A quoi sert cette commande (remarque : l’équivalent de cette commande sous MS Window est tracert).
……1 192.168.0.62 (192.168.0.62) 1.725 ms 0.163 ms 0.092 ms ……………………………… ……2 192.168.0.62 2761.722 ms 2996.009 ms …………………………… ……traceroute nous permet de suivre le chemin qu’un paquet de données va prendre pour aller d’une machine a une autre……………………………………………………....………………………………………………………...................................
Principaux fichiers de configuration réseau
5) Sous Linux, le paramétrage effectué grâce aux commandes ifconfig et route est systématiquement perdu du moment où la machine est éteinte. La valeur de ip_forward elle aussi revient à zéro. Il en est de même, sous MS- Windows pour les routes saisies par la commande route. Par ailleurs il est utile de pouvoir désigner les machines par des noms plutôt que des adresses. La question suivante a pour objectif de rendre effectif un paramétrage donné lors du redémarrage du service réseau ou de la machine.
TP RL / II2-ENSI
Page :6
a. Sur la machine Windows, écrire un fichier .bat pour l’ajout des routes nécessaires. Le fichier doit être lancé au
démarrage de la machine.
Contenu du fichier .bat et Enchainement des fenêtres/boutons : ……………………………………………………………………………………………....………………………………………………………................................... ……………………………………………………………………………………………....………………………………………………… ……………………………………………………………………………………………....……………………………….................................. ……………………………………………………………………………………………....……………………………….................................. ……………………………………………………………………………………………....……………………………….................................. ……………………………………………………………………………………………....……………………………….................................. ………………………. ……………………………………………………………………………………………....……………………………………………….................................. ……….
..................................……. ……………………….
……………………….
……………………….
b. Sur chacune des machines Linux, consulter les fichiers :
Fichier activation routage : /etc/sysctl.conf Positionner Fichier script de démarrage réseau (Fedora) :/etc/init.d/network……………………………………………………………….. Fichier script de démarrage réseau (Ubuntu) : /etc/init.d/networking…………………………………………………………. Fichier script de démarrage réseau (OpenSuse) : /etc/init.d/network…….……………………………………………………
net.ipv4.ip_forward à 1
Pour le paramétrage des interfaces il existe un premier outil (traditionnel) d’installation ifup et un second outil NetworkManager qui permet plus facilement de gérer différents types de connexion ( par exemple wifi). Nous allons utiliser le premier outil. Au cas où vous désirez utiliser le second pour une interface donnée, il suffit de ne pas paramétrer cette interface avec les fichiers traditionnelles et la paramétrer par le fichier /etc/NetworkManger/system- connections/eth<x>.
c. Mettre-à-jour les fichiers de configuration suivants, qui maintiennent le paramétrage des interfaces réseau :
Fichier configuration d’une interface <x> (Fedora) : /etc/sysconfig/network-scripts/ifcfg- eth<x> (cf. ifcfg-lo pour se familiariser avec la syntaxe) : ……………………………………………………………………………………………....………………………………………………..................................………. ……………………………………………………………………………………………....………………………………………………..................................………. ……………………………………………………………………………………………....………………………………………………..................................………. ……………………………………………………………………………………………....………………………………………………..................................………. Fichier configuration d’une interface (Ubuntu) : /etc/network/interfaces (cf. l’exemple en commentaire pour se familiariser avec la syntaxe la syntaxe) : ……………………………………………………………………………………………....………………………………………………..................................………. ……………………………………………………………………………………………....………………………………………………..................................………. ……………………………………………………………………………………………....………………………………………………..................................………. ……………………………………………………………………………………………....………………………………………………..................................……….
Fichier configuration d’une interface <x> (OpenSuse) : /etc/sysconfig/network/ifcfg- eth<x> (inutile de reporter les modifications)
d. Mettre-à-jour le fichier qui maintient les routes statiques.
Fichier de routage (Fedora) : /etc/sysconfig/static-routes (cf. l’exemple en commentaire pour se familiariser avec la syntaxe la syntaxe) : ……………………………………………………………………………………………....………………………………………………..................................………. ……………………………………………………………………………………………....………………………………………………..................................……….
TP RL / II2-ENSI
Page :7
Fichier de routage (Ubuntu) : /etc/network/interfaces (cf. l’exemple en commentaire pour se familiariser avec la syntaxe la syntaxe) : ……………………………………………………………………………………………....………………………………………………..................................………. ……………………………………………………………………………………………....………………………………………………..................................………. Fichier de routage (OpenSuse) : /etc/sysconfig/network/routes (cf. l’exemple en commentaire pour se familiariser avec la syntaxe la syntaxe) : ……………………………………………………………………………………………....………………………………………………..................................………. ……………………………………………………………………………………………....………………………………………………..................................………. e. Quel est l’utilité du fichier /etc/hosts (sous Windows il existe un fichier équivalent :
\windows\system32\drivers\etc) ?
……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………………………..................................……….
Routage Dynamique
6) Supprimer toutes les routes saisies dans la section « routage statique » et invalider la redirection de paquet IP effectuée dans cette même section. Nous supposons que les interfaces sont déjà configurées suivant le dernier plan d’adressage (masque réseau 255.255.255.192). Aux sous-réseaux et aux interfaces déjà créés, nous allons rajouter un sous-réseau et deux autres interfaces pour créer un cycle dans le réseau : sur Fedora rajouter une interface Ethernet ayant l’adresse 192.168.0.193 et sur OpenSuse rajouter une interface Ethernet ayant l’adresse 192.168.0.254.
Les protocoles de routage interne dynamique RIP et OSPF seront étudiés au second semestre (dans le cadre du cours « Réseaux Informatiques »). Des manipulations plus étendues sont prévues dans le cadre de ce cours. a. Sur la machine Windows (version Server), utiliser l’outil « Routage et accès distant » ou « Gestionnaire de
serveur » pour configurer la machine entant que routeur RIP.
Sur une station de travail (version non serveur) il est aussi possible de lancer un écouteur RIP
TP RL / II2-ENSI
Page :8
Pour les besoins du routage dynamique et sur les machines Linux, nous allons utiliser le logiciel Quagga dont le langage de commande est très proche de celui de IOS de Cisco avec quelques légères différences. Contrairement à l'IOS qui intègre toutes les fonctionnalités de façon monolithique, Quagga fait appel à plusieurs démons (programmes) qui doivent être lancées en tâche de fond : Zebra est le programme de gestion des interfaces, ripd, ospfd, ripngd, ospf6d, bgpd sont des démons (un par protocole) de routage. L'administrateur système peut se connecter sur l’un de ces démons par telnet en local (127.0.0.1) en précisant un numéro de port défini pour chacun de ces programmes. Afin de configurer le routage RIP, sur une machine Linux, effectuer les manipulations suivantes :
b. Associer un nom aux routeurs Linux (Ubuntu/Fedora/OpenSuse) et des mots de passe. A cet effet, vérifier que le le fichier /etc/quagga/zebra.conf contient les lignes suivantes, sinon le créer (dans le cas du routeur Ubuntu). hostname Ubuntu
password zebra enable password zebra
Lancer ou relancer le service zebra sudo service zebra restart (sur Fedora et OpenSuse) et sudo service quagga restart (sur Ubuntu) se connecter et visualiser les informations relatives aux interfaces et à la table de routage. telnet 127.0.0.1 2601 (2601:port zebra)
enable show interfaces show interface <nom_interface> show ip route
c. Sur le routeur Ubuntu, éditer le fichier /etc/quagga/ripd.conf:
hostname Ubuntu password <mot_de_passe> Se connecter et configurer le routage RIP. telnet 127.0.0.1 2602 (2602:port ripd) … enable configure terminal router rip version 2 network 192.168.0.64/26 network 192.168.0.128/26 end
Pour sauvegarder de façon permanente la configuration, vous pouvez utiliser la commande :
copy running-config startup-config
d. Reprendre ces différentes opérations sur les routeurs Fedora et OpenSuse. Alors que sur Ubuntu, ripd est lancé en
lançant quagga, sur Fedora et sur OpenSuse, il faut préalablement lancer ripd :
Publicité
sudo service ripd start
visualiser les tables de routage des différentes machines et vérifier qu’elles contiennent toutes les routes possibles.
e. Afin d’observer les changements dynamiques de routes, désactiver sur Ubuntu l’interface 192.168.0.129. Quelles
sont les changements ayant eu lieu dans les différentes tables de routage.
TP RL / II2-ENSI
Page :9
……………………………………………………………………………………………....………………………………………………………................................... ……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………………………………................................... Réactiver l’interface 192.168.0.129. 7) Dans cette question nous allons configurer le routage OSPF sur les routeurs OpenSuse et Fedora. Nous allons garder le routage RIP sur Fedora, Ubuntu et sur la machine Windows. Les routes RIP seront redistribuées à travers l’OSPF.
a. Nous supposons que le fichier /etc/quagga/zebra.conf est déjà créé. Sur les routeurs OpenSuse et Fedora, éditer le
fichier /etc/quagga/ospfd.conf (idem que pour la configuration du rip). Se connecter au routeur ospf
telnet 127.0.0.1 2604 (2604:port ospfd)
Passer en mode configuration et configurer le routage
OSPF. enable configure terminal router ospf network 192.168.0.64/26 area 0 network 192.168.0.128/26 area 0 end
b. En étant connecté au routeur zebra sur OpenSuse, visualiser les routes. Quels sont les sous-réseaux qui ne sont
plus accessibles.
……………………………………………………………………………………………....………………………………………………………................................... ……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………………………………................................... ……………………………………………………………………………………………....………………………………………………………...................................
c. Afin de remédier à cette situation nous allons redistribuer les routes. Sur le routeur Fedora redistribuer les routes
RIP à travers OSPF :
enable configure terminal router ospf redistribute rip metric 20
d. Visualiser la table de routage de OpenSuse des différents routeurs. Quel est le résultat obtenu ?
……………………………………………………………………………………………....………………………………………………………................................... ……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………..................................………………………. ……………………………………………………………………………………………....………………………………………………………................................... ……………………………………………………………………………………………....………………………………………………………...................................
TP RL / II2-ENSI
Page :10
TP – Partage d’une connexion en utilisant SQUID & IPTABLES
Objectifs :
SQUID est un proxy (mandataire) capable de réaliser :
-
- -
la translation d’adresses permettant l’utilisation d’une seule adresse routable, l'optimisation de la bande passante en utilisant un mécanisme de cache (notamment utile lorsque les utilisateurs accèdent aux mêmes objets statiques), le contrôle et le filtrage de l'accès, particulièrement, l’authentification qui n’est pas possible avec IPTABLES. IPTABLES est un firewall logiciel capable de réaliser les fonctions de translation d’adresses et de filtrage, mais aussi, il permet la modification de champs dans les entêtes TCP/IP. Grâce à IPTABLES, il est possible de réaliser la translation d’adresses indépendamment des protocoles applicatifs (contrairement à SQUID qui se limite à des protocoles bien déterminés comme HTTP ou FTP). Grâce Il est aussi possible de réaliser la translation d’adresse sur l’adresse source mais aussi sur l’adresse destination (ce qui n’est pas le cas avec SQUID). IPTABLES et SQUID peuvent être utilisés conjointement pour mettre en place un serveur proxy transparent. Sans chercher à couvrir toutes les possibilités qu’offrent ces deux outils, à travers un certain nombre de manipulations, nous allons nous familiariser avec ces deux outils et apprendre à utiliser et mettre en place certaines configurations usuelles :
- mise en place d’un serveur proxy SQUID pour le partage d’une connexion à l’Internet, - - - -
configuration du cache SQUID, authentification et filtrage avec SQUID, consultation des fichiers logs et utilisation d’IPTABLES pour rendre un proxy transparent, pour améliorer les possibilités de filtrage et pour permettre l’accès à partir de l’internet à un serveur ayant une adresse privée.
Barème : 2.5 par question.
Environnement matériel et logiciels
Quatre machines dont trois virtuelles, en réseau, sont installées sur un même ordinateur de travail (en utilisant VMware) : trois machines Linux et une MS Windows Server. Ces machines sont les mêmes utilisées que pour le TP déploiement des réseaux IP avec les mêmes mots de passe. Il faut savoir que dans le cadre d’une exploitation réelle, la configuration matérielle de la machine (en termes notamment d’espace mémoire et d’espace disque), sur laquelle est déployé un serveur proxy SQUID influe considérablement sur les temps de réponses de ce serveur.
Configurer les différentes machines comme le décrit la figure suivante (appliquer le masque par défaut) :
- Squid1 devrait être la machine Fedora, Squid2 la machine OpenSuse et le client 192.168.1.2 la machine Ubuntu, - Paquetages SQUID et IPTABLES installés à la fois sur Squid1 et Squid2 - Serveur Web (IIS) installés à la fois sur 193.95.0.1 (Windows Server), - Le paquetage htpasswd pour la gestion des mots de passe, - Navigateur Web installé sur toutes les machines, - Serveur Telnet installé sur Fedora.
Nous allons commencer par se familiariser avec certains fichiers et effectuer certaines vérifications.
TP RL/ II2-ENSI
Page :1
1) Consulter le fichier /etc/squid/squid.conf
Chercher dans ce fichier la directive cache_dir afin de déterminer l’emplacement du répertoire de cache, la taille du cache (en Mo), le nombre de répertoires et de sous répertoires. Il est possible de trouver cette directive plusieurs fois, la taille totale est alors la somme des différentes occurrences. Afin d'accélérer les temps de recherche, SQUID essaie de répartir les objets qu'il place dans le cache de manière uniforme dans plusieurs répertoires. Il utilise une fonction de répartition (fonction de « hash ») qui indique dans quel répertoire se trouve un objet. La recherche dans ce répertoire se fait donc plus rapidement, car les objets sont répartis de manière équilibrée dans tous les répertoires du cache, qui devraient donc être relativement peu « peuplés ». Il utilise un découpage à deux niveaux, les répertoires du deuxième niveau étant répartis dans les répertoires du premier niveau.
SQUID est incapable de démarrer si les répertoires de caches ne sont pas créés. Grâce à la commande ls vérifier que ces répertoires sont bien créés. Il est possible aussi de les créer ou de les reconstruire (par exemple, à la suite d’un arrêt brutal de squid, le cache peut devenir « corrompu » et doit être reconstruit) en tapant : rm -rf /var/spool/squid/*
// si déjà créés
squid -z
En ayant consulté squid.conf, préciser les informations suivantes :
Chemin vers le répertoire de Swap : …/var/spool/squid… Taille du répertoire de Swap : ………………100 MO…............................ Noms des répertoires : ……00…01 …02 …03 jusqu’à …0F…............................... Noms des sous-répertoires :………chaque répertoire contient des fichiers allant de 00 jusqu’à F6 …….. …………………………………………………………………………...................................................................................................................
Déterminer si SQUID est déjà lancé en utilisant l’une des commandes suivantes : Fedora# ps aux | grep [s]quid ou Fedora# /etc/init.d/squid status
Une première configuration simple
2) Nous allons permettre à toutes les machines du réseau 192.168.0.0 d’accéder à l’internet (représenté par le serveur
Web 193.95.0.1) via Squid1. A cet effet et dans le fichier squid.conf, reproduire les définitions suivantes :
############################## # SERVEUR PROXY CACHE – Squid1 ##############################
Port du proxy
http_port 192.168.0.2:8080
# Paramétrage du cache
cache_dir ufs /var/spool/squid 100 16 256 cache_log /var/log/squid/cache.log
Taille mémoire vive utilisée pour cache, augmenter si trop de messages Warning #“Exceeded cache_mem…” cache_mem 16 MB
régler cache_mem_low et cache_mem_high qui sont les valeurs limites de remplissage du # cache mémoire. Par défaut les valeurs sont 75 % et 90 %. A 90 % le cache se vide # jusqu'à 75 %.
Taille maximale des objets stockés dans le cache maximum_object_size 4 MB
TP RL/ II2-ENSI
Page :2
Taille minimale des objets stockés dans le cache minimum_object_size 0 KB
# Messages d'erreurs du proxy en français (pas forcement nécessaire), vérifier que le # répertoire existe et le consulter.
error_directory /usr/share/squid/errors/fr
#
Nom
visible
dans
les
Publicité
messages
d'erreurs visible_hostname Squid1
Déclaration des ACL (Access Control
List) acl localhost src 127.0.0.1/32 acl reseau1 src 192.168.0.0/24 acl all src all #Internet
# Protocoles d'accès au cache et ports (ne pas définir les ports à interdire # # et à autoriser présenterait une faille de
sécurité) acl manager proto cache_object acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports
…
# Autorisation d'accès
Accès au manager à partir de localhost seulement http_access allow manager localhost http_access deny manager
Interdiction des ports douteux http_access deny !Safe_ports
# Autorisation d'accès direct aux services du
proxy http_access allow localhost http_access allow reseau1 http_access deny all
- Des règles multiples de http_access sont comparées par des OU, elles sont traitées dans l’ordre d’écriture et se
terminent dès qu’une correspondance est établie.
- Tous les éléments d’une même entrée d’accès sont associés par un ET.
Lancer Wireshark sur Fedora. Démarrer/redémarrer SQUID : /etc/init.d/squid restart
A partir de OpenSuse (Squid2 considéré en tant que client) et travers le navigateur tenter d’accéder à l’URL : http://193.95.0.1/. Que faut-il réaliser comme paramétrage pour que l’accès puisse se réaliser ? ……………………………………………………………………………………………....………………………………………………………................................... ……………………………………………………………………………………………....………………………………………………………................................... ……………………………………………………………………………………………....………………………………………………………...................................
Remarque importante : dans tous le TP ne pas accéder à des pages HTML (inutilement) tant que ceci n’a pas été demandé. Cette recommandation est importante pour garder la mémoire cache à un état bien déterminé et pouvoir ainsi obtenir les résultats escomptés.
Après avoir réalisé un premier accès à travers le navigateur (à partir de OpenSuse), décrire les messages échangés entre la machine cliente et le serveur Squid1 d’une part et entre le serveur Squid1 et le serveur Web d’autre part. A cet effet TP RL/ II2-ENSI
Page :3
compléter la figure ci-dessus. Il n’est pas demandé de représenter les messages de fermeture de connexions TCP. Arrêter la capture de trame.
60170
8080
http ://193.95.0.1/HTTP/1.1
54448
SYN
http80
SYN Ack
Ack
GET
http/1.1
http OK
TCP [Ack]
http FIN
TCP [ Fin , Ack]
Authentification
Dans cette question nous nous intéressons à la fonction d’authentification. Il existe plusieurs méthodes disponibles pour authentifier les utilisateurs d’un proxy SQUID. Elles font appel à l’un des programmes suivants :
smb_auth : utilise un serveur SMB comme SAMBA ou Windows NT
ldap_auth : se base sur le protocole Linux Lightweight Directory Access
- - ncsa_auth : utilise un fichier de noms d'utilisateur et de mots de passe de style NCSA - - msnt_auth : utilise l'authentification de domaine Windows NT - PAM : utilise les modules Linux "Pluggable Authentication Modules" - getpwam : utilise le fichier passwd de Linux.
4) Dans ce qui suit nous allons utiliser ncsa_auth.
Créer un fichier password
touch /etc/squid/passwd
Ajouter un utilisateur grâce à htpasswd:
htpasswd -b /etc/squid/passwd <nom> <mot de passe>
Dans le fichier squid.conf, au lieu de http_access allow reseau1
Utiliser les directives suivantes :
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd acl pass proxy_auth REQUIRED
http_access allow pass reseau1
TP RL/ II2-ENSI
Page :4
Valider le bon fonctionnement de cette règle.
Autres règles de filtrage (question bonus)
Afin de limiter le nombre de connexions différentes qu'un utilisateur peut effectue, rajouter dans /etc/squid/squid.conf
Nombre maximal de sessions simultanées à partir de différentes adresses IP à 1 (pour # un même utilisateur)« -s » pour un fonctionnement strict (sinon aléatoire) acl maxauth max_user_ip -s 1
Nombre de connexion simultanés limité à 5 acl numconn maxconn 5 # duree de validite de l'authentification authenticate_ttl 30 minute
Règles d'accès http_access deny maxauth http_access deny reseau1 numconn http_access allow pass reseau1 Valider le bon fonctionnement de ce paramétrage. Décrire les tests effectués.
Autres restrictions typiques : # ACL pour une restriction journalière/horaire : # M:Monday T:Tuesday W:Wednesday H:Thursday F:Friday A:Saturday
S:Sunday acl semaine time MTWHF 08:30-17h30
ACL de restrictions par mot passant dans l'url (utilisation d'un fichier contant les # mots interdits))
acl mots_interdits urlpath_regex "/etc/squid/mots_interdits"
ACL de restrictions par url (utilisation d'un fichier contenant les URLs
interdites) acl urls_interdites url_regex "/etc/squid/url_interdites"
# Application, par le refus, de ces
ACLs http_access deny !semaine http_access deny mot_interdit http_access deny urls_interdites
Tester le bon fonctionnement de ces règles et donner une autre alternative à la règle qui permet la restriction journalière/horaire avec authentification et uniquement à partir du réseau1 en utilisant « allow » et non « deny ». Tester le bon fonctionnement de cette règle.
Proxy transparent
Publicité
Dans cette question nous cherchons à mettre en place un proxy transparent. Suivant ce mode de