Transcription

Réseaux Privés VirtuelsMaster Informatique 1ère AnnéeA nnée 2006 - 20 07VPN SSLL i vr a bl e # 5(Document de 17 pages)P a r t i c i pa nt sFabrice DOUCHANTTarek AJROUDCharles BALLEJérémy MELINEE nc a dr a ntRoland AGOPIANRésumé :Ce document explique le fonctionnement des VPN SSL et contientune procédure visant à installer et configurer un serveur et clientVPN SSL à l’aide du logiciel sous licence GPL : OpenVPN.Centre de Mathématique et d’InformatiqueTechnopole Château Gombert39, rue F. Joliot Curie13453 MARSEILLE CEDEX 13

VPN SSLRéseaux Privés VirtuelsSUIVI DU 71.0DOUCHANTFabrice28/05/071.1Version : 1.1Edition : 28/05/07COMMENTAIRESCréation du documentAjout principe defonctionnement des VPNSSLTYPE DE DIFFUSIONPubliquePubliquePage 2/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés [email protected] M1 Etudiant M1 Etudiant M1 rs.frEtudiant M1 InformatiqueVersion : 1.1Edition : 28/05/07Page 3/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés VirtuelsTABLE DES MATIERES1.Présentation des VPN SSL. 51.1.Introduction aux VPN SSL. 51.2.Le principe de fonctionnement des VPN SSL . 51.3.Les solutions VPN SSL . 62.Procédure d’installation et de configuration pour OpenVPN. 72.1.Pré requis . 7A. Logiciels requis. 7B. Mode de fonctionnement. 7C. Configuration réseau . 82.2.Configuration du Serveur . 8A. Installation et tests. 8B. Scripts. 8C. Génération des clefs . 9D. Configuration . 102.3.Configuration du Client. 11Version : 1.1Edition : 28/05/07Page 4/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés Virtuels1. Présentation des VPN SSLCe chapitre présente les VPN SSL : leur principe et les différentes solutions.1.1.Introduction aux VPN SSLPlusieurs technologies existent pour mettre en place un VPN : solutions basées sur PPTP, L2TP,IPSEC, SSL/TLS, etc. (pour plus de renseignements, se référer au document « Les VPN »).Considéré jusqu'aujourd'hui comme la meilleure solution pour déployer un VPN, le protocole IPSECprésente cependant quelques points faibles dont sa complexité de mise en oeuvre. En effet, IPSECpossède beaucoup trop d'options pour être configuré et administré de façon solide par des utilisateursnon experts. Le déploiement d'une solution VPN basé sur IPSEC s'annonce ainsi être une tâchesouvent longue et fastidieuse, et peut présenter des risques de sécurité s'il est effectué par desutilisateurs non initiés.C’est ainsi que sont apparus les VPN basés sur SSL/TLS. Le protocole SSL/TLS permet de sécuriserles communications sur Internet en garantissant l'authentification des parties, le chiffrement et lavérification de l'intégrité des connexions (pour plus d’informations, se référer au document « SSL »).Les VPN SSL apportent les mêmes services que IPSEC avec beaucoup plus de flexibilité et de facilitéde mise en œuvre autant du point de vue du serveur que des clients.1.2.Le principe de fonctionnement des VPN SSLFigure 1 : Schéma basic d’une communication Client/Serveur VPNContrairement aux VPN IPSec dont le fonctionnement consiste à établir un tunnel chiffré permettant lepassage des flux au niveau réseau (routage), les VPN SSL ne relaient pas les datagrammes IP, maisrelaient les communications TCP et UDP dont la partie transitant par internet est sécurisée (chiffrée).On peut considérer les VPN SSL comme une amélioration des VPN IPSec : d’une part puisque lesVPN SSL peuvent rendre les mêmes services que leurs homologues IPSec mais aussi parce qu’ilsutilisent plus « intelligemment » l’essor du Web. Ainsi il est possible d’utiliser le Web via un simplenavigateur (on parle alors de client « légers » ou « clientless ») pour se connecter à un serveur VPNSSL et accéder au contenu Intranet d’une entreprise. Dans cette configuration, le serveur VPN SSL seconduit comme un Proxy qui établit la correspondance entre une ressource Web (HTTP/HTTPS)demandée par le client directement au serveur VPN et la source proprement dite dans le réseauinterne de l’entreprise. Il faut alors traduire chaque référence à une ressource interne en uneréférence relative à l’adresse du serveur lui-même. Il est aussi possible dans cette configurationd’utilise une passerelle VPN SSL pour diriger les utilisateurs vers n’importe quelle application intranetvalidée pour le Web, même si ces applications ne sont pas validées pour SSL. Le problème de cettesolution est qu’il n’est pas aisé de traduire chaque ressource, par exemple dans le cas d’applicationsde type Applet Java, ActiveX, etc. Cependant cette solution est suffisante pour de nombreuxutilisateurs, de plus il n’est pas nécessaire de configurer les clients puisque l’accès au serveur VPN seVersion : 1.1Edition : 28/05/07Page 5/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés Virtuelsfait par un simple navigateur et contrairement aux solutions VPN IPSec de base, les contrôles etrestrictions des utilisateurs aux serveurs internes est beaucoup plus accrus.Dans le cas où l’accès Web au réseau interne ne suffit pas, il est possible d’appliquer d’autresprotocoles au moyen du VPN SSL via une applet de connexion « IPSec virtuelle » spécifique. Cesapplets se connectent dans le système d’exploitation de l’utilisateur de la même manière qu’IPSec, encréant une interface réseau virtuelle. Mais, contrairement à IPSec, ces applets ne demandent pas deconfiguration complexe, parce qu’aucun choix d’options n’est proposé à l’utilisateur. C’estl’administrateur de la passerelle VPN SSL qui fait tous les choix quand il définit les diverses stratégiesd’accès aux passerelles.1.3.Les solutions VPN SSLLes VPN SSL étant en plein essor, il existe de nombreux produits VPN SSL propriétaires mais aussiopen source. Dans notre cas : mise en œuvre d’un VPN SSL à but pédagogique ou au service del’université d’Aix en Provence, il fallait une solution certes sécurisé, mais aussi peu onéreuse (voirgratuite). C’est ainsi que nous nous sommes tournés vers l’open source et sa solution la plusimplémentée : OpenVPN.Chaque solution propose un certain nombre de fonctionnalités, voici les fonctionnalités proposées parOpenVPN :-Portabilité : OpenVpn peut être exécuté sur la plupart des OS présent sur le marché (Windows2000/XP, Linux, BSD, Solaris, et Mac OS X). Une infrastructure de tunnels pourra donc être crééeentre ces différents systèmes.Un seul fichier de paramètre est nécessaire pour configurer OpenVPN. Ce fichier présentetoujours le même format quelque soit le système d'exploitation, ce qui facilite grandementl'administration.Compression des données : OpenVPN permet la compression des données circulant dans letunnel, ce qui permet d'améliorer les vitesses de transfert.Encapsulation des données dans un unique port TCP ou UDP: OpenVPN pourra donc facilementpasser à travers un routeur/firewall sachant faire de la redirection de ports.Authentification mutuelles des deux points distants via les certificats: cela permet d'augmenterconsidérablement la sécurité des échanges.Confidentialité des données : OpenVPN laisse le choix entre plusieurs algorithmes de chiffrementet la taille des clefs pour sécuriser les communications.OpenVPN utilise des interfaces virtuelles pour permettre les communications dans le tunnel, cequi lui évite d'interagir directement avec le noyau.OpenVPN peut fonctionner selon deux modes: "router" ou "bridger" :ooEn mode "routé", les clients VPN seront dans une plage différente de celui du réseau del'entreprise. Ce mode est surtout adapté pour les entreprises souhaitant accueillir desutilisateurs nomades, car le filtrage des utilisateurs pourra se faire de manière beaucoupplus fines.En mode "bridgé" un pont sera créé entre le réseau de l'entreprise et celui du VPN. Ainsi,les deux réseaux ne formeront plus qu'un. Ce mode est surtout adapté dans le casd'interconnexions de plusieurs sites distants.Les VPN SSL sont une solution d’avenir d’autant que l’essor du Web ne cesse de s’accroître.Ainsi les solutions VPN SSL fleurissent et permettent aux utilisateurs de trouver la solutionrépondant à leur besoin.Version : 1.1Edition : 28/05/07Page 6/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés Virtuels2. Procédure d’installation et de configuration pour OpenVPNCe chapitre décrit une procédure pour l’installation et la configuration d’un serveur et d’un client OpenVPNdans le mode bridger.2.1.Pré requisLa mise en œuvre d’un VPN demande plusieurs prés requis tels que des logiciels (et librairies) maisaussi de connaître le type de mode de fonctionnement désiré ainsi qu’une configuration réseauadéquate.A. Logiciels requisA.1.Librairie LZOLa librairie LZO implémente l’algorithme de compression LZO. Cet algorithme est peugourmant en mémoire, simple et rapide. Il permet de compresser les données envoyéesentre le serveur et le(s) client(s).A.2.Librairie OpenSSLLa librairie OpenSSL est une boite à outils de chiffrement comportant deux bibliothèques :une de cryptographie générale et une implémentant le protocole SSL, ainsi qu'unecommande en ligne permettant le type de chiffrement, encodage et hachage.A.3.Outils de bridgingLes outils de bridging permettent de créer les interfaces réseaux servant de pont entre deuxréseaux. Dans l’exemple, nous utiliserons brctl.A.4.OpenVPNOpenVPN est le logiciel qui manipule tous ces outils et permet de créer le réseau privévirtuel.B. Mode de fonctionnementIl existe deux modes de fonctionnement VPN différents :B.1.RoutedCe mode de fonctionnement permet de mettre en relation des machines distantes entreelles.B.2.BridgedCe mode de fonctionnement, aussi appelé mode « pont », permet de mettre en relation desréseaux distants entre eux en créant un pont éthernet entre les réseaux.Version : 1.1Edition : 28/05/07Page 7/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés VirtuelsC. Configuration réseauIl faut bien sûr que les paramètres réseaux du client et serveur soient correctement configurés.Figure 2 : Plan du réseau2.2.Configuration du ServeurAprès avoir validé tous les prés requis, il faut maintenant configurer le serveur.A. Installation et testsIl faut tout d’abord installé le logiciel OpenVPN ce qui est déjà demandé dans les prés requispuis il est en suite possible de procéder à un test du logiciel : simulation d’un réseau privévirtuel tout en local.Pour ce faire, lancer dans un shell :openvpn --genkey --secret keyGénére un clef keyopenvpn --test-crypto --secret keyTeste la clef keyopenvpn --config sample-config-files/loopback-serverLance le serveur avec le fichier de configuration loopback-server se trouvant dans le répertoiresample-config-files (ce fichier se trouve dans les fichiers de configuration du serveur et a étécrée lors de l’installation).Puis dans un autre shell, lancer le client :openvpn --config sample-config-files/loopback-clientLance le client avec le fichier de configuration loopback-client se trouvant dans le repertoiresample-config-files (ce fichier se toruve dans les fichiers de configuration du client et a étécrée lors de l’installation).Si le teste échoue, cela veut dire qu’un des pré requis est manquant ou mal configuré.B. ScriptsDivers scripts peuvent être crée pour permettre de lancer le démon OpenVPN lors dudémarrage de la machine. Ce document ne traite pas ce genre de script qui automatise lefonctionnement du serveur.Version : 1.1Edition : 28/05/07Page 8/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés VirtuelsAfin d’utiliser le serveur OpenVPN et de bridger l’interface locale (crée un pont entre l’interfacedu réseau privé et l’interface dite publique), il est possible d’utiliser le script livré dans lerépertoire sample-scripts. Dans cet exemple, nous utiliserons un autre script pour crée cepont :#!/bin/bashbrctl addbr br0brctl addif br0 eth1brctl addif br0 tap0ifconfig tap0 0.0.0.0 promisc upifconfig eth1 0.0.0.0 promisc 255.255.0broadcastbr0 est l’interface virtuelle correspondant au pont entre l’interface publique (ou externe) : eth1 etl’interface interne eth0. Les paquets arrivants sur l’interface eth1 sont redirigés vers l’interfaceeth0 en utilisant l’adresse IP de cette interface (i.e. 192.168.1.254).Ce script n’est à exécuter qu'après avoir lancer OpenVPN sinon les interfaces à bridger neseront pas encore présentes.C. Génération des clefsDans le répertoire easy-rsa crée lors de l’installation d’OpenVPN, plusieurs scripts ont été créepour permettre de générer les clefs plus simplement.Afin d’utiliser ces scripts, il faut en premier lieu éditer le fichier vars qui permet de créer lesvariables d’environnement dans le script aura besoin. Voici un exemple de contenu cohérentpour le fichier vars :export D /etc/openvpn/easy-rsaChemin vers le repertoire easy-rsa (où sont stocké les scripts)export KEY CONFIG D/openssl.cnfexport KEY DIR /etc/openvpn/keysChemin où devront être stocké les clefs (à créer).export KEY SIZE 1024Taille des clefs pour le chiffrement symétriqueexport KEY COUNTRY FRPaysexport KEY PROVINCE NARégionexport KEY CITY MARSEILLEVilleexport KEY ORG "Serveur VPN"Organisme responsable des certificatsexport KEY EMAIL "[email protected]"Adresse mél du responsable des certificatsUne fois le fichier modifié, il faut l’executer :source varsGlobalement il faut générer plusieurs types de clefs et certificats :Une clef de pour le protocole d'échange Diffie-Hellman : dh1024.key./build-dhUne clef et un certificat pour l'autorité de certification (a moins d’utiliser une autorité« officielle ») : ca.crt et ca.key./build-caVersion : 1.1Edition : 28/05/07Page 9/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés VirtuelsUne clef et un certificat pour le serveur : vpnserver.key et vpnserver.crt./build-key-server [NOM DE VOTRE SERVEUR]Une clef et un certificat pour chaque client : [nom client].crt et [nom client].key./build-key [nom de votre client]Une clef qui sert à autoriser les accès au démon : ta.keyopenvpn --genkey --secret keys/ta.keyCette clef n’est pas indispensable au bon fonctionnement du logiciel mais permet d’ajouter unesécurité supplémentaire lors de l’échange des certificats.Lors de la création des certificats, il faut utiliser un CN (Common Name) unique pour chaqueparticipant du VPN (serveur, et chaque client) et aussi un ON (Organization Name) commun auserveur et aux clients.D. ConfigurationLa dernière étape de la configuration du serveur et le fichier de configuration regroupant tousles paramètres de démon OpenVPN.Un exemple de script est donné en annexe mais voici les directives importantes :LocalL'IP publique du serveurPortLe port sur lequel le serveur attend les connexions. Par défaut il estfixé à 1194.dev tapCela signifie que le mode est ethernet bridgingcaLe chemin où est stocké le fichier ca.crt (certificat de l'autorité decertification)certLe chemin où est stocké le certificat du serveurkeyLe chemin où est stocké la clef privée du serveurdhLe chemin où est stocké la clef Diffie-Hellmantls-auth 0Le chemin où est stocké la clef dite « anti man in the middle » suivide 0 : le type de connexion (ici serveur)server-bridgeUne directive liée au bridging : chaque client se connectant auserveur se verra attribué une IP dans le range d’IP défini et ce parune méthode DHCPclient-to-clientPermet aux différents clients de se voir entre eux (et pas juste voirle serveur).Version : 1.1Edition : 28/05/07Page 10/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés Virtuels2.3.Configuration du ClientChaque client doit premièrement valider les prés requis. Il doit ensuite être configuré pour pouvoiraccéder au VPN.Le client a besoin pour cela des fichiers ta.key (clef partagée entre le client et le serveur, cf. 2.3), ducertificat de l’autorité de certification (CA) : ca.crt, de sa clef privé et de son certificat (générés lors dela création des clefs sur le serveur). Attention cependant lors de l’échange de ces informations quidoivent être tenues secrètes.Pour plus de sécurité, il est aussi possible de créer la paire de clefs publique/privée du client ainsi queson certificat depuis le client lui-même et de faire parvenir uniquement la clé publique et le certificatd’une manière sauve au serveur.Il faut ensuite configurer le client à l’aide du fichier de configuration regroupant tous les paramètres duclient OpenVPN. Un exemple de script est donné en annexe.OpenVPN est une solution open source fiable est relativement facile à installer et à configurer.Cela étant dit, la sécurité d’un serveur VPN SSL OpenVPN dépend aussi de la sécurité de la machinesur laquelle le serveur se trouve et comme toute solution au service des utilisateurs, de l’utilisationqui en est faite.Version : 1.1Edition : 28/05/07Page 11/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés VirtuelsBIBLIOGRAPHIEVPN : document #2SSL : document #4http://openvpn.net/ : site officiel OpenVPNman openvpnhttp://www.nbs-system.com/article/openvpn2 howto : howto OpenVPN en 5355 : site du magasine sur la sécurité Informatique MagSecursVersion : 1.1Edition : 28/05/07Page 12/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés VirtuelsANNEXESFichier de configuration du serveur : ############ TER VPN## CMI – 2006#### Configuration file for OpenVPN Server#### Comments are preceded with '#' or #### Which local IP address should OpenVPN (optional)local 147.94.66.131port 1194# TCP or UDP server?;proto tcpproto udp# "dev tun" will create a routed IP tunnel,# "dev tap" will create an ethernet tunnel.dev tap;dev tunca keys/ca.crtcert keys/serveur.crtkey keys/serveur.key # This file should be kept secretdh keys/dh1024.pemtls-auth keys/ta.key 0 # This file is secret# Maintain a record of client - virtual IP address# associations in this file. If OpenVPN goes down or# is restarted, reconnecting clients can be assigned# the same virtual IP address from the pool that was# previously assigned.ifconfig-pool-persist log/ipp.txt# Configure server mode for ethernet bridging.# You must first use your OS's bridging capability# to bridge the TAP interface with the ethernet# NIC interface. Then you must manually set the# IP/netmask on the bridge interface, here we# assume 10.8.0.4/255.255.255.0. Finally we# must set aside an IP range in this subnet# (start 10.8.0.50 end 10.8.0.100) to allocate# to connecting clients. Leave this line commented# out unless you are ethernet bridging.server-bridge 192.168.1.1 255.255.255.0 192.168.1.10 192.168.1.20client-to-client# The keepalive directive causes ping-like# messages to be sent back and forth over# the link so that each side knows when# the other side has gone down.# Ping every 10 seconds, assume that remote# peer is down if no ping received during# a 120 second time period.keepalive 10 120Version : 1.1Edition : 28/05/07Page 13/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés Virtuels# Enable compression on the VPN link.# If you enable it here, you must also# enable it in the client config file.comp-lzo# The maximum number of concurrently connected# clients we want to allow.max-clients 10# It's a good idea to reduce the OpenVPN# daemon's privileges after initialization.## You can uncomment this out on# non-Windows systems.user nobodygroup nogroup# The persist options will try to avoid# accessing certain resources on restart# that may no longer be accessible because# of the privilege downgrade.persist-keypersist-tun# Output a short status file showing# current connections, truncated# and rewritten every minute.status log/status.log# Set the appropriate level of log# file verbosity.## 0 is silent, except for fatal errors# 4 is reasonable for general usage# 5 and 6 can help to debug connection problems# 9 is extremely verboseverb 3Fichier de configuration du client ############ TER VPN## CMI – 2006#### Configuration file for OpenVPN Client#### Comments are preceded with '#' or #### Specify that we are a client and that we# will be pulling certain config file directives# from the server.clientdev tap# TCP or UDP server?;proto tcpproto udp# The hostname/IP and port of the server.# You can have multiple remote entries# to load balance between the servers.Version : 1.1Edition : 28/05/07Page 14/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés Virtuelsremote 147.94.66.131 1194# Keep trying indefinitely to resolve the# host name of the OpenVPN server. Very useful# on machines which are not permanently connected# to the internet such as laptops.resolv-retry infinite# Most clients don't need to bind to# a specific local port number.nobind# Downgrade privileges after initialization (non-Windows only)user nobodygroup nogroup# Try to preserve some state across restarts.persist-keypersist-tun# SSL/TLS parms.# See the server config file for more# description. It's best to use# a separate .crt/.key file pair# for each client. A single ca# file can be used for all clients.ca keys/ca.crtcert keys/130.crtkey keys/130.keytls-auth keys/ta.key 1# a potential attack discussed here:# http://openvp:147.94.66.130n.net/howto.html#mitm## To use this feature, you will need to generate# your server certificates with the nsCertType# field set to "server". The build-key-server# script in the easy-rsa folder will do this.ns-cert-type server# Enable compression on the VPN link.# Don't enable this unless it is also# enabled in the server config file.comp-lzo# Set log file verbosity.verb 3Version : 1.1Edition : 28/05/07Page 15/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés VirtuelsINDEX ALPHABÉTIQUEbridgé . 6Bridged. 7bridging . 7certificat. 11certificats. 10démon . 8interface . 6IPSec . 6IPSEC . 5LZO . 7open source . 6OpenVPN. 6, 8pont . 9routé. 6Routed . 7Web. 5Version : 1.1Edition : 28/05/07Page 16/17Centre Mathématique et Informatique – Université de Provence

VPN SSLRéseaux Privés VirtuelsINDEX DES ILLUSTRATIONSFigure 1 : Schéma basic d’une communication Client/Serveur VPN . 5Figure 2 : Plan du réseau . 8Je soussigné, Fabrice DOUCHANT, avoir lule document et approuvé son contenu.Je soussigné, Roland AGOPIAN, avoir lu ledocument et approuvé son contenu.Date :Date :Signature :Signature :Version : 1.1Edition : 28/05/07Page 17/17Centre Mathématique et Informatique – Université de Provence

VPN SSL Réseaux Privés Virtuels Version : 1.1 Page 6/17 Edition : 28/05/07 Centre Mathématique et Informatique - Université de Provence fait par un simple navigateur et contrairement aux solutions VPN IPSec de base, les contrôles et