Tunnels - ENSTA ParisTech

Transcription

Tunnels - ENSTA ParisTech
T.P. Réseaux privés virtuels
Tunnels
O. Perret
4 avril 2016
Table des matières
1 Manipulation de tunnels avec ssh
1.1 Présentation de SSH . . . . . . . . . . . . . . . . . . . . . .
1.2 Utilisation courante . . . . . . . . . . . . . . . . . . . . . . .
1.3 Utilisation systématique . . . . . . . . . . . . . . . . . . . .
1.4 Utilisation de SSH pour un tunnel . . . . . . . . . . . . . . .
1.5 Relayage de protocoles . . . . . . . . . . . . . . . . . . . . .
1.6 Redirection de ports . . . . . . . . . . . . . . . . . . . . . .
1.7 Précision à l’intention des utilisateurs de Microsoft Windows
1.7.1 Problème spécial : le serveur X sous Windows . . . .
1.8 Exercice facultatif . . . . . . . . . . . . . . . . . . . . . . . .
1.9 Transition : Rappels sur la cryptographie à clef publique . .
2 Utilisation d’un VPN en tant que client
2.1 Installation du package OpenVPN . . . . . . . . . . . . .
2.2 Génération d’une infrastructure de clefs pour OpenVPN .
2.3 Récupération du fichier de configuration client . . . . . .
2.4 Branchement sur le VPN . . . . . . . . . . . . . . . . . .
2.5 Supervision . . . . . . . . . . . . . . . . . . . . . . . . .
2.5.1 Rappel Linux . . . . . . . . . . . . . . . . . . . .
2.5.2 Rappel MS-Windows . . . . . . . . . . . . . . . .
3 Fin du TP : ipv6,...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
3
4
4
4
4
5
5
5
.
.
.
.
.
.
.
5
5
6
6
6
6
6
6
7
1
Ionis - STM
O. Perret
Retour sur la présentation précédente
Visite commentée des liens cliquables de la présentation précédente.
Schémas
Différentes illustration des mécanismes des VPN. pages de référence...
Certificats
Démonstration pratique des affirmations énoncées sur l’écosystème des certificats.
Démo de connexion
Exemple de connexion et observation des conséquences. Objectifs du TP.
1
Manipulation de tunnels avec ssh
Le but de la première partie de ce T.P. est de rendre accessible un serveur web situé sur
la partie privée du réseau demo.perrets.info sur lequel les droits d’accès ont été restreint
aux utilisateurs locaux. Vous avez un compte sur le serveur mais le filtrage vous interdit
d’accéder aux pages directement. A vous de mettre en place le relayage.
1.1
Présentation de SSH
SSH chiffre à la volée l’intégralité d’une communication de machine à machine. Utilisant
au maximum les possibilités d’encapsulation de TCP/IP, il permet de faire circuler à peu
près n’importe quoi qui ne génére pas de connections réseau intempestives. La mauvaise
réputation des réseaux Peer-to-Peer et le fait qu’SSL lui a été préféré dans les navigateurs
web font qu’il est méconnu 1 .
Il comprend un serveur sshd et un certain nombre de clients ssh, scp, slogin, sftp, .... Il
est fourni en standard sur MacOS et existe en version packagée pour MS-Windows.
Lors d’une analyse de sécurité liée aux VPN, il est tout à fait courant d’aboutir à
la conclusion qu’un tunnel SSH est une réponse au besoin suffisante (pas forcément besoin de routage pour faire du transfert de port) voire meilleure (gestion des clefs simplifiée).
1. les navigateurs Web proposent leur propre couche de chiffrement, le plus souvent SSL(Secure Socket
Layer)
2
Ionis - STM
1.2
O. Perret
Utilisation courante
Le protocole ssh est basé sur un partage de secret entre les machines à partir duquel
ces deux machines authentifient mutuellement leurs utilisateurs à l’aide de défis chiffrés
avec ce secret. Une fois l’authentification assurée, une clef de session est générée et le
trafic correspondant est chiffré avec. Le ralentissement de la connexion dû au chiffrement
est toujours raisonnable, sauf en cas d’abus d’icones prévisibles, lesquelles sont d’ailleurs
déconseillées comme tout trafic prédictible.
1. Vérification de l’identité de l’utilisateur déja garantie par Unix ;
2. Confirmation de la confiance de la machine distante et création d’une clef de session
en accord avec la machine distante ;
3. Vérification distante de l’identité de l’utilisateur grâce à un dialogue chiffré par la
clef de session précédente.
Le dialogue changera sensiblement dans les 2 cas suivants :
– Si vous établissez plusieurs sessions chiffrées vers la même machine. Le contrôle sera
simplifié dès la deuxième connexion, puisque SSH vous a gardé une trace de la clef
publique de la machine de destination ;
– Si vous visez une machine qui a changé de numéro récement, ou qui vient d’être
réinstallée.
1.3
Utilisation systématique
Le modèle de sécurité de SSH est principalement bati sur le fait qu’il est difficile à un
intrus d’usurper durablement l’identité de certaines machines dans des conditions normales
d’exploitation. Un secret établi dans cette période de confiance n’en aura que plus de valeur.
La finesse ultime est donc de générer un secret qui sera réutilisable ultérieurement sans
avoir à retaper de mot de passe.
– Identifiez la machine vers laquelle vous souhaitez établir une connexion systématique ;
– Observez la version de ssh : ssh -V ;
– Générez un couple de clefs RSA adapté : ssh-keygen(ajoutez l’option -1 ou -2 selon
le cas) ;
– Copiez la clef publique ainsi générée sur la machine distante, dans un fichier appelé
authorized_keys (ou authorized_keys2).
Le serveur distant envoie alors au client un défi chiffré avec la clef publique de l’utilisateur, que le client résoud avec sa clef privée. Si les deux machines sont en confiance, la
connexion est automatique.
Attention : sur un réseau local fédéré, ce test peut être biaisé par le fait que toutes les
machines partagent les mêmes fichiers, et donc les mêmes autorisations.
3
Ionis - STM
1.4
O. Perret
Utilisation de SSH pour un tunnel
Il peuvent être cependant désactivé par le serveur sshd sur l’hôte distant, voire par le
client 2 .
Les fichiers à consulter en cas de problèmes sont (path à vérifier sur votre distribution) :
– /etc/ssh/sshd_config (sur le serveur) ;
– /etc/ssh/ssh_config (sur le client client) ;
– et la “man page” de ssh où le message d’erreur est sûrement documenté.
1.5
Relayage de protocoles
Le relayage de protocole est inhérent au design. Exemple d’utilisation d’un programme
à distance : les clients X.
ssh -X [email protected]
<dialogue d’ouverture de session>
> xterm &, xeyes &, xload &
1.6
Redirection de ports
Dans un terminal, tapez la commande 3 :
ssh -L 8000:localhost:81 [email protected] sleep 60
et dans une autre fenêtre :
telnet localhost 8000
ou dans un navigateur web, joignez l’URL : http://localhost:8000/
1.7
Précision à l’intention des utilisateurs de Microsoft Windows
Le relayage de ports fonctionne très bien sous Windows et nécessite juste l’installation
d’un client léger. Il en existe de très bons gratuits, souvent fournis avec un autre produit
orienté réseau, parfois moins gratuit. Les deux qui suivent suffisent pour un usage courant :
– Putty (associé à Winscp, outil de transfert de fichiers) :http://www.putty.org/
– Tunnelier (associé à WinSSHD, serveur ssh) :http://www.bitvise.com/tunnelier
2. c’est le cas par défaut dans Ubuntu
3. Telle que la commande est lancée, vous avez 60 secondes pour agir. Augmentez le score et/ou remontez
le tunnel s’il le faut.
4
Ionis - STM
1.7.1
O. Perret
Problème spécial : le serveur X sous Windows
Sur un système Windows, il n’y a pas de serveur X à livraison, même dans les kits
optionnels ; il faut se l’installer soi-même (contrairement à MacOS qui l’inclut dans son
disque supplémentaire à l’intention des développeurs, à coté du compilateur gcc). Cela
limite les applications de ce genre de relayage, la plus intéressante étant le déport d’affichage, proposée par l’outil “Nomachine NX” ( http://www.nomachine.com/)
Quelques noms de produits pour Windows intégrant un serveur X, par ordre de coût
(et de fonctionnalités) décroissant :
– Exceed, de la société Hummingbird/Opentext : http://connectivity.opentext.com ;
– X-win32, de la société Starnet : http://www.starnet.com/products/xwin32/
– Cygwin, l’environnement de développement GNU pour Windows.http://www.cygwin.
com/)
Ils incluent tous un client SSH.
1.8
Exercice facultatif
En utilisant cette technique contournez le firewall qui interdit d’utiliser le serveur de
mail pour envoyer un message à perret@localhost
1.9
Transition : Rappels sur la cryptographie à clef publique
SSH est l’occasion de rappeler les possibilités d’utilisation de la crypto à clef publique
pour sécuriser du trafic en ligne. Ce sont les mêmes principes qui seront utilisés de façon
systématique par OpenVPN (cf. transparents de fin du cours précédent).
2
Utilisation d’un VPN en tant que client
La démonstration de la configuration côté serveur suivra la page de référence du site
d’OpenVPN (http://openvpn.net/howto.html), avec des digressions sur la PKI et la configuration client, afin de vous permettre de recommencer au prochain TP en tant que “prestataire”.
Avant de se monter une infra serveur, nous allons commencer par des configurations
clients, avec la même cible que précédement. Les plus ambitieux pourront monter un tunnel
ipv6 en utilisant un service gratuit comme celui de Hurricane Electric http://ipv6.he.net/).
2.1
Installation du package OpenVPN
OpenVPN est distribué sous forme de sources pour Windows(zip) ou Unix(tgz), ou sous
forme de package pour Windows(.exe) ou les distributions Linux courantes (.deb, .rpm). Il
existe aussi pour les instances virtuelles.
5
Ionis - STM
O. Perret
La compilation ne pose pas de problèmes particuliers, si ce n’est les dépendances (lzo,...)
2.2
Génération d’une infrastructure de clefs pour OpenVPN
OpenVPN est fourni avec sa propre PKI, qui permet de générer les certificats nécessaires
et suffisants pour monter l’infra-structure :
– certificat racine
– certificat serveur
– 1 certificat par client
Ce sera l’occasion aussi de générer les fichiers de configuration de chaque client, et de
vous les transmettre.
2.3
Récupération du fichier de configuration client
Pour votre première connexion, vous allez utiliser le fichier de configuration client généré pour l’occasion.
Pour la transmission des fichiers de configuration et des clefs, il est recommandé d’utiliser un canal sécurisé, nous utiliserons le tunnel monté précédement.
2.4
Branchement sur le VPN
En vue d’une utilisation en simple client, le package openvpn est conçu pour aller lire
automatiquement sa configuration dans un fichier fourni par l’administrateur du VPN.
2.5
Supervision
Nous allons donc nous concentrer sur l’observation du réseau et les commandes de
supervision. L’interface à surveiller est bien évidement tun0:
2.5.1
Rappel Linux
Sous Linux, les commandes de supervision sont parfois supposées n’être utilisées que
par le super-utilisateur, donc installées dans /sbin ou /usr/sbin. Veillez à ce que ces 2
répertoires soient dans votre variable PATH.
– ifconfig -a, pour lister les interfaces réseau ;
– route -n ou netstat -rn, pour lire les tables de routage et les connexions ouvertes ;
– ping et traceroute, pour utiliser ICMP.
– arp pour descendre au niveau des tables arp (couche 2)
2.5.2
Rappel MS-Windows
Les commandes équivalentes sous Windows, à lancer dans une fenêtre MS-DOS) sont :
6
Ionis - STM
–
–
–
–
3
O. Perret
ipconfig /all
route
ping et tracert
arp
Fin du TP : ipv6,...
Selon le succès ou l’échec de la manoeuvre, la fin du T.P. sera consacrée au débuggage
ou aux réflexions sur l’architecture à adopter en vue de monter votre propre VPN, à méditer
d’ici au prochain T.P.
7