Préparation

Ce TP est réalisé entièrement sous Netkit dans un lab fourni sur la page Celene du cours : labvpn.tar.gz.

1. Mise en place

Télécharger et extraire le lab puis le lancer à l'aide de la commande lstart en se plaçant dans le répertoire labvpn.

Mettre en place une sonde wireshark sur les deux réseaux lana et wana.

$ vdump lana | wireshark -i - -k &
$ vdump wana | wireshark -i - -k &

Vérifier que la machine alice peut communiquer avec la machine bob

alice# ping -c1 bob

Observer dans Wireshark le format des trames échangées et les représenter sur un schéma.

Analyser le chemin emprunté à l'aide de la commande traceroute

alice# traceroute -n bob

Parcourir le fichier lab.conf et représenter sur un schéma la topologie du lab.

Les réseaux lana et lanb sont des réseaux privés, désactiver le routage pour ces deux réseaux sur le routeur evil :

evil# route del -net 192.168.1.0/24
evil# route del -net 192.168.2.0/24

2. Tunnels GRE

Afin de permettre le routage entre lana et lanb, une solution serait d'utiliser du NAT avec l'inconvénient de rendre publiquement accessibles tous les services de chacun des réseaux sans permettre des liens directs entre les hôtes de chacun des réseaux. Une autre solution est de tirer un câble entre les deux réseaux ce qui n'est pas toujours pratique ni économiquement intéressant. Les tunnels apportent une solution à ce problème en fournissant une forme de câble virtuel.

GRE est un tunnel de couche 3 : il permet de transporter du trafic de couche réseau à travers deux points d'un réseau IP. Lire la RFC GRE afin de comprendre le fonctionnement de ce protocole.

Sous Linux, les tunnels GRE sont gérés à travers ip tunnel. Lire la section tunnel du manuel de ip et la GRE Tunneling HOWTO.

Créer un tunnel GRE entre les routeurs ra et rb dont les extrémités portent respectivement les adresses IP 10.10.0.1/16 et 10.10.0.2/16. Modifier les tables de routage de ra et rb afin de rendre lana et lanb accessibles l'un depuis l'autre.

Vérifier que la machine alice peut communiquer avec la machine bob

alice# ping -c1 bob

Observer dans Wireshark le format des trames échangées sur lana et sur wana et les représenter sur un schéma.

Analyser le chemin emprunté à l'aide de la commande traceroute

alice# traceroute -n bob

À l'aide de la commande nc, échanger un message entre alice et bob. Est-il possible de l'intercepter avec wireshark sur lana ? sur wana ?

3. OpenVPN

OpenVPN offre une solution ad hoc de VPN chiffré reposant sur la technologie TLS/SSL. Le protocole utilisé n'est pas normalisé, il est spécifique à OpenVPN. Il permet d'établir des VPN ou bien en partageant une clé secrète a prori (adapté aux VPN lan-to-lan) ou en utilisant des certificats et de la cryptographie à clef publique (adapté aux VPN host-to-lan).

Lire la MiniHOWTO OpenVPN.

Désactiver le tunnel GRE à l'aide de la commande ip tunnel et vérifier que alice et bob ne peuvent plus communiquer.

Créer et partager une clef secrète entre ra et rb en passant par le répertoire /hostlab/.

Mettre en place un VPN OpenVPN entre ra et rb dont les extrémités portent respectivement les adresses IP 10.10.0.1/16 et 10.10.0.2/16. Modifier les tables de routage de ra et rb afin de rendre lana et lanb accessibles l'un depuis l'autre.

Vérifier que la machine alice peut communiquer avec la machine bob

alice# ping -c1 bob

Observer dans Wireshark le format des trames échangées sur lana et sur wana et les représenter sur un schéma.

Analyser le chemin emprunté à l'aide de la commande traceroute

alice# traceroute -n bob

À l'aide de la commande nc, échanger un message entre alice et bob. Est-il possible de l'intercepter avec wireshark sur lana ? sur wana ?

Désactiver OpenVPN.

4. IPsec

IPsec offre un mécanisme normalisé et donc interopérable de chiffrement des données en mode host-to-host ou lan-to-lan (avec tunnel). L'ensemble des RFCs décrivant IPsec est touffu, on se contentera de lire dans un premier temps la page Wikipedia IPsec et dans un second temps seulement An Illustrated Guide to IPsec.

L'utilitaire setkey (du paquet ipsec-tools) permet sous Linux d'accéder à la configuration SA (Security Association)/SP (Security Policy) du noyau et de la modifier. Il permet de configurer manuellement IPsec sans passer par une phase de négociation et d'échange de clés.

Dans cette partie, on écrira des scripts de la forme suivante qu'on exécutera sur ra et rb pour mettre en place IPsec entre ces routeurs.

#!/usr/sbin/setkey -f
flush;
spdflush;
# les lignes qui commencent par # sont des commentaires
# add permet d'ajouter des SA
add ...
# spadd permet d'ajouter des SP
spdadd ...

Lire le manuel de la commande setkey, noter que setkey -D et setkey -DP permettent d'afficher le contenu des bases de données SA/SP.

Mettre en place IPsec en mode transport entre ra et rb en utilisant uniquement l'authentification hmac-sha1.

Observer dans Wireshark le format des trames échangées lorsque ra ping rb et les représenter sur un schéma.

Mettre en place IPsec en mode transport entre ra et rb en utilisant uniquement le chiffrement aes-cbc.

Lire la documentation de Wireshark relative à l'écoute d'IPSec. Configurer Wireshark en conséquence. Observer dans Wireshark le format des trames échangées lorsque ra ping rb et les représenter sur un schéma.

Mettre en place IPsec en mode tunnel entre ra et rb pour le trafic de lana à lanb en utilisant le chiffrement aes-cbc et l'authentification hmac-md5.

Vérifier que la machine alice peut communiquer avec la machine bob

alice# ping -c1 bob

Observer dans Wireshark le format des trames échangées sur lana et sur wana et les représenter sur un schéma.

5. IKE et IPsec

Racoon2 est une mise en œuvre de démons d'échange de clés (ISAKMP, IKE, KIK) pour IPsec sous Linux.

Installer le paquet Debian racoon2 sur ra et rb (le ficher est déjà présent dans le répertoire /deb/)

ra# dpkg -i /deb/racoon2_20070720a-1_i386.deb

Étudier la documentation du répertoire /usr/share/doc/racoon2 (en particulier les exemples) et du site web Racoon2 ainsi que la description du format du fichier de configuration.

Mettre en place un VPN IPsec en mode tunnel entre ra et rb à l'aide d'IKEv2 et modifier les tables de routage afin de rendre lana et lanb accessibles l'un depuis l'autre.

Vérifier que la machine alice peut communiquer avec la machine bob

alice# ping -c1 bob

Observer dans Wireshark le format des trames échangées sur lana et sur wana et les représenter sur un schéma.

Analyser le chemin emprunté à l'aide de la commande traceroute

alice# traceroute -n bob

À l'aide de la commande nc, échanger un message entre alice et bob. Est-il possible de l'intercepter avec wireshark sur lana ? sur wana ?

6. Tunnel GRE/IPsec

Le mode tunnel d'IPsec ne permet pas de faire passer le trafic multicast. Conjuguer un chiffrement IPsec en mode transport à un tunnel GRE permet d'associer les avantages des deux mécanismes.

Mettre en place un VPN IPsec en mode tunnel entre ra et rb et modifier les tables de routage afin de rendre lana et lanb accessibles l'un depuis l'autre.

Vérifier que la machine alice peut communiquer avec la machine bob

alice# ping -c1 bob

Observer dans Wireshark le format des trames échangées sur lana et sur wana et les représenter sur un schéma.

Modifier le lab pour que les routeurs ra et rb utilisent le protocole de routage RIP pour découvrir les réseaux situés de part et d'autre du tunnel. On configurera à cette fin le démon quagga.

Vérifier que la machine alice peut communiquer avec la machine bob

alice# ping -c1 bob

7. Pour aller plus loin

Mettre en place un VPN OpenVPN de type host-to-lan à l'aide de la HOWTO OpenVPN.

Références

Dernière modification le 09 March 2015