VPN SSL - Fabrice Douchant
Transcription
VPN SSL - Fabrice Douchant
Réseaux Privés Virtuels Master Informatique 1ère Année A nnée 2006 - 20 07 VPN SSL L i vr a bl e # 5 (Document de 17 pages) P a r t i c i pa nt s Fabrice DOUCHANT Tarek AJROUD Charles BALLE Jérémy MELINE E nc a dr a nt Roland AGOPIAN Résumé : Ce document explique le fonctionnement des VPN SSL et contient une procédure visant à installer et configurer un serveur et client VPN SSL à l’aide du logiciel sous licence GPL : OpenVPN. Centre de Mathématique et d’Informatique Technopole Château Gombert 39, rue F. Joliot Curie 13453 MARSEILLE CEDEX 13 VPN SSL Réseaux Privés Virtuels SUIVI DU DOCUMENT NOM PRENOM DATE VERSION DOUCHANT Fabrice 23/05/07 1.0 DOUCHANT Fabrice 28/05/07 1.1 Version : 1.1 Edition : 28/05/07 COMMENTAIRES Création du document Ajout principe de fonctionnement des VPN SSL TYPE DE DIFFUSION Publique Publique Page 2/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels CONTACTS NOM PRENOM EMEL FONCTION DOUCHANT Fabrice [email protected] Etudiant M1 Informatique AJROUD Tarek [email protected] Etudiant M1 Informatique BALLE Charles [email protected] Etudiant M1 Informatique AMELINE Jérémy [email protected] Etudiant M1 Informatique Version : 1.1 Edition : 28/05/07 Page 3/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels TABLE DES MATIERES 1. Présentation des VPN SSL..................................................................................................................... 5 1.1. Introduction aux VPN SSL................................................................................................................ 5 1.2. Le principe de fonctionnement des VPN SSL .................................................................................. 5 1.3. Les solutions VPN SSL .................................................................................................................... 6 2. Procédure d’installation et de configuration pour OpenVPN............................................................. 7 2.1. Pré requis ......................................................................................................................................... 7 A. Logiciels requis................................................................................................................................. 7 B. Mode de fonctionnement.................................................................................................................. 7 C. Configuration réseau ........................................................................................................................ 8 2.2. Configuration du Serveur ................................................................................................................. 8 A. Installation et tests............................................................................................................................ 8 B. Scripts............................................................................................................................................... 8 C. Génération des clefs ........................................................................................................................ 9 D. Configuration .................................................................................................................................. 10 2.3. Configuration du Client................................................................................................................... 11 Version : 1.1 Edition : 28/05/07 Page 4/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels 1. Présentation des VPN SSL Ce chapitre présente les VPN SSL : leur principe et les différentes solutions. 1.1. Introduction aux VPN SSL Plusieurs 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 IPSEC présente cependant quelques points faibles dont sa complexité de mise en oeuvre. En effet, IPSEC possède beaucoup trop d' options pour être configuré et administré de façon solide par des utilisateurs non experts. Le déploiement d' une solution VPN basé sur IPSEC s' annonce ainsi être une tâche souvent longue et fastidieuse, et peut présenter des risques de sécurité s' il est effectué par des utilisateurs non initiés. C’est ainsi que sont apparus les VPN basés sur SSL/TLS. Le protocole SSL/TLS permet de sécuriser les communications sur Internet en garantissant l' authentification des parties, le chiffrement et la vé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 SSL Figure 1 : Schéma basic d’une communication Client/Serveur VPN Contrairement aux VPN IPSec dont le fonctionnement consiste à établir un tunnel chiffré permettant le passage des flux au niveau réseau (routage), les VPN SSL ne relaient pas les datagrammes IP, mais relaient 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 les VPN SSL peuvent rendre les mêmes services que leurs homologues IPSec mais aussi parce qu’ils utilisent plus « intelligemment » l’essor du Web. Ainsi il est possible d’utiliser le Web via un simple navigateur (on parle alors de client « légers » ou « clientless ») pour se connecter à un serveur VPN SSL et accéder au contenu Intranet d’une entreprise. Dans cette configuration, le serveur VPN SSL se conduit 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éseau interne de l’entreprise. Il faut alors traduire chaque référence à une ressource interne en une référence relative à l’adresse du serveur lui-même. Il est aussi possible dans cette configuration d’utilise une passerelle VPN SSL pour diriger les utilisateurs vers n’importe quelle application intranet validée pour le Web, même si ces applications ne sont pas validées pour SSL. Le problème de cette solution est qu’il n’est pas aisé de traduire chaque ressource, par exemple dans le cas d’applications de type Applet Java, ActiveX, etc. Cependant cette solution est suffisante pour de nombreux utilisateurs, de plus il n’est pas nécessaire de configurer les clients puisque l’accès au serveur VPN se Version : 1.1 Edition : 28/05/07 Page 5/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels fait par un simple navigateur et contrairement aux solutions VPN IPSec de base, les contrôles et restrictions 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’autres protocoles au moyen du VPN SSL via une applet de connexion « IPSec virtuelle » spécifique. Ces applets se connectent dans le système d’exploitation de l’utilisateur de la même manière qu’IPSec, en créant une interface réseau virtuelle. Mais, contrairement à IPSec, ces applets ne demandent pas de configuration complexe, parce qu’aucun choix d’options n’est proposé à l’utilisateur. C’est l’administrateur de la passerelle VPN SSL qui fait tous les choix quand il définit les diverses stratégies d’accès aux passerelles. 1.3. Les solutions VPN SSL Les VPN SSL étant en plein essor, il existe de nombreux produits VPN SSL propriétaires mais aussi open source. Dans notre cas : mise en œuvre d’un VPN SSL à but pédagogique ou au service de l’université d’Aix en Provence, il fallait une solution certes sécurisé, mais aussi peu onéreuse (voir gratuite). C’est ainsi que nous nous sommes tournés vers l’open source et sa solution la plus implémentée : OpenVPN. Chaque solution propose un certain nombre de fonctionnalités, voici les fonctionnalités proposées par OpenVPN : - Portabilité : OpenVpn peut être exécuté sur la plupart des OS présent sur le marché (Windows 2000/XP, Linux, BSD, Solaris, et Mac OS X). Une infrastructure de tunnels pourra donc être créée entre ces différents systèmes. Un seul fichier de paramètre est nécessaire pour configurer OpenVPN. Ce fichier présente toujours le même format quelque soit le système d' exploitation, ce qui facilite grandement l' administration. Compression des données : OpenVPN permet la compression des données circulant dans le tunnel, ce qui permet d' améliorer les vitesses de transfert. Encapsulation des données dans un unique port TCP ou UDP: OpenVPN pourra donc facilement passer à travers un routeur/firewall sachant faire de la redirection de ports. Authentification mutuelles des deux points distants via les certificats: cela permet d' augmenter considérablement la sécurité des échanges. Confidentialité des données : OpenVPN laisse le choix entre plusieurs algorithmes de chiffrement et la taille des clefs pour sécuriser les communications. OpenVPN utilise des interfaces virtuelles pour permettre les communications dans le tunnel, ce qui lui évite d' interagir directement avec le noyau. OpenVPN peut fonctionner selon deux modes: "router" ou "bridger" : o o En mode "routé", les clients VPN seront dans une plage différente de celui du réseau de l' entreprise. Ce mode est surtout adapté pour les entreprises souhaitant accueillir des utilisateurs nomades, car le filtrage des utilisateurs pourra se faire de manière beaucoup plus 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 cas d' 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 solution répondant à leur besoin. Version : 1.1 Edition : 28/05/07 Page 6/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels 2. Procédure d’installation et de configuration pour OpenVPN Ce chapitre décrit une procédure pour l’installation et la configuration d’un serveur et d’un client OpenVPN dans le mode bridger. 2.1. Pré requis La mise en œuvre d’un VPN demande plusieurs prés requis tels que des logiciels (et librairies) mais aussi de connaître le type de mode de fonctionnement désiré ainsi qu’une configuration réseau adéquate. A. Logiciels requis A.1.Librairie LZO La librairie LZO implémente l’algorithme de compression LZO. Cet algorithme est peu gourmant en mémoire, simple et rapide. Il permet de compresser les données envoyées entre le serveur et le(s) client(s). A.2.Librairie OpenSSL La 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' une commande en ligne permettant le type de chiffrement, encodage et hachage. A.3.Outils de bridging Les outils de bridging permettent de créer les interfaces réseaux servant de pont entre deux réseaux. Dans l’exemple, nous utiliserons brctl. A.4.OpenVPN OpenVPN est le logiciel qui manipule tous ces outils et permet de créer le réseau privé virtuel. B. Mode de fonctionnement Il existe deux modes de fonctionnement VPN différents : B.1.Routed Ce mode de fonctionnement permet de mettre en relation des machines distantes entre elles. B.2.Bridged Ce mode de fonctionnement, aussi appelé mode « pont », permet de mettre en relation des réseaux distants entre eux en créant un pont éthernet entre les réseaux. Version : 1.1 Edition : 28/05/07 Page 7/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels C. Configuration réseau Il faut bien sûr que les paramètres réseaux du client et serveur soient correctement configurés. Figure 2 : Plan du réseau 2.2. Configuration du Serveur Après avoir validé tous les prés requis, il faut maintenant configurer le serveur. A. Installation et tests Il faut tout d’abord installé le logiciel OpenVPN ce qui est déjà demandé dans les prés requis puis 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 key Génére un clef key openvpn --test-crypto --secret key Teste la clef key openvpn --config sample-config-files/loopback-server Lance le serveur avec le fichier de configuration loopback-server se trouvant dans le répertoire sample-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-client Lance le client avec le fichier de configuration loopback-client se trouvant dans le repertoire sample-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. Scripts Divers scripts peuvent être crée pour permettre de lancer le démon OpenVPN lors du démarrage de la machine. Ce document ne traite pas ce genre de script qui automatise le fonctionnement du serveur. Version : 1.1 Edition : 28/05/07 Page 8/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels Afin d’utiliser le serveur OpenVPN et de bridger l’interface locale (crée un pont entre l’interface du réseau privé et l’interface dite publique), il est possible d’utiliser le script livré dans le répertoire sample-scripts. Dans cet exemple, nous utiliserons un autre script pour crée ce pont : #!/bin/bash brctl addbr br0 brctl addif br0 eth1 brctl addif br0 tap0 ifconfig tap0 0.0.0.0 promisc up ifconfig eth1 0.0.0.0 promisc up ifconfig br0 192.168.1.254 192.168.1.255 netmask 255.255.255.0 broadcast br0 est l’interface virtuelle correspondant au pont entre l’interface publique (ou externe) : eth1 et l’interface interne eth0. Les paquets arrivants sur l’interface eth1 sont redirigés vers l’interface eth0 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 ne seront pas encore présentes. C. Génération des clefs Dans le répertoire easy-rsa crée lors de l’installation d’OpenVPN, plusieurs scripts ont été crée pour 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 les variables d’environnement dans le script aura besoin. Voici un exemple de contenu cohérent pour le fichier vars : export D=/etc/openvpn/easy-rsa Chemin vers le repertoire easy-rsa (où sont stocké les scripts) export KEY_CONFIG=$D/openssl.cnf export KEY_DIR=/etc/openvpn/keys Chemin où devront être stocké les clefs (à créer). export KEY_SIZE=1024 Taille des clefs pour le chiffrement symétrique export KEY_COUNTRY=FR Pays export KEY_PROVINCE=NA Région export KEY_CITY=MARSEILLE Ville export KEY_ORG="Serveur VPN" Organisme responsable des certificats export KEY_EMAIL="[email protected]" Adresse mél du responsable des certificats Une fois le fichier modifié, il faut l’executer : source vars Globalement il faut générer plusieurs types de clefs et certificats : Une clef de pour le protocole d' échange Diffie-Hellman : dh1024.key ./build-dh Une clef et un certificat pour l' autorité de certification (a moins d’utiliser une autorité « officielle ») : ca.crt et ca.key ./build-ca Version : 1.1 Edition : 28/05/07 Page 9/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels Une 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.key openvpn --genkey --secret keys/ta.key Cette clef n’est pas indispensable au bon fonctionnement du logiciel mais permet d’ajouter une sé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 chaque participant du VPN (serveur, et chaque client) et aussi un ON (Organization Name) commun au serveur et aux clients. D. Configuration La dernière étape de la configuration du serveur et le fichier de configuration regroupant tous les paramètres de démon OpenVPN. Un exemple de script est donné en annexe mais voici les directives importantes : Local L'IP publique du serveur Port Le port sur lequel le serveur attend les connexions. Par défaut il est fixé à 1194. dev tap Cela signifie que le mode est ethernet bridging ca Le chemin où est stocké le fichier ca.crt (certificat de l'autorité de certification) cert Le chemin où est stocké le certificat du serveur key Le chemin où est stocké la clef privée du serveur dh Le chemin où est stocké la clef Diffie-Hellman tls-auth 0 Le chemin où est stocké la clef dite « anti man in the middle » suivi de 0 : le type de connexion (ici serveur) server-bridge Une directive liée au bridging : chaque client se connectant au serveur se verra attribué une IP dans le range d’IP défini et ce par une méthode DHCP client-to-client Permet aux différents clients de se voir entre eux (et pas juste voir le serveur). Version : 1.1 Edition : 28/05/07 Page 10/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels 2.3. Configuration du Client Chaque client doit premièrement valider les prés requis. Il doit ensuite être configuré pour pouvoir accé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), du certificat de l’autorité de certification (CA) : ca.crt, de sa clef privé et de son certificat (générés lors de la création des clefs sur le serveur). Attention cependant lors de l’échange de ces informations qui doivent ê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 que son certificat depuis le client lui-même et de faire parvenir uniquement la clé publique et le certificat d’une manière sauve au serveur. Il faut ensuite configurer le client à l’aide du fichier de configuration regroupant tous les paramètres du client 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 machine sur laquelle le serveur se trouve et comme toute solution au service des utilisateurs, de l’utilisation qui en est faite. Version : 1.1 Edition : 28/05/07 Page 11/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels BIBLIOGRAPHIE VPN : document #2 SSL : document #4 http://openvpn.net/ : site officiel OpenVPN man openvpn http://www.nbs-system.com/article/openvpn2_howto : howto OpenVPN en Français http://www.magsecurs.com/spip.php?article5355 : site du magasine sur la sécurité Informatique MagSecurs Version : 1.1 Edition : 28/05/07 Page 12/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels ANNEXES Fichier de configuration du serveur : serveur.conf ################################################# # 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.131 port 1194 # TCP or UDP server? ;proto tcp proto udp # "dev tun" will create a routed IP tunnel, # "dev tap" will create an ethernet tunnel. dev tap ;dev tun ca keys/ca.crt cert keys/serveur.crt key keys/serveur.key # This file should be kept secret dh keys/dh1024.pem tls-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.20 client-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 120 Version : 1.1 Edition : 28/05/07 Page 13/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Ré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 nobody group 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-key persist-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 verbose verb 3 Fichier de configuration du client :client.conf ################################################# # 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. client dev tap # TCP or UDP server? ;proto tcp proto udp # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. Version : 1.1 Edition : 28/05/07 Page 14/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels remote 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 nobody group nogroup # Try to preserve some state across restarts. persist-key persist-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.crt cert keys/130.crt key keys/130.key tls-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 3 Version : 1.1 Edition : 28/05/07 Page 15/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels INDEX ALPHABÉTIQUE bridgé ................................................................................................................................................................. 6 Bridged............................................................................................................................................................... 7 bridging .............................................................................................................................................................. 7 certificat............................................................................................................................................................ 11 certificats.......................................................................................................................................................... 10 démon ................................................................................................................................................................ 8 interface ............................................................................................................................................................. 6 IPSec ................................................................................................................................................................. 6 IPSEC ................................................................................................................................................................ 5 LZO .................................................................................................................................................................... 7 open source ....................................................................................................................................................... 6 OpenVPN....................................................................................................................................................... 6, 8 pont .................................................................................................................................................................... 9 routé................................................................................................................................................................... 6 Routed ............................................................................................................................................................... 7 Web.................................................................................................................................................................... 5 Version : 1.1 Edition : 28/05/07 Page 16/17 Centre Mathématique et Informatique – Université de Provence VPN SSL Réseaux Privés Virtuels INDEX DES ILLUSTRATIONS Figure 1 : Schéma basic d’une communication Client/Serveur VPN ................................................................ 5 Figure 2 : Plan du réseau .................................................................................................................................. 8 Je soussigné, Fabrice DOUCHANT, avoir lu le document et approuvé son contenu. Je soussigné, Roland AGOPIAN, avoir lu le document et approuvé son contenu. Date : Date : Signature : Signature : Version : 1.1 Edition : 28/05/07 Page 17/17 Centre Mathématique et Informatique – Université de Provence
Documents pareils
Installation-d-un-se..
export KEY_ORG="organisation"
export KEY_EMAIL="mail.domaine.com"
Initialisez ensuite les variables des scripts grâce à la commande source :
cd /etc/openvpn/easy-rsa/
source vars
Réinitialisez le s...