Vous êtes sur la page 1sur 26

Implmentation d'OPENVPN sous Linux (Fedora 13) Avant-propos

OpenVPN est un logiciel permettant de crer des rseaux privs virtuels sans utiliser des technologies telles que PPtP (Microsoft) ou IPSec. Il est de plus disponibles 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 environnement nautorisant 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 pourquoi nous limplmentons avec larchitecture de la figure 1. Le server dispose de deux ips, lune public et une autre prive pour le rseau VPN Eth0 : 192.168.1.66 Tun0 : 10.8.0.1
Dimitri Lembokolo 1

Le client dispose galement de deux IPS, lIP de linterface normal donnant accs au net et lIP du linterface virtuel dOpenVPN Rseau local : 192.168.1.65 Interface virtuel 10.8.0.6 Voyons maintenant en dtail linstallation et la configuration du server

1. Installation du package Openvpn


Nous allons procder la mise en uvre d'une solution d'interconnexion de sites distants grce l'outil openvpn sous fedora 13. Sur la ligne de commande en tant que super utilisateur, tapez la commande comme la figure ci-dessous:

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

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

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

Exact les paquets sont bien l.


Dimitri Lembokolo 3

2. Gnration des certificats d'authentification


Nous allons sur ce point gnrer les certificats et les cls qui vont permettre aux clients 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 les cls et les certificats pour les clients et serveur. Premire chose, nous allons modifier les valeurs des variables d'environnement afin de ne pas avoir rpter les renseignements fournir la gnration des cls, Pour cela nous allons diter le fichier vars ci-dessus : Voici la liste des paramtres par dfaut modifier, ils sont gnralement en bas du fichier sous fedora .
Dimitri Lembokolo 4

export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain"

Aprs 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 cls) contenu dans le rpertoire qu'il indique, priori il n'y a mme pas de rpertoire keys car nous sommes prsent dans ce rpertoire. Donc nous n'avons rien craindre nous allons lancer le script ./clean-all.

Dimitri Lembokolo

L il m'a cr un rpertoire keys qui contiendra toutes nos cls. Vous pourrez vrifier qu' prsent ce rpertoire ne contient que deux fichiers cres par le script build-all (index.txt et serial qui sont important pour la gnration des certificats server et clients).

Dimitri Lembokolo

Cration des certificats.


Premirement nous allons faire une autorit de certification.

Voil vous remarquerez que vous aviez dj les valeurs mmorises dans le fichier vars . Il ne s'agira que de renseigner le nom de la CA (Certification Authority), pour les 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 le rpertoire keys . Ce certificat est le certificat racine qui va ensuite nous permettre 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 reconnaissent tous les certificats qui seront crs partir de cette autorit. L nous allons crer le certificat pour le serveur (cette machine mme que je dnomme bonal). Ce certificat nous allons l'appeler srvrdimi , nous allons le signer nous-mme et ensuite, nous allons le gnrer comme va le montrer cette manipulation. Nous n'allons pas donner un challenge password ni optional .....Pour la cration des certificats.

Dimitri Lembokolo

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

Dimitri Lembokolo

Dimitri Lembokolo

Examinons le contenu du rpertoire keys.

Excellent nous voyons que la CA a t gnr, la partie certificat server a t gnre 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 un partage de cl secrtes.

Trs bien, l nous avons l'ensemble des informations cryptographiques dont nous avions besoin pour configurer notre VPN.
Dimitri Lembokolo 10

3. Configuration et lancement du serveur


Il nous reste rcuprer le fichier de configuration du serveur server.conf et le 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 vont nous intresser pour la mise en place du vpn.

Dimitri Lembokolo

11

Vrification de ladresse IP de la machine

On dite le fichier server.conf

Les principaux paramtres sont les suivants : local a.b.c.d Mettre son adresse IP si on veut notre machine soit le serveur (chez moi local 192.168.1.66 ).
Dimitri Lembokolo 12

port 1194 Le port par dfaut est 1194, vous pouvez mettre le port 443 qui est un port rserv 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 veut pas rcuprer. proto tcp videmment le protocole tcp est un bon choix, par dfaut il est en udp. dev tun Ok nous nous allons prendre comme interface tun pour tunnel. ca ca.crt cert srvrdimi.crt key srvrdimi.key Les parametres Diffie hellman dh dh1024.pem Exact nous l'avions cr sous ce nom. C'est une cl de 1024bit, a noter galement que nous pouvions bien entendu en faire 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 contexte A noter quon na pas besoin de spcifier le chemin d'accs ces cl et certificats. Server 10.8.0.0 255.255.255.0 Nous donnerons cette plage par dfaut au serveur. A noter galement que si vous utilisez dj ces adresses sur votre LAN il faudra bien en prendre une autre plage que vous n'utilisez pas. A chaque fois qu'un client se connectera au vpn, le serveur lui attribuera une adresse Ip contenue dans cette plage. Bien vrifier en bas du fichier l'utilisation de la librairie lzo pour la compression des 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 3 Le niveau 3 de log me parat plutt bien pour un serveur de production.
Dimitri Lembokolo 13

Si jamais vous avez des problmes avec le serveur, il ne dmarre pas ....vous pourrez 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.


Dimitri Lembokolo 14

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

INSTALLATION DU CLIENT OPENVPN


Alors aprs avoir install et configur notre serveur OpenVPN sous notre fedora nous allons nous intresser aux clients. A savoir aussi, on est sur Windows donc cest clic suivant suivant on na pas besoin dtre intelligent pour le faire.

1. Configuration du client
Nous avons opt pour l'installation d'un client sous Windows sachant que sous linux 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 des interfaces rseaux virtuelles TUN/TAP : Le rpertoire d'installation sera C:/ProgramFiles /OpenVPN

Dimitri Lembokolo

15

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

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

Dimitri Lembokolo

16

Il nous faudra galement rcuprer les informations cryptographiques de la partie 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

Dimitri Lembokolo

17

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

Ok !
Dimitri Lembokolo 18

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

Dimitri Lembokolo

19

Voil c'est comme le fichier de conf du serveur sous linux. Les principaux paramtres modifier : Client proto tcp dev tun comme sur le serveur remote 192.168.1.66 1194 (remote : on renseigne ladresse IP de son serveur vpn 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 le serveur 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 clients que nous voulons, il faut juste chaque fois gnrer les informations cryptographiques au niveau du rpertoire easy-rsa du serveur et les dployer par la suite sur le client. On met alternative pour les gens qui ne voudront pas utiliser une IP publique il existe des solutions comme dyndns, No-IP entre autres qui permette de fixer une adresse IP publique de par son nom. Par exemple si j'utilisais une ADSL d'orange qui en gnral attribue des adresses Ip publiques mais trouve le moyen de les changer chaque fois que l'on se
Dimitri Lembokolo 20

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 qui certainement va changer au bout d'un certain temps, alors pour permettre mes clients openvpn de toujours se connecter au serveur, je fais correspondre cette adresse avec un nom comme bonaldimi.dyndns.org . Et l je vais tout simplement installer un client sur mon serveur qui se chargera de faire la correspondance entre mon Ip et mon nom d'hte de telle sorte que je puisse au niveau de mes fichiers de config client openvpn renseigner la variable remote bonaldimi@dyndns.org ). Et l j'ai mis un nom d'hte qui pointera toujours sur mon Ip que l'ADSL me donne.

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

Dimitri Lembokolo

21

Ca : certificat de l'autorit de certification Clientdimi.crt : le certificat du client Clientdimi.key : la cl associe au certificat du client. De la mme manire on vrifie l'utilisation de la lib lizo pour la compression des donnes dans le tunnel VPN. Voil on sauvegarde le fichier et on lance le service en cliquant droit sur le fichier de conf du client et Start.

Dimitri Lembokolo

22

Partie linux
Lancer le serveur

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

Faite un double clic sur licne

Dimitri Lembokolo

23

Tentative de connexion du client au serveur (tout marche comme on veut et cest trop ki koi !)

Dimitri Lembokolo

24

Voil ce qui se passe du ct serveur (LINUX)

Dimitri Lembokolo

25

Le client arrive se connecter et le serveur lui a attribu l'ip 10.8.0.6 C'est trop cool ...... Au niveau du serveur voici mes diffrentes interfaces et le serveur ayant pris l'adresse 10.8.0.1

Cot 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. Pour tout commentaire ou difficults rencontres, rendez-vous sur le blog http://lapensedujour.blogspot.com

To be continued
Dimitri Lembokolo 26

Vous aimerez peut-être aussi