TP-2 Écoute de trames et applications

par Joseph Razik, le 2024-02-07

1   Objectif

L'objectif de ce TP est d'observer les échanges des couches éthernet, réseaux, transport et application lors de l'utilisation de protocoles d'applications (telnet, FTP, SMTP, POP3 et HTTP).

2   La configuration du réseau sous Unix : Révisions du TP1

En utilisant les commandes ip et netstat étudiées au TP-1, déterminez :

  • Quelles sont toutes les adresses IP de votre machine pour toutes ses interfaces ?
  • Quelles sont les adresses MAC des interfaces ethernets de votre machine ?
  • Quelles sont les adresses et préfixes des réseaux (pas des interfaces) associés à eth0 et vboxnet0 ?
  • À quoi sert l'interface lo, quelle(s) est (sont) son (ses) adresse(s) IP ?
  • Quelles sont les services en écoute en TCP/IPv4 sur votre machine (numéro de port, nom) ?
  • Quelles sont les routes sur votre machine et décrire chaque ligne.

3   ARP et adresses IP

Lire la page de manuel concernant la commande :

arp
  • Affichez le contenu de la table ARP de l'hôte et de client (celle-ci peut être vide, dans ce cas, effectuez sur client la commande suivante ping -c 1 internalnet puis refaites la commande arp)
  • Même question mais en affichant les adresses IP au lieu des noms de machines.

Sur l'hôte uniquement

  • Exécutez la commande: ping www.univ-tln.fr. Quelle est l'adresse IP de cette machine ?
  • Que donnent les commandes host www et la recherche sur le site http://wq.apnic.net/static/search.html pour l'IP 193.49.96.26 (commande host www.univ-tln.fr mais de l'extérieur). Exécutez la commande host 193.49.96.26 qui vous donne le nom de cette machine. Que concluez-vous de cette manipulation et de ses résultats (expliquez bien sûr).
  • Quel est le rôle de la commande host ?
  • Exécutez la commande: ping 10.9.185.1. Exécutez la commande host 10.9.185.1 qui vous donne le nom de cette machine. Exécutez la commande host 10.9.185.1 8.8.8.8 et host sinfo1.univ-tln.fr 8.8.8.8. Expliquez le résultat obtenu.
  • Exécutez la commande tracepath avec comme paramètre l'IP de votre machine. Faire de même avec l'IP d'une des machines de la salle. Faire maintenant la commande tracepath sasha, puis tracepath www et tracepath webmail. expliquez les réponses que vous renvoient ces commandes.
  • À partir des observations précédentes essayez de déterminer l'adresse IP et l'adresse MAC de la machine www et s'il y a un problème, expliquez pourquoi.

3.1   Analyse du protocole ARP

Nous allons utiliser un programme d'écoute de trames capable de décoder les protocoles que nous avons étudiés : wireshark (http://www.wireshark.org/).

Une introduction à wireshark est présentée ici .

Pour effectuer une capture dans le réseau virtuel, vous pourrez lancer le programme wireshark via ssh sur une des machines virtuelles (à vous de bien choisir laquelle), et commencer la capture de trames. En effet, comme il n'y a pas d'interface graphique sur les machines virtuelles, vous devez passer par l'intermédiaire de la machine hôte à l'aide de la commande suivante:

ssh -Y root@192.168.56.X wireshark

avec 192.168.56.X l'adresse IP d'une machine virtuelle choisie.

Wireshark propose des filtres appliqués lors de la capture et ainsi ne seront gardés que les paquets pour lesquels le filtre est vrai. Les filtres se décomposent en 3 parties :

  • Le protocole qui peut être eth, ip, arp, rarp, tcp ou encore udp,
  • La direction qui peut être src ou dst,
  • Un champ qui peut être host, net ou port suivi d'une valeur.

Les opérateurs and, or et not peuvent être utilisés pour combiner des filtres. Attention, il existe aussi des filtres d'affichage (appliqués après la capture).

Analysez une séquence de résolution d'adresse avec ARP en suivant la méthode suivante :

  • Faites les manipulations à partir de la machine client ;
  • Utilisez : arp comme filtre pour wireshark pour n'avoir que les échanges concernant ARP ;
  • Affichez la table ARP SANS RÉSOLUTION DES NOMS, vérifiez qu'elle ne contient pas d'entrée pour internalnet. Dans le cas contraire, recommencez après avoir redémarré la machine client) ;
  • Faites un ping de la machine client qui envoie 2 paquets vers la machine internalnet mais en utilisant son adresse IP comme paramètre, pas son nom ;
  • Arrêtez la capture ;
  • La table ARP a-t-elle été modifiée ?
  • Que s'est-il passé ? À qui est destinée la première trame ? D'où vient la seconde ? À quoi correspondent les 4 trames suivantes ?
  • Quelle est la longueur utile des données transportées dans la trame Ethernet lors d'une requête ARP selon la théorie ? Cela correspond-il avec les données issues de la capture ?

4   Analyse de la commande ping

Lisez le man de la commande ping.

Quel est le protocole utilisé par cette commande ?

Sans mettre de filtre dans wireshark, sur la machine client, exécutez la commande ping vers la machine server pour envoyer 2 requêtes au maximum.

  • Pour les 2 premiers échanges (requête-réponse), analysez le contenu : de la trame ethernet, du paquet IP, et de ICMP. Détaillez les adresses sources et destinations.

Sur la machine client, exécutez la commande ping -c 2 10.1.78.254 (la machine externalnet doit être allumée)

  • Que se passe-t-il ? Quel message est retourné par ping ? Quelles trames circulent sur le réseau ?
  • Quel message est retourné par ping si vous essayez d'atteindre une machine du réseau local mais qui n'existe pas (par exemple 192.168.2.42) ? Quelles trames circulent sur le réseau ?
  • En lisant le man, que fait la commande (sur client) ping -s 3200 -c 1 server ?
  • Que s'est-il passé au niveau des trames Ethernet (en utilisant wireshark) ?

La commande ping comme de nombreuses autres est également définie pour le protocole IPv6. Pour spécifier une requête ping en utilisant le protocole IPv6, il faut soit utiliser la commande ping6, soit passer l'option -6 à la commande ping.

Par ailleurs, bien que la notion d'association @MAC-@IPv6 existe toujours dans IPv6, le protocole ARP n'existe que pour IPv4 et on ne peut donc pas consulter la table ARP ni utiliser la commande arp dans le cadre d'IPv6. Pour consulter les associations existantes, il faut utiliser la commande ip.

  • Sachant que les machines adjacentes sont considérées étant celles du voisinage, affichez l'équivalent de la table ARP mais en IPv6 sur la machine client ;
  • Toujours sur la machine client, exécutez la commande ping6 vers la machine server pour envoyer 3 requêtes maximum.
  • Décrivez les 4 échanges (requête-réponse) qui ont eu lieu et analysez le contenu : de la trame ethernet, du paquet IPv6, et de ICMPv6.
  • Que vaut maintenant la table de voisinage sur la machine client ?

5   Analyse de la commande traceroute

Pour cette exercice, il faut que externalnet soit lancée (elle donne accès à l'extérieur). Lisez le man de la commande traceroute.

Capturez les trames ICMP et UDP en partance ou à destination de la machine client et lancez la commande traceroute microsoft.com.

Arrêtez la capture dès la fin de la commande. Déduisez de l'analyse des trames le fonctionnement de cette commande (cf. paramètre Time To Live (TTL) de ping).

6   Les problèmes de sécurité

Après avoir configuré une écoute wireshark, depuis la machine client faites un telnet sur la machine server en utilisant le compte de login user dont le password est user.

  • Analysez la connexion TCP (les SYN et ACK, et les tailles de fenêtres)
  • Comment se déroule la connexion applicative ? Que constatez-vous dans wireshark ?
  • Essayez de saisir des commandes ? Que constatez-vous dans wireshark ?
  • Testez un clic droit sur un des premiers segments de la connexion puis « Follow TCP Stream ».
  • Que fait la commande ssh ? Effectuez la même connexion en ssh en écoutant les trames avec wireshark. Que remarquez-vous ?

7   Réglage du pare-feu

La machine internalnet joue le rôle de routeur entre les réseaux de la machine client et le reste des machines. Par sa position d'intermédiaire, internalnet est le bon endroit pour introduire des règles de sécurité pour limiter les types de connexions entre les deux réseaux.

  • Sur la machine internalnet, affichez les régles de la table filter concernant le protocole IPv6.
  • Combien de chaînes sont définies ?
  • La chaîne qui concerne le transfert de données est la chaîne FORWARD. Quelle est la police par défaut ?
  • Quelles sont les limitations en place ?
  • Modifiez la sous-chaîne loc_frwd de façon à bloquer les paquets ICMPv6 fragmentés. Pour cela, vous devrez ajouter une nouvelle règle en utilisant le module ipv6header et son option header. La cible de cette règle sera DROP.
  • Vérifiez le fonctionnement de votre règle en effectuant un ping IPv6 nécessitant une fragmentation. Assurez-vous qu'un ping de petite taille n'est pas filtré.
  • Ajoutez, toujours dans la sous-chaîne loc_frwd, une règle afin d'interdire les connexions ssh IPv6 vers la machine server, avec la cible DROP.
  • Vérifiez que votre règle fonctionne bien que dans le sens client-server.
  • Modifiez les régles que vous avez ajoutées afin que la cible ne soit plus DROP mais REJECT. Quel comportement cela a-t-il modifié pour l'utilisateur sur la machine client.