10.07.2015 Views

Implémentation d'OPENVPN sous Linux (fedora 13) - EC2LT

Implémentation d'OPENVPN sous Linux (fedora 13) - EC2LT

Implémentation d'OPENVPN sous Linux (fedora 13) - EC2LT

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

RTN / <strong>EC2LT</strong>Réseaux et Techniques NumériquesEcole Centrale des Logiciels Libres et de TélécommunicationsImplémentation <strong>d'OPENVPN</strong> <strong>sous</strong> <strong>Linux</strong> (<strong>fedora</strong> <strong>13</strong>)RéseauxEcole Centrale des Logiciels Libres et de TélécommunicationsZone de Captage, Dakar – SénégalTel : (+221) 33 867 45 90 || (+221) 77 517 17 71http://www.ec2lt.sn || http://formation.rtn.sn/moodleFront de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


2. Génération des certificats d'authentificationNous allons sur ce point générer les certificats et les clés qui vont permettre aux clients et auserveur de s'authentifier mutuellement de telle sorte que personne d'autres que vous ne puissese connecter au VPN.Pour ça nous allons se déplacer dans le répertoire easy-rsa d'openvpn :#cd /usr/share/openvpn/easy-rsa/Voilà nous avons les outils nécessaires qui vont nous permettre de générer les clés et lescertificats pour les clients et serveur.Première chose, nous allons modifier les valeurs des variables d'environnement afin de ne pasavoir à répéter les renseignements à fournir à la génération des clés,Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Pour cela nous allons éditer le fichier « vars » ci-dessus :Voici la liste des paramètres par défaut à modifier, ils sont généralement en bas du fichier <strong>sous</strong><strong>fedora</strong> .export KEY_COUNTRY="US"export KEY_PROVINCE="CA"export KEY_CITY="SanFrancisco"export KEY_ORG="Fort-Funston"export KEY_EMAIL="me@myhost.mydomain"Après sauvegarde du fichier, relancer la prise en charge de ces nouvelles variables :Remarque : il va supprimer le dossier keys (ancien endroit où il conservait les clés) contenudans le répertoire qu'il indique, à priori il n'y a même pas de répertoire keys car nous sommesà présent dans ce répertoire.Donc nous n'avons rien à craindre nous allons lancer le script ./clean-all.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Là il m'a créé un répertoire « keys » qui contiendra toutes nos clés.Vous pourrez vérifier qu'à présent ce répertoire ne contient que deux fichiers crées par lescript build-all (index.txt et serial qui sont important pour la génération des certificats server etclients).Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Création des certificatsPremièrement nous allons faire une autorité de certification.Voilà vous remarquerez que vous aviez déjà les valeurs mémorisées dans le fichier « vars ».Il ne s'agira que de renseigner le nom de la CA (Certification Authority), pour les valeurs entrecrochets appuyé sur Entrée et il prendra la valeur par défaut.A présent nous venons de créer l'autorité de certification qui est dans le répertoire « keys ». Cecertificat est le certificat racine qui va ensuite nous permettre de créer le certificat serveur etles certificats clients.Donc la partie publique de ce certificat devrait être déposé au niveau des clients pour qu'ilspuissent s'authentifier au niveau du serveur pour qu'ils reconnaissent tous les certificats quiseront créés à partir de cette autorité.Là nous allons créer le certificat pour le serveur (cette machine même que je dénomme bonal).Ce certificat nous allons l'appeler « srvrdimi », nous allons le signer nous-même et ensuite,nous allons le générer comme va le montrer cette manipulation.Nous n'allons pas donner un challenge password ni optional .....Pour la création des certificats.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Très bien il ne reste plus qu'à faire la même opération pour le client, en se servant du script «build-key clientdimi » : Le certificat du client nous allons l'appeler « clientdimi».Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Examinons le contenu du répertoire keys.Excellent nous voyons que la CA a été généré, la partie certificat server a été générée demême que la partie certificat client.A présent il ne nous reste qu'à créer les paramètres Diffie-helmann :Diffie-Hellma (D-H) est un algorithme à clé publique utilisé pour assurer un partage de clésecrètes.Très bien, là nous avons l'ensemble des informations cryptographiques dont nous avionsbesoin pour configurer notre VPN.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


3. Configuration et lancement du serveurIl nous reste à récupérer le fichier de configuration du serveur « server.conf » et le mettre danslerépertoire /usr/share/openvpn/easy-rsa/2.0/keys/Alors chez moi il est par défaut installé dans le répertoire /usr/share/doc/openvpn-2.1/sample-config-filesTrès bien là nous allons éditer ce fichier pour y positionner les variables qui vont nousintéresser pour la mise en place du vpn.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Vérification de l’adresse IP de la machineOn édite le fichier server.confFront de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Les principaux paramètres sont les suivants :local a.b.c.dMettre son adresse IP si on veut notre machine soit le serveur (chez moi « local192.168.1.66 »).port 1194Le port par défaut est 1194, vous pouvez mettre le port 443 qui est un port réservé pour leprotocole https qui traverse rapidement les firewall et les proxy.En général tous les proxy d'entreprise qui filtre les entrées laissent passer le trafic sur ce portcar de toute façon c'est un contenu chiffré que le proxy ne veut pas récupérer.proto tcpÉvidemment le protocole tcp est un bon choix, par défaut il est en udp.dev tunOk nous nous allons prendre comme interface tun pour tunnel.ca ca.crtcert srvrdimi.crtkey srvrdimi.keyLes parametres Diffie hellmandh dh1024.pemExact nous l'avions créé <strong>sous</strong> ce nom.C'est une clé de 1024bit, a noter également que nous pouvions bien entendu en faire de 2048bit pour plus de sécurité mais là c'est un compromis entre performance du tunnel et sécurité dulien.1024bit est plutôt un bon choix dans notre contexteA noter qu’on n’a pas besoin de spécifier le chemin d'accès à ces clé et certificats.Server 10.8.0.0 255.255.255.0Nous donnerons cette plage par défaut au serveur.A noter également que si vous utilisez déjà ces adresses sur votre LAN il faudra bien enprendre une autre plage que vous n'utilisez pas.A chaque fois qu'un client se connectera au vpn, le serveur lui attribuera une adresse Ipcontenue dans cette plage.Bien vérifier en bas du fichier l'utilisation de la librairie lzo pour la compression des données.Comp-lzoUtiliser l'utilisateur et son groupe nobody par défaut pour lancer le serveur.user nobody (le décommenté)group nobody (le décommenté)verb 3Le niveau 3 de log me paraît plutôt bien pour un serveur de production.Si jamais vous avez des problèmes avec le serveur, il ne démarre pas ....vous pourrez mettre laverbosité maximal qui est de 9.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


On sauvegarde et on lance le service par le script contenu dans /etc/init.d/Parfait tout marche comme on veut c’est vraiment informatique ça.Excellent openvpn est au niveau des sockets démarrés.Il ne reste plus qu'à s'occuper des clients <strong>sous</strong> Windows maintenant.A noter également que nous pouvons avoir des clients <strong>Linux</strong> et c'est pratiquement la mêmemanipulation.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


INSTALLATION DU CLIENT OPENVPNAlors après avoir installé et configuré notre serveur OpenVPN <strong>sous</strong> notre <strong>fedora</strong> nous allonsnous intéresser aux clients.A savoir aussi, on est sur Windows donc c’est clic… suivant… suivant on n’a pas besoind’être intelligent pour le faire.1. Configuration du clientNous avons opté pour l'installation d'un client <strong>sous</strong> Windows sachant que <strong>sous</strong> linux c'estpratiquement la même chose que pour la parte serveur.Vous allez vous rendre sur ce lien et télécharger l'outil client :http://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exeExécutez et il vous posera quelques questions et vous installerez les drivers des interfacesréseaux virtuelles TUN/TAP :Le répertoire d'installation sera C:/ProgramFiles /OpenVPNOn a installé le client <strong>sous</strong> Windows XP et on a ces répertoires là que vous voyez.Ouvrons le dossier sample-config qui contient des exemples de fichiers de configuration.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Ok ensuite nous allons copier le fichier client dans le répertoire config .s'il n'y est déjà pas.Il nous faudra également récupérer les informations cryptographiques de la partie client sur leserveur et les copier dans ce répertoire config <strong>sous</strong> Windows.Nous allons utiliser winSCP pour ce faire.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Mon serveur à l'adresse IP 192.168.1.66 et voilà :Cliquer sur loginFront de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Voilà j'ai les informations contenues dans le fichier /usr/share/openvpn/easy-rsa/2.0/keysdans la partie de droite (<strong>sous</strong> linux) et je dois copier la Ca, les clé client et le certificats client.Ok !Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


A présent on fait clic droit sur le fichier client et on a la possibilité de l'éditer ou de lancer leservice.Nous allons l'éditer pour renseigner nos paramètres.Voilà c'est comme le fichier de conf du serveur <strong>sous</strong> linux.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Les principaux paramètres à modifier :Clientproto tcpdev tun comme sur le serveurremote 192.168.1.66 1194 (remote : on renseigne l’adresse IP de son serveur vpn et le numérode port, pour mon cas c’est 192.168.1.66 et le numéro de port 1194).La partie la plus importante est la ligne « remote ».Alors pour que vous puissiez connecter un client depuis la Brazzaville et le serveur se trouvantchez Dakar à Mbour il faut indiquer une adresse IP publique et statique.Et c'est d'ailleurs l'objectif du VPN (Interconnexion de sites distants)Il est aussi à rappeler que nous pouvons connecter au serveur autant de clients que nousvoulons, il faut juste à chaque fois générer les informations cryptographiques au niveau durépertoire easy-rsa du serveur et les déployer par la suite sur le client.On met alternative pour les gens qui ne voudront pas utiliser une IP publique il existe dessolutions comme dyndns, No-IP entre autres qui permette de fixer une adresse IP publique depar son nom.Par exemple si j'utilisais une ADSL d'orange qui en général attribue des adresses Ip publiquesmais trouve le moyen de les changer à chaque fois que l'on se connecte ou qui fixe un certaindélai pour renouveler les adresses IP des clients (c'est une politique ....sinon les gens en ferontdes IP fixes et voilà)Je peux temporairement avoir une Ip du type 196.200.80.18 mais qui certainement va changerau bout d'un certain temps, alors pour permettre à mes clients openvpn de toujours seconnecter au serveur, je fais correspondre cette adresse avec un nom commebonaldimi.dyndns.org .Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Et là je vais tout simplement installer un client sur mon serveur qui se chargera de faire lacorrespondance entre mon Ip et mon nom d'hôte de telle sorte que je puisse au niveau de mesfichiers de config client openvpn renseigner la variable « remote bonaldimi@dyndns.org »).Et là j'ai mis un nom d'hôte qui pointera toujours sur mon Ip que l'ADSL me donne.Exemple http-proxy 192.168.1.20 8080Si vous n'utilisez pas de proxy comme moi présentement, ignoré .....Autre point important il faut obligatoire indiquer l'emplacement des clés et certificats.Vu que nous les avons dans le répertoire courant, on n’a pas besoin d'indiquer un cheminabsolu.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Ca : certificat de l'autorité de certificationClientdimi.crt : le certificat du clientClientdimi.key : la clé associée au certificat du client.De la même manière on vérifie l'utilisation de la lib lizo pour la compression des données dansle tunnel VPN.Voilà on sauvegarde le fichier et on lance le service en cliquant droit sur le fichier de conf duclient et Start.Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Partie linuxLancer le serveurSous Windows maintenant (sur la barre de tâches : double cliqué sur l’icône suivant)Faite un double clic sur l’icôneFront de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Tentative de connexion du client au serveur (tout marche comme on veut et c’est trop kikoi… !)Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Voilà ce qui se passe du côté serveur (LINUX)Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


Le client arrive à se connecter et le serveur lui a attribué l'ip 10.8.0.6C'est trop cool ......Au niveau du serveur voici mes différentes interfaces et le serveur ayant pris l'adresse 10.8.0.1Coté Windows, le poste a une nouvelle interface virtuelle que voici avec l'adresse 10.8.0.6.On ne cherche pas à savoir comment ça marche tant que sa marche….Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356


ConclusionEn conclusion, OpenVPN est une alternative souple, robuste et efficace aux serveurs VPNIPSEC souvent très coûteux et pas toujours simple à mettre en place, surtout dans les cas deNAT. De l’OpenSource pur souche au service des administrateurs et des utilisateurs !C’est pourquoi, pour ce type de solution VPN OpenVPN est le meilleur choix, car ilfonctionne très bien avec plusieurs clients dans les différents <strong>sous</strong>-réseaux et sur les systèmesd'exploitation différents, mais quand vous avez de connecter plusieurs serveurs VPN, jerecommanderais une IPSEC, car dans la plupart des cas, il vous offre un plus fort cryptage etune meilleure manipulation d'une PKI (public Key Infrastructure).To be continued…Front de Terre – Zone de captage – N°36 – Ninéa : 2652776R –RC : SN DKR 2006 B 16356

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!