implémentation d'openvpn

26
Dimitri Lembokolo 1 Implémentation d'OPENVPN sous Linux (Fedora 13) 1. Installation du package Openvpn Nous allons procéder à la mise en œuvre d'une solution d'interconnexion de sites distants grâce à l'outil openvpn sous fedora 13. Sur la ligne de commande en tant que super utilisateur, tapez la commande comme à la figure ci-dessous: Valider Voilà il me propose un autre outil très intéressant qui assure la compression des données sous le tunnel pour mieux gagner en vitesse de transmission: il s'agit de l'outil « lzo », nous verrons cet outils dans les fichiers de configuration un peu plutard

Upload: dimitri-lembokolo

Post on 21-Jun-2015

3.300 views

Category:

Documents


3 download

DESCRIPTION

juste une prise en main de sa machine à distance

TRANSCRIPT

Page 1: Implémentation d'openvpn

Dimitri Lembokolo

1

Implémentation d'OPENVPN sous Linux (Fedora 13)

1. Installation du package Openvpn

Nous allons procéder à la mise en œuvre d'une solution d'interconnexion de sites

distants grâce à l'outil openvpn sous fedora 13.

Sur la ligne de commande en tant que super utilisateur, tapez la commande

comme à la figure ci-dessous:

Valider

Voilà il me propose un autre outil très intéressant qui assure la compression des

données sous le tunnel pour mieux gagner en vitesse de transmission: il s'agit de

l'outil « lzo », nous verrons cet outils dans les fichiers de configuration un peu

plutard

Page 2: Implémentation d'openvpn

Dimitri Lembokolo

2

Voilà donc on tape « O » pour confirmer l’installation

En effet openvpn tourne, il n'y seulement pas grand choses au niveau des sockets

tel a été le comportement après la commande netstat.

Vérifiant au niveau des paquets RPM :

Exact les paquets sont bien là.

Page 3: Implémentation d'openvpn

Dimitri Lembokolo

3

2. Génération des certificats d'authentification

Nous allons sur ce point générer les certificats et les clés 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 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 les certificats pour les clients et serveur.

Première chose, nous allons modifier les valeurs des variables d'environnement

afin de ne pas avoir à répéter les renseignements à fournir à la génération des

clés,

Page 4: Implémentation d'openvpn

Dimitri Lembokolo

4

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 sous fedora .

export KEY_COUNTRY="US"

export KEY_PROVINCE="CA"

export KEY_CITY="SanFrancisco"

export KEY_ORG="Fort-Funston"

export KEY_EMAIL="[email protected]"

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) contenu dans 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.

Page 5: Implémentation d'openvpn

Dimitri Lembokolo

5

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 le script build-all (index.txt et serial qui sont important pour la

génération des certificats server et clients).

Page 6: Implémentation d'openvpn

Dimitri Lembokolo

6

Création des certificats.

Premiè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 entre crochets 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 ». Ce certificat est le certificat racine qui va ensuite nous

permettre de créer le certificat serveur et les certificats clients.

Donc la partie publique de ce certificat devrait être déposé au niveau des clients

pour qu'ils puissent s'authentifier au niveau du serveur pour qu'ils reconnaissent

tous les certificats qui seront 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.

Page 7: Implémentation d'openvpn

Dimitri Lembokolo

7

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».

Page 8: Implémentation d'openvpn

Dimitri Lembokolo

8

Page 9: Implémentation d'openvpn

Dimitri Lembokolo

9

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 de mê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 avions besoin pour configurer notre VPN.

Page 10: Implémentation d'openvpn

Dimitri Lembokolo

10

3. Configuration et lancement du serveur

Il nous reste à récupérer le fichier de configuration du serveur « server.conf » et

le mettre dans leré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-files

Très bien là nous allons éditer ce fichier pour y positionner les variables qui vont

nous intéresser pour la mise en place du vpn.

Page 11: Implémentation d'openvpn

Dimitri Lembokolo

11

Vérification de l’adresse IP de la machine

On édite le fichier server.conf

Les principaux paramètres sont les suivants :

local a.b.c.d

Mettre son adresse IP si on veut notre machine soit le serveur (chez moi « local

Page 12: Implémentation d'openvpn

Dimitri Lembokolo

12

192.168.1.66 »).

port 1194

Le port par défaut est 1194, vous pouvez mettre le port 443 qui est un port

réservé pour le protocole 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 port car 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 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 sécurité mais là c'est un compromis entre

performance du tunnel et sécurité du lien.

1024bit est plutôt un bon choix dans notre contexte

A 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.0

Nous 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 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 vérifier en bas du fichier l'utilisation de la librairie lzo pour la compression

des données.

Comp-lzo

Utiliser l'utilisateur et son groupe nobody par défaut pour lancer le serveur.

user nobody (le décommenté)

group nobody (le décommenté)

Page 13: Implémentation d'openvpn

Dimitri Lembokolo

13

verb 3

Le 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 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 c’est vraiment informatique ça.

Page 14: Implémentation d'openvpn

Dimitri Lembokolo

14

Excellent openvpn est au niveau des sockets démarrés.

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 même manipulation.

Page 15: Implémentation d'openvpn

Dimitri Lembokolo

15

INSTALLATION DU CLIENT OPENVPN

Alors après avoir installé et configuré notre serveur OpenVPN sous notre fedora

nous allons nous intéresser aux clients.

A savoir aussi, on est sur Windows donc c’est clic… suivant… suivant on n’a

pas besoin d’être 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 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.exe

Exécutez et il vous posera quelques questions et vous installerez les drivers des

interfaces réseaux virtuelles TUN/TAP :

Le répertoire d'installation sera C:/ProgramFiles /OpenVPN

On a installé le client sous Windows XP et on a ces répertoires là que vous

voyez.

Page 16: Implémentation d'openvpn

Dimitri Lembokolo

16

Ouvrons le dossier sample-config qui contient des exemples de fichiers de

configuration.

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

Page 17: Implémentation d'openvpn

Dimitri Lembokolo

17

partie client sur le serveur et les copier dans ce répertoire config sous Windows.

Nous allons utiliser winSCP pour ce faire.

Mon serveur à l'adresse IP 192.168.1.66 et voilà :

Cliquer sur login

Page 18: Implémentation d'openvpn

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 clé

client et le certificats client.

Ok !

Page 19: Implémentation d'openvpn

Dimitri Lembokolo

19

A présent 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 paramètres.

Page 20: Implémentation d'openvpn

Dimitri Lembokolo

20

Voilà c'est comme le fichier de conf du serveur sous linux.

Les principaux paramètres à modifier :

Client

proto tcp

dev tun comme sur le serveur

remote 192.168.1.66 1194 (remote : on renseigne l’adresse IP de son serveur

vpn et le numéro de 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 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 générer les informations

cryptographiques au niveau du ré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 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 général attribue des adresses

Page 21: Implémentation d'openvpn

Dimitri Lembokolo

21

Ip publiques mais trouve le moyen de les changer à chaque fois que l'on se

connecte ou qui fixe un certain délai 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'hôte de telle sorte que je

puisse au niveau de mes fichiers de config client openvpn renseigner la variable

« remote [email protected] »).

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 8080

Si 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 chemin absolu.

Page 22: Implémentation d'openvpn

Dimitri Lembokolo

22

Ca : certificat de l'autorité de certification

Clientdimi.crt : le certificat du client

Clientdimi.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 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.

Page 23: Implémentation d'openvpn

Dimitri Lembokolo

23

Faite un double clic sur icône

Partie linux Lancer le serveur

Sous Windows maintenant (sur la barre de tâches : double cliqué sur l’icône

suivant)

Page 24: Implémentation d'openvpn

Dimitri Lembokolo

24

Tentative de connexion du client au serveur (tout marche comme on veut et c’est

trop ki koi… !)

Page 25: Implémentation d'openvpn

Dimitri Lembokolo

25

Voilà ce qui se passe du côté serveur (LINUX)

Page 26: Implémentation d'openvpn

Dimitri Lembokolo

26

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 différentes 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 difficultés rencontrées, rendez-vous sur le blog

http://lapensedujour.blogspot.com

To be continued…