Implémentation d'openvpn final

Embed Size (px)

Citation preview

  • 7/30/2019 Implmentation d'openvpn final

    1/26

    Dimitri Lembokolo 1

    Implmentation d'OPENVPN sous Linux (Fedora 13)

    Avant-propos

    OpenVPN est un logiciel permettant de crer des rseaux privs virtuels sansutiliser des technologies telles que PPtP (Microsoft) ou IPSec. Il est de plusdisponibles sur de nombreux systmes dexploitation (Microsoft Windows,

    GNU / Linux, MacOS X, ). Cest une solution simple pour grer un rseau

    priv virtuel compos de machines htroclites dans un environnementnautorisant pas IPSec.

    Dans notre cas nous allons utiliser OpenVPN.

    Voici le schma du rseau que nous allons mettre en place

    Figure 1

    Tunnelvpn

    Voici un autre schma (avec proxy)

    Figure 2

    Tunnelvpn

    Remarque : pour notre cas, nous nutilisons pas de proxy, cest pourquoinous

    limplmentons avec larchitecture de la figure 1.

    Le server dispose de deux ips, lune public et une autre prive pour le rseau

    VPNEth0 : 192.168.1.66Tun0 : 10.8.0.1

  • 7/30/2019 Implmentation d'openvpn final

    2/26

    Dimitri Lembokolo 2

    Le client dispose galement de deux IPS, lIPde linterface normal donnantaccs au net et lIPdu linterface virtuel dOpenVPNRseau local : 192.168.1.65Interface virtuel 10.8.0.6

    Voyons maintenant en dtail linstallation et la configuration du server

    1.Installation du package OpenvpnNous allons procder la mise en uvre d'une solution d'interconnexion de sitesdistants grce l'outil openvpn sous fedora 13.Sur la ligne de commande en tant que super utilisateur, tapez la commandecomme la figure ci-dessous:

    Voil il me propose un autre outil trs intressant qui assure la compression desdonnes sous le tunnel pour mieux gagner en vitesse de transmission: il s'agit de

  • 7/30/2019 Implmentation d'openvpn final

    3/26

    Dimitri Lembokolo 3

    l'outil lzo , nous verrons cet outils dans les fichiers de configuration un peuplutardVoil donc on tape O pour confirmer linstallation

    En effet openvpn tourne, il n'y seulement pas grand choses au niveau des socketstel a t le comportement aprs la commande netstat.Vrifiant au niveau des paquets RPM :

    Exact les paquets sont bien l.

  • 7/30/2019 Implmentation d'openvpn final

    4/26

    Dimitri Lembokolo 4

    2.Gnration des certificats d'authentificationNous allons sur ce point gnrer les certificats et les cls qui vont permettre auxclients et au serveur de s'authentifier mutuellement de telle sorte que personne

    d'autres que vous ne puisse se connecter au VPN.Pour a nous allons se dplacer dans le rpertoire easy-rsa d'openvpn :

    #cd /usr/share/openvpn/easy-rsa/

    Voil nous avons les outils ncessaires qui vont nous permettre de gnrer lescls et les certificats pour les clients et serveur.

    Premire chose, nous allons modifier les valeurs des variables d'environnementafin de ne pas avoir rpter les renseignements fournir la gnration descls,Pour cela nous allons diter le fichier vars ci-dessus :Voici la liste des paramtres par dfaut modifier, ils sont gnralement en basdu fichier sous fedora .

  • 7/30/2019 Implmentation d'openvpn final

    5/26

    Dimitri Lembokolo 5

    export KEY_COUNTRY="US"export KEY_PROVINCE="CA"export KEY_CITY="SanFrancisco"export KEY_ORG="Fort-Funston"

    export KEY_EMAIL="[email protected]"

    Aprs sauvegarde du fichier, relancer la prise en charge de ces nouvellesvariables :

    Remarque : il va supprimer le dossier keys (ancien endroit o il conservait les

    cls) contenu dans le rpertoire qu'il indique, priori il n'y a mme pas derpertoire keys car nous sommes prsent dans ce rpertoire.Donc nous n'avons rien craindre nous allons lancer le script ./clean-all.

  • 7/30/2019 Implmentation d'openvpn final

    6/26

    Dimitri Lembokolo 6

    L il m'a cr un rpertoire keys qui contiendra toutes nos cls.

    Vous pourrez vrifier qu' prsent ce rpertoire ne contient que deux fichierscres par le script build-all (index.txt et serial qui sont important pour lagnration des certificats server et clients).

  • 7/30/2019 Implmentation d'openvpn final

    7/26

    Dimitri Lembokolo 7

    Cration des certificats.Premirement nous allons faire une autorit de certification.

    Voil vous remarquerez que vous aviez dj les valeurs mmorises dans lefichier vars .Il ne s'agira que de renseigner le nom de la CA (Certification Authority), pourles valeurs entre crochets appuy sur Entre et il prendra la valeur par dfaut.A prsent nous venons de crer l'autorit de certification qui est dans lerpertoire keys . Ce certificat est le certificat racine qui va ensuite nouspermettre de crer le certificat serveur et les certificats clients.Donc la partie publique de ce certificat devrait tre dpos au niveau des clients

    pour qu'ils puissent s'authentifier au niveau du serveur pour qu'ils reconnaissenttous les certificats qui seront crs partir de cette autorit.L nous allons crer le certificat pour le serveur (cette machine mme que jednomme bonal).Ce certificat nous allons l'appeler srvrdimi , nous allons le signer nous-mmeet ensuite, nous allons le gnrer comme va le montrer cette manipulation.Nous n'allons pas donner un challenge password ni optional .....Pour la crationdes certificats.

  • 7/30/2019 Implmentation d'openvpn final

    8/26

    Dimitri Lembokolo 8

    Trs bien il ne reste plus qu' faire la mme opration pour le client, en seservant du script build-key clientdimi : Le certificat du client nous allonsl'appeler clientdimi.

  • 7/30/2019 Implmentation d'openvpn final

    9/26

    Dimitri Lembokolo 9

  • 7/30/2019 Implmentation d'openvpn final

    10/26

    Dimitri Lembokolo 10

    Examinons le contenu du rpertoire keys.

    Excellent nous voyons que la CA a t gnr, la partie certificat server a tgnre de mme que la partie certificat client.A prsent il ne nous reste qu' crer les paramtres Diffie-helmann :Diffie-Hellma (D-H) est un algorithme cl publique utilis pour assurer unpartage de cl secrtes.

    Trs bien, l nous avons l'ensemble des informations cryptographiques dontnous avions besoin pour configurer notre VPN.

  • 7/30/2019 Implmentation d'openvpn final

    11/26

    Dimitri Lembokolo 11

    3.Configuration et lancement du serveurIl nous reste rcuprer le fichier de configuration du serveur server.conf etle mettre dans lerpertoire/usr/share/openvpn/easy-rsa/2.0/keys/

    Alors chez moi il est par dfaut install dans le rpertoire/usr/share/doc/openvpn-2.1/sample-config-files

    Trs bien l nous allons diter ce fichier pour y positionner les variables qui vontnous intresser pour la mise en place du vpn.

  • 7/30/2019 Implmentation d'openvpn final

    12/26

    Dimitri Lembokolo 12

    Vrification de ladresse IP de la machine

    On dite le fichier server.conf

    Les principaux paramtres 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 ).

  • 7/30/2019 Implmentation d'openvpn final

    13/26

    Dimitri Lembokolo 13

    port 1194Le port par dfaut est 1194, vous pouvez mettre le port 443 qui est un portrserv pour le protocole https qui traverse rapidement les firewall et les proxy.En gnral tous les proxy d'entreprise qui filtre les entres laissent passer le

    trafic sur ce port car de toute faon c'est un contenu chiffr que le proxy ne veutpas rcuprer.

    proto tcpvidemment le protocole tcp est un bon choix, par dfaut il est en udp.

    dev tunOk nous nous allons prendre comme interface tun pour tunnel.

    ca ca.crtcert srvrdimi.crtkey srvrdimi.key

    Les parametres Diffie hellmandh dh1024.pem

    Exact nous l'avions cr sous ce nom.C'est une cl de 1024bit, a noter galement que nous pouvions bien entendu enfaire de 2048 bit pour plus de scurit mais l c'est un compromis entre

    performance du tunnel et scurit du lien.1024bit est plutt un bon choix dans notre contexteA noter quon na pas besoin de spcifier le chemin d'accs ces cl etcertificats.

    Server 10.8.0.0 255.255.255.0Nous donnerons cette plage par dfaut au serveur.A noter galement que si vous utilisez dj ces adresses sur votre LAN il faudrabien en prendre une autre plage que vous n'utilisez pas.

    A chaque fois qu'un client se connectera au vpn, le serveur lui attribuera uneadresse Ip contenue dans cette plage.Bien vrifier en bas du fichier l'utilisation de la librairie lzo pour la compressiondes donnes.Comp-lzo

    Utiliser l'utilisateur et son groupe nobody par dfaut pour lancer le serveur.user nobody (le dcomment)group nobody (le dcomment)

    verb 3Le niveau 3 de log me parat plutt bien pour un serveur de production.

  • 7/30/2019 Implmentation d'openvpn final

    14/26

    Dimitri Lembokolo 14

    Si jamais vous avez des problmes avec le serveur, il ne dmarre pas ....vouspourrez mettre la verbosit maximal qui est de 9.On sauvegarde et on lance le service par le script contenu dans/etc/init.d/

    Parfait tout marche comme on veut cest vraiment informatique a.

    Excellent openvpn est au niveau des sockets dmarrs.

  • 7/30/2019 Implmentation d'openvpn final

    15/26

    Dimitri Lembokolo 15

    Il ne reste plus qu' s'occuper des clients sous Windows maintenant.A noter galement que nous pouvons avoir des clients Linux et c'estpratiquement la mme manipulation.

    INSTALLATION DU CLIENT OPENVPN

    Alors aprs avoir install et configur notre serveur OpenVPN sous notre fedoranous allons nous intresser aux clients.

    A savoir aussi, on est surWindows donc cest clic suivant suivant on na

    pas besoin dtre intelligent pour le faire.

    1.Configuration du clientNous avons opt pour l'installation d'un client sous Windows sachant que souslinux c'est pratiquement la mme chose que pour la parte serveur.Vous allez vous rendre sur ce lien et tlcharger l'outil client :http://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exe

    Excutez et il vous posera quelques questions et vous installerez les drivers desinterfaces rseaux virtuelles TUN/TAP :Le rpertoire d'installation sera C:/ProgramFiles /OpenVPN

    http://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exehttp://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exehttp://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exe
  • 7/30/2019 Implmentation d'openvpn final

    16/26

    Dimitri Lembokolo 16

    On a install le client sous Windows XP et on a ces rpertoires l que vousvoyez.Ouvrons le dossier sample-config qui contient des exemples de fichiers deconfiguration.

    Ok ensuite nous allons copier le fichier client dans le rpertoire config .s'il n'yest dj pas.

  • 7/30/2019 Implmentation d'openvpn final

    17/26

    Dimitri Lembokolo 17

    Il nous faudra galement rcuprer les informations cryptographiques de lapartie client sur le serveur et les copier dans ce rpertoire config sous Windows.Nous allons utiliser winSCP pour ce faire.Mon serveur l'adresse IP 192.168.1.66 et voil :

    Cliquer sur login

  • 7/30/2019 Implmentation d'openvpn final

    18/26

    Dimitri Lembokolo 18

    Voil j'ai les informations contenues dans le fichier/usr/share/openvpn/easy-rsa/2.0/keys dans la partie de droite (sous linux) et je dois copier la Ca, les clclient et le certificats client.

    Ok !

  • 7/30/2019 Implmentation d'openvpn final

    19/26

    Dimitri Lembokolo 19

    A prsent on fait clic droit sur le fichier client et on a la possibilit de l'diter oude lancer le service.Nous allons l'diter pour renseigner nos paramtres.

  • 7/30/2019 Implmentation d'openvpn final

    20/26

    Dimitri Lembokolo 20

    Voil c'est comme le fichier de conf du serveur sous linux.Les principaux paramtres modifier :Clientproto tcp

    dev tun comme sur le serveurremote 192.168.1.66 1194 (remote : on renseigne ladresse IP de son serveurvpn et le numro de port, pour mon cas cest 192.168.1.66 et le numro de port

    1194).

    La partie la plus importante est la ligne remote .Alors pour que vous puissiez connecter un client depuis la Brazzaville et leserveur se trouvant chez 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 clientsque nous voulons, il faut juste chaque fois gnrer les informationscryptographiques au niveau du rpertoire easy-rsa du serveur et les dployer parla suite sur le client.On met alternative pour les gens qui ne voudront pas utiliser une IP publique ilexiste des solutions comme dyndns, No-IP entre autres qui permette de fixer uneadresse IP publique de par son nom.

    Par exemple si j'utilisais une ADSL d'orange qui en gnral attribue des adressesIp publiques mais trouve le moyen de les changer chaque fois que l'on se

  • 7/30/2019 Implmentation d'openvpn final

    21/26

    Dimitri Lembokolo 21

    connecte ou qui fixe un certain dlai pour renouveler les adresses IP des clients(c'est une politique ....sinon les gens en feront des IP fixes et voil)Je peux temporairement avoir une Ip du type 196.200.80.18 mais quicertainement va changer au bout d'un certain temps, alors pour permettre mes

    clients openvpn de toujours se connecter au serveur, je fais correspondre cetteadresse avec un nom comme bonaldimi.dyndns.org .Et l je vais tout simplement installer un client sur mon serveur qui se chargerade faire la correspondance entre mon Ip et mon nom d'hte de telle sorte que jepuisse au niveau de mes fichiers de config client openvpn renseigner la variable remote [email protected] ).Et l j'ai mis un nom d'hte qui pointera toujours sur mon Ip que l'ADSL medonne.

    Exemple http-proxy 192.168.1.20 8080Si vous n'utilisez pas de proxy comme moi prsentement, ignor .....Autre point important il faut obligatoire indiquer l'emplacement des cls etcertificats.Vu que nous les avons dans le rpertoire courant, on na pas besoin d'indiquer

    un chemin absolu.

  • 7/30/2019 Implmentation d'openvpn final

    22/26

    Dimitri Lembokolo 22

    Ca : certificat de l'autorit de certificationClientdimi.crt : le certificat du clientClientdimi.key : la cl associe au certificat du client.

    De la mme manire on vrifie l'utilisation de la lib lizo pour la compression desdonnes dans le tunnel VPN.Voil on sauvegarde le fichier et on lance le service en cliquant droit sur lefichier de conf du client et Start.

  • 7/30/2019 Implmentation d'openvpn final

    23/26

    Dimitri Lembokolo 23

    Faite un double clic sur licne

    Partie linux

    Lancer le serveur

    Sous Windows maintenant (sur la barre de tches : double cliqu sur licnesuivant)

  • 7/30/2019 Implmentation d'openvpn final

    24/26

    Dimitri Lembokolo 24

    Tentative de connexion du client au serveur (tout marche comme on veut et cest

    trop ki koi !)

  • 7/30/2019 Implmentation d'openvpn final

    25/26

    Dimitri Lembokolo 25

    Voil ce qui se passe du ct serveur (LINUX)

  • 7/30/2019 Implmentation d'openvpn final

    26/26