TD Tunnels PDF
TD Tunnels PDF
TD Tunnels PDF
Travaux dirigés
1er février 2016
Travaux
Dirigés
1 Les bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1 Principe 5
1.2 Première connexion 5
1.3 Utilisation de netcat pour transmettre le contenu d’un fichier 6
1.4 Utilisation de Netcat pour exécuter des commandes 7
3 Tunnels ludiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1 Tunnel HTTP 14
3.2 Tunnel DNS 15
4 Tunnel GRE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
4.1 Principe 17
4.2 Objectif 19
4.3 Mise en œuvre 19
4.4 Mise en place de la structure 20
4.5 Mise en place du tunnel GRE 20
2
4.6 Vérification 22
Dans notre contexte, la notion de tunnel est une image permettant d’illustrer l’éta-
blissement d’une liaison entre deux extrémités.
Cette liaison peut être réalisée avec ou sans chiffrement. On parle de tunnel clair ou
chiffré.
Les informations transmises peuvent être intelligibles ou chiffrées mais cette notion
est indépendante de celle du tunnel. Sauf cas particulier, le contenu n’est pas dépendant
du contenant.
Des tunnels clairs (GRE) peuvent transporter des flux chiffrés (HTTPS), des tunnels
chiffrés (IPSEC) peuvent transportes des flux clairs (HTTP).
Les extrémités peuvent être réalisées par une simple application, support d’une liaison
entre deux postes locaux, comme elles peuvent être construites sur des équipements
dédiés, supports de toute l’infrastructure nécessaire au chiffrement (AC).
La mise en œuvre de tunnel consiste à encapsuler des protocoles de communication
dans des protocoles de communication. La méthode académique consiste à intégrer IP dans
IP mais d’autres combinaisons sont possibles. Motivé par un objectif de contournement de
sécurité ou d’évasion de données, des développeurs proposent des applications permettant
de réaliser des tunnels de type IP dans ICMP ou IP dans DNS. Plus subtils, des
outils comme SSH permettent de réaliser des tunnels de niveau Ethernet dans IP. Un
autre objectif peut être aussi de ralentir la découverte des extrémités des tunnels. En
encapsulant des tunnels, une série de bonds peut être réalisée afin de rendre plus complexe
l’identification de la première extrémité (RPV).
Dans l’approche académique, l’objectif est de créer un support de communication
sécurisée entre deux entités : des réseaux privés virtuels.
Dans nos architectures, les solutions les plus couramment déployées pour rapprocher
des LAN sont le protocole GRE (tunnel clair) et le protocole IPSEC (tunnel chiffré).
Les solutions de tunnels chiffrés utilisant du chiffrement gouvernemental font l’objet
de formations spécifiques au sein de la division cyber. Dans ce support, nous ne traiterons
ces concepts en utilisant uniquement des outils de chiffrement civil.
Afin de bien comprendre ces concepts, ce TD permettra de faire un tour d’horizon
de ces mécanismes.
4
1. Les bases
1.1 Principe
NetCat est aussi appelé le couteau suisse de l’administrateur réseau. Il permet la
réalisation de communications entre deux extrémités de façon très simple. Cet utilitaire
peut aussi bien assurer la fonction de serveur que la fonction de client. Le statut de
serveur consiste à être en écoute sur un port ; il reste en attente d’une connexion entrante.
Le statut de client consiste à émettre des paquets depuis un port source vers une adresse
IP et plus spécifiquement sur un port destination. Si le port destination correspond à
celui d’un serveur en écoute, une connexion pourra s’établir.
ip a
nc -l -p 1234
Rmq L’argument -l correspond au mode écoute et -p permet de spécifier le port (le port
1234 dans notre exemple).
1.3 Utilisation de netcat pour transmettre le contenu d’un fichier 6
Question 1
Depuis le second poste, en remplaçant les valeurs XX par l’adresse IP de votre seveur,
exécutez la commande suivante afin de réaliser votre premier client Netcat :
nc XX.XX.XX.XX 1234
Question 2
nc -e /bin/sh -l -p 1234
nc XX.XX.XX.XX 1234
Les commandes que vous saisissez dans le terminal s’exécutent sur le serveur distant.
Exemple : eject ou poweroff
On peut constater que cet accès anonyme et non maitrisé n’est pas acceptable. Il est
nécessaire de mettre en oeuvre une solution permettant d’authentifier les utilisateurs.
2.1 SSH
Pour la suite de ce TD, les serveurs utilisés sont virtuels. Votre poste physique sera
situé à Paris, deux machines virtuelles seront située à Tokyo et Sydney 1 2 .
Ces serveurs virtuels sont accessibles via le raccourcie ”support” situé sur votre bureau.
L’hyperviseur utilisé est VirtualBox ; à partir de son interface, démarrez le serveur Tokyo.
Votre objectif est d’administrer ce serveur. Vous disposez de l’utilitaire Telnet.
L’adresse du serveur est 192.168.56.101.
Question 3
Question 4
Déconnectez vous et analysez la capture. Quelles sont les versions d’OPEN SSH
mises en œuvre ? Connaissez-vous la phase d’échange de clés DiffieHellman ?
Cette clés générée a une durée de validité de 45 jours (cf. PSSIA) et une taille
minimun de 2048 bits (préconisation de l’ANSSI).
Une fois cette opération réalisée, la clés publique doit être transférée sur le serveur.
Connectez-vous au serveur afin de créer sa zone de stockage :
Sur votre poste client, vous pouvez maintenant pousser la clé vers le serveur en
utilisant la commande : ssh-copy-id
Une fois connecté sur le serveur, connectez-vous avec le compte root (su). Éditez le
fichier /etc/ssh/sshd config afin d’y intégrer les éléments suivants :
ListenAddress 192.168.56.101
AllowUsers stagiaire
PasswordAuthentication no
PermitRootLogin no
Cette consultation est en claire, et passe par des zones non maitrisées.
Le flux clair (représenté en rouge) passera dans le flux chiffré (représenté en noir).
Les flux HTTP passeront dans le tunnel SSH entre Paris et Tokyo.
La commande suivante permet de déporter le port local 2222 de la station cliente sur
le port 80 du serveur Sydney et passant dans le flux SSH destiné à Tokyo.
2.5 Tunnelception
Vous pouvez répéter les étapes précédentes pour obtenir l’architecture suivante :
Vous obtenez un flux chiffré dans un flux chiffré. Ce surchiffrement est couramment
mis en œuvre sur les réseaux : dans nos ambassades les flux CD sont encapsulés dans les
flux DR.
3.1.3 Principe
Côté HTTPClient : l’application HTTPClient sur le poste Paris est en écoute sur le
port TCP 3000, et retransmet tout ce qu’elle reçoit sur ce port au port 80 du serveur
3.2 Tunnel DNS 15
HTTPTunnel (Tokyo).
Côté HTTPServeur : Tokyo est en écoute sur le port TCP 80 et retransmet tout ce
qu’il reçoit sur ce port au port 22 de Sydney.
/etc/init.d/apache2 stop
perl httptunnel_server.pl
Sur votre poste hôte Paris, en tant que root, exécutez les commandes suivantes :
La capture des flux, via l’application Wireshark, vous permettra de constater l’en-
capsulation des flux SSH dans un traffic HTTP entre Paris et Tokyo.
Sur la deuxième, en tant que root, exécutez la commande suivante (en remplaçant
XX par l’adresse IP de la première station) :
ssh stagiaire@10.XX.0.1
Le mot de passe du compte stagiaire est stagiaire. La capture des flux, via l’application
Wireshark, vous permettra de constater l’encapsulation des flux SSH dans un traffic
DNS entre vos deux stations.
GRE a été développé par Cisco et peut encapsuler une large gamme de types de
paquets de différents protocoles dans des paquets IP. Les tunnels GRE sont conçus pour
ne pas avoir besoin de maintenir un état, ce qui signifie que chaque terminaison de tunnel
4.1 Principe 18
Rmq Dans nos systèmes militaires, les tunnels de type Generic Routing Encapsulation
permettent le multicast dans des architectures qui ne le supportent pas nativement.
4.2 Objectif
Monter un tunnel entre deux réseaux locaux au travers d’un WAN.
.100 .100
.1 .1
XX.2 YY.2
Le masque est volontairement fixé à /24 sur le réseau 172.XX pour forcer le routage.
Si l’on conserve le /16 (le masque par défaut), dans le contexte de la salle de cours, les
commutateurs laisseront passer les paquets.
Rmq Le routage doit être activé sur la station réelle, en utilisant sur les machines réelles
la commande suivante :
# sysctl -w net.ipv4.ip_forward=1
Vérifiez les liaisons entre le client, le PC et le routeur : (O= ping OK, N = ping NOK)
Routeur Routeur PC-XX VBox XX PC-YY VBox YY
172.S.XX.1 172.S.YY.1 172.S.XX.2 10.S.XX.100 172.S.YY.2 10.S.YY.100
PC-XX
172.S.XX.2 O O O O N
VBox XX
10.S.XX.100 N N O N N
PC–YY
172.S.YY.2 O O O N O
VBox YY
10.S.YY.100 N N N N O
Question 5
# modprobe ip_gre
2. Utilisez la commande ip tunnel pour monter un tunnel en mode GRE entre les
cartes eth0 des deux stations réelles. Pour obtenir de l’aide sur cette commande,
saisissez :
# ip tunnel help
Vous nommerez vers-YY l’extrémité du tunnel. Cette extrémité sera ensuite vue
par ifconfig comme une interface.
# ip tunnel
gre0: gre/ip remote any local any ttl inherit nopmtudisc
vers-YY: gre/ip remote 172.S.YY.2 local 172.S.XX.2 ttl
inherit
# ifconfig vers-YY
vers-11 Link encap:UNSPEC HWaddr AC-10-0A-02-00-00-F1-85-00-00-
00-00-00-00-00-00
UP POINTOPOINT RUNNING NOARP MTU:1476 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Ce qui donne, dans la table de routage de PC-XX affichée avec la commande route :
# route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
172.S.XX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.S.YY.0 0.0.0.0 255.255.255.0 U 0 0 0 vers-YY
0.0.0.0 172.S.XX.1 0.0.0.0 UG 0 0 0 eth0
# ip route
172.S.XX.0/24 dev eth0 proto kernel scope link src 172.S.XX.2
10.S.YY.0/24 dev vers-YY scope link
# modprobe ip_gre
2. Utilisez la commande ip tunnel pour monter un tunnel en mode GRE entre les
cartes eth0 des deux stations réelles.
Vous nommerez vers-XX l’extrémité du tunnel. Cette extrémité sera vue par
ifconfig comme une interface.
4.6 Vérification
Les pings doivent maintenant passer entre les deux PC d’extrémité (Vbox-XX et
Vbox-YY).
Question 6
Testez le retour d’un ping depuis 10.S.XX.100 vers 10.S.YY.100. Réalisez un trace-
path de 10.S.YY.100 depuis 10.S.XX.100. Que constatez-vous ?
Question 7
Question 8
Pourquoi le MTU observé est-il de 1476 octets ? Quelles sont les implications ?
Question 9
mkdir /home/distant
fusermount -u /home/serge/distant
5.2.3 Principe
Un serveur ssh VM SRV attend les requêtes du client VM 1 et du client VM 2. Les
pare-feux autorisent uniquement les flux à destination du serveur SSH port 22.
Le client VM 1 monte un tunnel avec VM SRV en spécifiant qu’il désire encapsuler le flux
entre un port local VM 1 :Port local et le port d’un serveur distant VM SRV :Port dest.
Le client VM 2 monte un tunnel avec VM SRV en spécifiant qu’il désire encapsuler le flux
entre un port local VM 2 :Port local et le port d’un serveur distant VM SRV :Port dest.
VM 1 est maintenant en mesure de consulter les pages WEB du serveur WEB hébergé
par VM 2
Question 10