DISTANT ACESS Emna TRABELSI (RT3) Chourouk CHAOUCH (RT3) Rabab AMMAR (RT3) Rania BEN MANSOUR (RT3) Mouafek BOUZIDI (RT3)
TABLE DES MATIERES I. PRESENTATION DE L ATELIER...2 1. PRESENTATION GENERALE...2 2. ACCES DISTANT SECURISE : VPN...2 II. PRESENTATION DES OUTILS UTILISES...2 1. OPEN VPN...2 2. SERVEUR OPENVPN SUR L ENVIRONNEMENT LINUX (UBUNTU)...3 3. CLIENT OPENVPN SUR L ENVIRONNEMENT LINUX (UBUNTU)...4 4. AUTRES NOTIONS ET BIBLIOTHEQUES UTILISES :...5 III. TOPOLOGIE DE RESEAU...8 IV. CONFIGURATION DES OUTILS...9 1. CONFIGURATION DU SERVEUR OPEN VPN...9 2. CONFIGURATION DU CLIENT OPEN VPN...13 V. UN SCENARIO DE TEST... 15 VI. CONCLUSION...16 1
I. Présentation de l atelier 1. Présentation générale L atelier Distant Access est un atelier destiné à implémenter une solution pour assurer un accès distant à une machine d une manière bien sécurisé via la création d un réseau privé virtuel VPN. 2. Accès distant sécurisé : VPN Le besoin consiste principalement à accéder à un réseau distant en assurant la sécurité de transmission des données, la solution est de concevoir une liaison spécialisée pour relier les deux réseaux. Donc On parle alors de réseau privé virtuel (VPN : Virtual Private Network) pour désigner le réseau ainsi artificiellement créé. Le principe est d encapsuler les données à transmettre (via Internet) de façon chiffrée. Ce réseau est dit virtuel car il relie deux réseaux "physiques" (réseaux locaux) par une liaison non fiable (Internet), et privé car seuls les ordinateurs des réseaux locaux de part et d'autre du VPN peuvent "voir" les données. II. Présentation des outils utilisés 1. OPEN VPN OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel (VPN). 2
a. Principe de fonctionnement Le principe consiste à permettre à des pairs de s'authentifier entre eux à l'aide d'une clé privée partagée à l'avance, de certificats électroniques ou de couples de noms d'utilisateur/mot de passe. Il utilise de manière intensive la bibliothèque d'authentification OpenSSL ainsi que le protocole SSLv3/TLSv1, offrant ainsi de nombreuses fonctions de sécurité et de contrôle. Le logiciel contient un exécutable pour les connexions du client et du serveur, un fichier de configuration optionnel et une ou plusieurs clés suivant la méthode d'authentification choisie. L avantage principal d OpenVPN est de pouvoir interconnecter plusieurs réseaux (ou plusieurs ordinateurs distants) entre eux via une technique de «tunnel», et cela de manière sécurisée à l aide du protocole SSL. Il existe deux modes de fonctionnement d OpenVPN : le mode «bridge», qui permet d interconnecter plusieurs réseaux distants. Le mode «routed», qui permet d interconnecter des machines distantes, et donc d appliquer un filtrage plus précis. 2. Serveur OPENVPN sur l environnement Linux (Ubuntu) Un VPN, ou Virtual Private Network (pour réseau privé virtuel) vous permet de créer une connexion sécurisée entre votre ordinateur et le serveur VPN. Cette connexion étant cryptée, vous allez pouvoir naviguer sur Internet par exemple en utilisant le serveur VPN comme relai. Cette sécurité, ce cryptage est valable pour une connexion filaire ou Wifi et empêche toute malveillance ou surveillance. Un des gros avantages d utiliser un serveur VPN est que toutes les données qui passent par ce serveur VPN, aussi bien des données entrantes que des données sortantes, sont cryptées. Il vous sera donc possible de naviguer sur Internet de manière totalement anonyme puisque c est le serveur VPN qui fera le relai entre votre machine et les différents hôtes distants. Le schéma suivant illustre le fonctionnement d un serveur VPN: 3
Pourquoi utiliser un serveur VPN? Comme l utilisation d un serveur VPN permet d assurer un minimum de sécurité, elle nous permet également d un ensemble d avantages, qui sont : données cryptées adresse ip camouflée par celle du serveur VPN anonymat sur Internet navigation plus rapide qu au travers d un proxy téléchargements sécurisés contourner les restrictions de certains réseaux (universités, certains pays, etc ) 3. Client OPENVPN sur l environnement Linux (Ubuntu) Le client OpenVPN permet de se connecter à un réseau privé virtuel sur lequel tourne un serveur OpenVPN. Ce type de réseau est fréquemment utilisé pour permettre un accès protégé à des réseaux d'entreprise à partir de n'importe quelle connexion internet. On pourra citer d'autres types de VPN comme les VPN Cisco, IPSEC, PPTP, L2TP et SSH. Les plus répandus étant les Cisco (éventuellement propriétaire) et les OpenVPN 4
Afin de permettre aux clients de bénéficier du trafic Internet, on peut activer la fonctionnalité de routage des paquets IP de la machine hébergeant le service VPN, ainsi que la translation d'adresses NAT des paquets clients, ce qui permet évidemment une connexion Internet sécurisé et absolument anonyme. 4. Autres Notions et bibliothèques utilisés : PKI : (Public Key Infrastructure) PKI (Public Key Infrastructure) est un système de gestion des clefs publiques qui permet de gérer des listes importantes de clefs publiques et d'en assurer la fiabilité, pour des entités généralement dans un réseau. Elle offre un cadre global permettant d'installer des éléments de sécurité tels que la confidentialité, l'authentification, l'intégrité et la non-répudiation des données. En résumé, ces services sont les suivants : enregistrement des utilisateurs (ou équipement informatique) ; génération de certificats ; renouvellement de certificats ; révocation de certificats ; publication de certificats ; publication des listes de révocation (comprenant la liste des certificats révoqués) ; identification et authentification des utilisateurs (administrateurs ou utilisateurs qui accèdent à l'icp) ; archivage, séquestre et recouvrement des certificats (option). 5
OpenSSL Le package OpenSSL contient des outils de gestion et des bibliothèques en relation avec la cryptographie. Ils sont utiles car ils apportent des fonctions de cryptographie aux autres packages. Le package OpenSSL contient c_rehash, openssl, et les bibliothèques libcrypto et libssl. c_rehash est un script Perl qui recherche tous les fichiers d'un répertoire et ajoute des liens symboliques vers leur valeurs hachés. Le programme openssl est un outil en ligne de commande pour utiliser les différentes fonctions de cryptographie de la bibliothèque d'openssl à partir du shell. Il peut être utilisé pour différentes fonctions, documentées dans man 1 openssl. La bibliothèque crypto d'openssl implémente une grande variété d'algorithmes de cryptographie, utilisés dans de nombreux standards Internet. Les services proposés par cette bibliothèque sont utilisés par les implémentations OpenSSL de SSL, TLS et S/MIME, et ils sont aussi utilisés pour implémenter OpenSSH, OpenPGP et d'autres standards cryptographiques. La bibliothèque ssl d'openssl implémente les protocoles 'Secure Sockets Layer' (SSL v2/v3) et 'Transport Layer Security' (TLS v1). Elle apporte une API riche dont la documentation est disponible en lançant man 3 ssl. Certificate Authority CA : En cryptographie, l'autorité de certification (AC ou CA) a pour mission, après vérification de l'identité du demandeur du certificat par une autorité d'enregistrement, de signer, émettre et maintenir. L'autorité de certification (AC) opère elle-même ou peut déléguer l'hébergement de la clé privée du certificat à un opérateur de certification (OC) ou autorité de dépôt. L'AC contrôle et audite l'opérateur de certification sur la base des procédures établies dans la Déclaration des Pratiques de Certification. L'AC est accréditée par une autorité de gestion de la politique qui lui permet d'utiliser un certificat renforcé utilisé par l'oc pour signer la clé publique selon le principe de la signature numérique. Sur le plan technique, cette infrastructure de gestion des clés permet ainsi d'assurer que 6
les données transmises n'ont pas été modifiées durant le transfert : intégrité par hachage des données les données proviennent bien de l'émetteur connu : utilisation de clés et répudiation On note que l'utilisation de certificat se fait en mode non sécurisé (HTTP) et est la première étape utilisée entre un client et un serveur avant l'ouverture d'une connexion en mode sécurisé (HTTPS). SSL est le protocole qui permet de chiffrer les données sur HTTP lors d'échange de données sur le réseau. La clé de chiffrement-déchiffrement est identique lors d'algorithmes symétriques dits à clef secrète (connue de l'émetteur et du destinataire) et différentes lors d'algorithmes asymétriques dits à clé publique (publique pour tout le monde, privée personnelle gardée secrètes). Cryptographie à clé publique C est une méthode de chiffrement qui s'oppose à la cryptographie symétrique. Elle repose sur l'utilisation d'une clé publique (qui est diffusée) et d'une clé privée (gardée secrète), l'une permettant de coder le message et l'autre de le décoder. Ainsi, l'expéditeur peut utiliser la clé publique du destinataire pour coder un message que seul le destinataire (en possession de la clé privée) peut décoder, garantissant la confidentialité du contenu. le système de chiffrement RSA (un algorithme de cryptographie asymétrique, nommé par les initiales de ses trois inventeurs : Ronald Rivest, Adi Shamir et Leonard Adleman) utilise une paire correspondante de clés de cryptage et décryptage. Chaque clé applique aux données une modification à sens unique. Chaque clé représente la fonction inverse de l'autre clé : ce que fait l'une, seule l'autre peut l'annuler Les clefs publiques sont publiques... mais elles doivent être associées de manière sûre avec l'identité de leur propriétaire Grâce à des certificats... de clefs publiques Certificat = une clef publique l'identité du propriétaire de la clef un signature numérique produite par le CA et prouvant l'intégrité du certificat 7
Les clés en jeu sont celles de l'émetteur et du destinataire géré par le navigateur (clé de chiffrement), la clé temporaire créée par l'émetteur à partir de la clé publique du destinataire, et les clés du certificat de l'autorité de certification (clé de signatures). La clé privée ne doit pas être stockée de façon textuelle sur l'ordinateur : on utilise un conteneur de clés. Les données chiffrées par une clé publique ne peuvent être lues que par une clé privée associée, et inversement. III. Topologie de réseau On présente cette topologie adopté dans note cas pour la configuration ci-dessous : 8
IV. Configuration des outils 1. Configuration du serveur Open VPN On se propose de détailler l'installation du serveur OpenVPN sur une distribution Ubuntu Server 12.04. On commence par installer OpenVPN à partir des dépôts officiels. a. l'installation des packages L'authentification des clients/serveur se fera par clés SSL. b. Générations des clés SSL Etape1 : On copie tout d abord les fichiers dans /etc/openvpn/easy-rsa/ Etape2 : On édite après /etc/openvpn/easy-rsa/vars, et on change les clés pour qu ils conviennent la nouvelle Certification, c'est-à-dire renseigne quelques variables dans le fichier vars. 9
Etape3 : On crée le certificat et la clé de l'autorité de Certification (CA) : On se positionne sur le répertoire easy-rsa On change après les droits d accès pour cette répertoire pour qu elle soit modifiée en écrit par les administrateurs du système On lance les scripts de configuration : On nettoie les clés déjà crées : Et nous finissons par générer les clés (ca.crt et ca.key) qui seront stockées automatiquement dans un dossier "keys" : On note que En cryptographie, l'échange de clés Diffie-Hellman, du nom de ses auteurs Whitfield Diffie et Martin Hellman, est une méthode par laquelle deux personnes nommées conventionnellement A et B peuvent se mettre d'accord sur un nombre (qu'ils 10
peuvent utiliser comme clé pour chiffrer la conversation suivante) sans qu'une troisième personne appelée C puisse découvrir le nombre, même en ayant écouté tous leurs échanges Nous devons maintenant générer les clés d'authentification du serveur : # Création du certification et du clés de serveur c. Fichier de configuration du serveur On doit créer un fichier de configuration server.conf dans le répertoire /etc/openvpn. Pour cela on commence par le création de couples de scripts qui vont être utilisés par par le serveur openvpn Puis on crée le deuxième Script : Et on doit les rendre exécutables comme suit : 11
Après on passe au fichier de configuration du serveur Le contenu du fichier est le suivant : Il ne reste plus qu'a copier les certificats SSL nécessaires au serveur 12
On relance le serveur openvpn après : 2. Configuration du Client Open VPN Maintenant, comme le serveur OpenVPN est correctement configuré et que le routage est fonctionnel, nous allons créer un compte client pour pouvoir nous connecter dessus et l utiliser. Dans la configuration du notre client on déplace les fichiers suivants du serveur : ca.crt : certificat de l'autorité de Certification client1.crt : certificat du client1 client1.key : clé du client1 ta.key : clé utilisée pour tls-auth On remarque bien l existence des fichiers cités la dessus dans notre machine cliente Apres avoir tous ces fichiers sur notre client on édite le fichier de la configuration du client «client.conf»de la même façon que le serveur. 13
NB : les informations dans «client.conf» doivent être compatibles avec le fichier du configuration du serveur «server.conf» et c est très important pour la réussite de la connexion serveur-client. Voila notre fichier de la configuration «client.conf» : On vérifie l existence du fichier «client.conf» On lance notre service openvpn sur la machine cliente : 14
On vérifie l existence de l interface tunnel sur notre machine cliente : V. Un scénario de test Le test de La connexion client-serveur se fait comme d'habitude avec La commande Ping adresse IP du serveur. Pour Le cas de test, notre adresse IP est Le 192.168.153.129. Ce test donne une statistique de La connexion en rapport avec Le nombre de paquets envoyés, reçus et perdus. Pour la sécurité des paquets échangés entre client-serveur. Le dh permet tout simplement de crypter les paquets lors des différents échanges pour éviter que ces derniers soient perçus par des tierces personnes, ce qui est l objectif par excellence d une connexion au sein d un réseau VPN. 15
La commande./build-dh, lorsque elle est exécutée, elle donne le résultat suivant : La figure ci-dessous donne un exemple d'un message crypté par un (clé RSA). Remarque : On note que lorsque le serveur est configuré et qu'une configuration cliente à été créée, il ne reste plus qu'à l'importer dans son système d'exploitation favoris pour se connecter au service VPN. Il existe de nombreux programmes clients, avec ou sans interface graphique. VI. Conclusion Lorsqu'il s'agit d'interconnecter deux réseaux distants (sites distants d'une entreprise) une des solutions est de louer une "ligne spécialisée" souvent très onéreuse. Une autre de ces solutions consistera à établir une connexion VPN entre les deux sites. Cette connexion devra assurer la confidentialité et l'intégrité des données. Le système de VPN permet donc d'obtenir une liaison sécurisée à moindre coût, si ce n'est la mise en oeuvre des équipements terminaux. Il faut mentionner de même qu il y en a des solutions de VPN payant type «Ipredator» ont fleuri sur la toile. Ces solutions d'anonymat, séduisantes au premier abord, possèdent un gros point noir : qui se cache réellement derrière ces VPN? N'y a-t-il pas un risque que ces «bienfaiteurs de l'internet libre» ne revendent un jour toutes les données collectées? Donc monter son propre serveur VPN grâce à OpenVPN sera une slution à adopter. Par ailleurs, ce VPN pourra aussi vous servir à passer les éventuelles restrictions mises en place sur votre lieu de travail, ou sécuriser votre connexion lorsque vous devez vous connecter sur des réseaux publics peu sécurisés. 16
Si les connexions VPN constituent une avancé considérable pour l'entreprise, elles sont source de problème de sécurité pour le réseau d'entreprise. En effet, le poste nomade utilise un réseau sur lequel l'entreprise n'a aucun contrôle pour atteindre le réseau interne. Il existe trois risques principaux : le nomade devient une passerelle pour l'extérieur, le poste est contaminé et l'utilisateur n'est pas identifié. Lors de l'établissement de la connexion, si rien n'est fait, le poste nomade sera connecté à la fois sur un réseau non sûr (internet) et à la fois sur le réseau d'entreprise. Cette situation est particulièrement dangereuse car un pirate pourra se servir du poste comme passerelle pour accéder au réseau interne. Afin d'éliminer ce risque, lors de l'établissement de la connexion, la route par défaut sera modifiée afin de router tout le trafic dans le tunnel VPN. Il peut arriver qu'un poste soit contaminé. Dans ce cas il faudra s'assurer que la contamination ne soit pas propagée au reste de l'entreprise. Il est possible de réduire ce risque en protégeant l'ordinateur avec une solution logiciel (type antivirus), le poste sera connecté dans une zone sécurisée du réseau interne (sorte de DMZ pour VPNs) et on s'assurera qu'une alerte est remontée en cas de détection de menace. 17