Ce TP est réalisé entièrement sous Netkit dans un lab fourni sur la page Celene du cours : labvpn.tar.gz
.
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
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
?
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.
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.
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
?
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
Mettre en place un VPN OpenVPN de type host-to-lan à l'aide de la HOWTO OpenVPN.