mardi , 17 janvier 2017

Installation OpenVPN Windows

Introduction de OPENVPN
Principe de fonctionnement
Mise en place
:

– Pré-requis
– Installation d’OpenVPN
– Création des certificats
– Génération du certificat root et de sa clé pour le réseau
– Génération du certificat et de la clé pour le serveur
– Génération du certificat et de la clé pour les clients
– Génération des paramètres Diffie Hellman pour le serveur
Configuration du routeur :
– Exemple de réseau
– Création des fichiers de configuration
Connexion :
– Sur le serveur

– Sur les clients
– Créer un VPN avec une adresse IP dynamique
Version rapide du Tutoriel OpenVPN :
– Sur le serveur
– Sur le client
Dépannage :
– Impossible de charger des paramètres DH
– Connection reset by peer
– Paquets entrants Rejetés
– Lexique

Introdution de OPENVPN :

OpenVPN est une solution VPN SSL qui peut accueillir un large éventail de configurations, y compris l’accès à distance et sécuriser votre réseau WiFi. Bien qu’à l’origine développé pour Linux, OpenVPN est maintenant largement utilisé pour fournir des services de VPN aux clients utilisant le système d’exploitation Windows. Définition de « VPN » : « Virtual Private Network », un VPN vous permet de vous connecter à une autre machine (ou un autre réseau) grâce à un tunnel. Ceci vous permet par exemple de vous comporter comme sur un réseau local avec les autres machines connectées au VPN. *Applications réalisables avec ce tutoriel : accès distant sécurisé par authentification et cryptage aux ressources du réseau VPN ( données partagées, imprimantes … )

Principe de fonctionnement :

Pour accepter une connexion, OpenVPN passe par ces étapes :
1. Le serveur doit recevoir la clé partagée
2. Il envoie son certificat électronique, qui est vérifié par le client
3. Le client envoie son compte/mot de passe ou son certificat
4. Le serveur vérifie le compte/mot de passe auprès du serveur Radius, ou il vérifie le certificat de manière autonome.
5. Si la connexion est établie, une adresse IP est fournie au client et elle est routée par le tunnel.

Mise en place :

Le but de ce tutorial est de vous présenter comment mettre en place OpenVPN GUI dans un réseau domestique. La configuration suivante offrira aux utilisateurs Microsoft Windows une connexion Internet sécurisée de n’importe où ainsi qu’un accès à leur réseau domestique.

Pré-requis :

OpenVPN GUI ( openvpn-2.0.9-gui-1.0.3-install.exe ) 2 pc fonctionnent sous Windows Internet un routeur configurable

Installation d’OpenVPN :

Premièrement, télécharger le fichier d’installation à partir de http://openvpn.se/download.html (Le fichier est nommé openvpn-2.0.9-gui-1.0.3-install.exe ) sur le serveur et le client. C’est une version GUI (« Graphic User Interface ») d’OpenVPN. Il utilise une interface graphique minimale qui est accessible à partir de la barre d’état système. Il faut maintenant installer le fichier sur l’ordinateur qui jouera le rôle de serveur OpenVPN. L’ordinateur choisi devra être allumé et exécuté OpenVPN à chaque fois que vous désirez accéder au réseau privé virtuel.

Si une version antérieure de OpenVPN est installée, vous devez arrêter les taches en cours avant d’exécuter le fichier d’installation. Ensuite, exécutez le programme d’installation. Lors de l’installation, vous pouvez choisir si le programme GUI est lancé automatiquement au démarrage du système. (La valeur par défaut est oui.) Je recommande de laisser toutes les options sur la valeur par défaut, et, par conséquent, OpenVPN s’installera dans le répertoire par défaut :

C:Program FilesOpenVPN

Rappelez-vous, à la fin de l’installation vous aurez besoin de redémarrer la machine.

Création des certificats:

Après redémarrage, vous aurez besoin de configurer les fichiers sur votre serveur OpenVPN en utilisant l’invite de commande et un éditeur de texte tel que Bloc-notes.

Cliquez sur Démarrer puis Exécuter et enfin tapez cmd pour ouvrir l’invite de commande.

Pour plus de clarté, les commandes à taper seront simplement précédées de « > » dans la suite.

Ensuite, entrez la commande suivante pour aller dans le répertoire correct :

> cd C:Program FilesOpenVPNeasy-rsa

Ensuite, tapez cette commande pour exécuter le fichier batch qui mettra en place les fichiers de configuration :

> init-config

Maintenant, ouvrez le fichier vars.bat dans un éditeur de texte. Il doit être situé dans C:Program FilesOpenVPNeasy-rsa. Ensuite, vous devez modifier les valeurs des variables suivantes situées à la fin du fichier.

Voilà les champs qui nous intéressent :

set KEY_SIZE=1024

La documentation officielle propose aux paranoïaques d’augmenter le chiffrement de la clé à 2048. En contrepartie, les performances seront moins bonnes. J’ai laissé cette option à 1024.

Les champs qui suivent vous permettront simplement de gagner du temps par la suite dans la création de vos certificats. Ne laissez aucun champ vide. Pour les non anglophones, je traduis rapidement :

COUNTRY : sigle du pays
PROVINCE : vous pouvez mettre les deux premières lettres de votre région
CITY : la ville ORG : Le nom de l’organisation ou entreprise
EMAIL : votre email ou celui de l’entreprise

Ne laissez aucun de ces paramètres vides.

Exemple de fichier :

Mise en place OpenVpn

Retour à l’invite de commande, tapez les commandes suivantes dans l’ordre:

Pour initialiser les variables que l’on vient de définir :

> Vars

Nettoie toutes les anciennes clés générées dans /keys et prépare une nouvelle base de certificats :

> Clean-all

Génération du certificat root et de sa clé pour le réseau :

Pour générer votre certificat d’autorité :

> build-ca

Lorsque vous exécutez build-ca, vous serez invité à répondre à plusieurs questions. Vous pouvez simplement cliquer sur Entrée pour accepter les valeurs par défaut du fichier vars.bat que vous avez personnalisé précédemment. Le seul paramètre qui doit être explicitement inscrit est le « commun name » qui sera le nom de votre réseau virtuel. Cela peut être le nom de l’entreprise par exemple, précédée de « OpenVPN ».

Voyons en détail ce qu’il se passe :

C:Program FilesOpenVPNeasy-rsa>build-ca.bat
Loading ‘screen’ into random state – done
Generating a 1024 bit RSA private key
…….++++++
…………………………………………….++++++
writing new private key to ‘keysca.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [FR]:
State or Province Name (full name) [ML]:
Locality Name (eg, city) [ANGERS]:
Organization Name (eg, company) [AFPA]:
Organizational Unit Name (eg, section) [ ]:
Common Name (eg, your name or your server’s hostname) [ ]:OpenVPN-AFPA.net
Email Address [myemail@host.domain]:

C:Program FilesOpenVPNeasy-rsa>

Résultat de tout cela, la création de deux importants fichiers dans /easy-rsa/keys :

ca.crt : Le certificat d’authentification root. Il peut être diffusé sans sécurité particulière.

Vous devrez d’ailleurs communiquer ce certificat à vos clients.

ca.key : La clé de ce certificat, sans doute le fichier le plus important. Il permet de signer les certificats des clients. À garder dans un coffre-fort. Il n’est pas nécessaire au fonctionnement du serveur. Il ne doit donc évidemment pas circuler sur une liaison non sécurisée.

Génération du certificat et de la clé pour le serveur :

Ensuite, entrez la commande suivante pour générer un certificat et une clé privée pour le serveur :

> build-key-server server

À la différence du certificat root, assurez-vous de bien entrer « server » pour le « Commun Name ». Le reste des paramètres peuvent être laissés sur les valeurs par défaut. Vous pouvez laisser le champ mot de passe et compagny name vide si vous le souhaitez. Il faut répondre « y » aux deux questions posées pour signer le certificat et l’ajouter à la base.

Nous avons trois nouveaux fichiers :

server.crt : Le certificat du serveur.
server.key : Sa clé, confidentielle.
server.csr : Une demande de signature de certificat, inutile puis que l’on vient de le signer.

Génération du certificat et de la clé pour les clients :

Préambule :

Notez bien que le « common name » doit être unique pour chaque client. Vous entrerez donc pour chaque couple clé / certificat généré ici successivement « client1 », « client2 », « client3 ».

Il existe une directive permettant à plusieurs clients de partager un même certificat mais c’est une pratique vivement déconseillée. Actuellement si un client tente de se connecter avec un certificat déjà en cours d’utilisation, la première connexion est perdue.

Génération locale des clés :

Nous sommes toujours dans C:Program FilesOpenVPNeasy-rsa

Maintenant, entrez les commandes suivantes une à une :

> build-key client1

> build-key client2

> build-key client3

et ainsi de suite. . .

Vous allez maintenant être invité à entrer des données, comme lorsque vous avez construit la clé du serveur. Assurez-vous que si vous avez tapé la commande build-key client1 alors vous devez entrer client1 pour le « Commun Name ». Ces données doivent correspondre.

Exécutez les commandes ci-dessus pour autant de clients que vous aimeriez avoir sur votre VPN. Je vous suggère de créer plus de clé que vous en aurez besoin maintenant, car cela vous permettra d’éviter les tracas d’avoir à en créer ultérieurement. Toujours utiliser un « Commun Name » unique pour chaque client.

Si vous souhaitez protéger vos clés client, utilisez build-key-pass pour la construction des clés avec mot de passe.

Il serait bon de faire un petit résumé avec tous ces fichiers :

Nom Nécessaire à Description Secret
ca.crt serveur + Tous les clients Certificat Root CA NON
ca.key La machine qui a signé la clé uniquement Clé Root CA OUI
dh{n}.pem serveur uniquement Paramètres Diffie Hellman NON
server.crt serveur uniquement Serveur Certificat NON
server.key serveur uniquement Clé Serveur OUI
client1.crt client1 uniquement Certificat Client1 NON
client1.key client1 uniquement Clé Client1 OUI
client2.crt client2 uniquement Certificat Client2 NON
client2.key client2 uniquement Clé Client2 OUI
client3.crt client3 uniquement Certificat Client3 NON
client3.key client3 uniquement Clé Client3 OUI

La dernière étape de ce processus est de générer les paramètres Diffie-Hellman pour le serveur OpenVPN.

NOTE :

Vous avez seulement besoin de faire le processus des certificats mentionnés ci-dessus uniquement sur le serveur.

Génération des paramètres Diffie Hellman pour le serveur :

Entrez cette commande pour démarrer le processus:

> build-dh

Cette opération consiste à la génération d’un grand nombre premier. Cette opération dure plusieurs dizaines de secondes à plusieurs minutes selon votre configuration.

Le fichier généré s’appelle « dh1024.pem » et doit uniquement être copié dans le config du serveur. Ce fichier n’est pas confidentiel.

On pourrait s’en arrêter là, mais on va ajouter une dernière clé :

> openvpn –genkey –secret ta.key

Cette clé va permettre d’ajouter une couche de sécurité supplémentaire avec une authentification TLS. Cela va créer un pare-feu HMAC et aidera à contrer les attaques de type DoS et le flood de port UDP.

Cette clé est à copier dans le répertoire config de chaque machine et sa prise en compte nécessitera une modification dans le fichier de configuration. Ce fichier est partagé entre les machines et est secret. Vous devriez donc utiliser une connexion sécurisée préexistante pour le transmettre aux clients.

On résume à nouveau :

Dans le répertoire config du serveur, vous avez copié : « ca.crt », « server.crt », « server.key », « dh1024.pem » et « ta.key ».

Dans le répertoire config d’un client, on trouve : « ca.crt », « client1.crt » , « client1.key », « ta.key » .

Configuration du routeur :

Exemple de réseau :

Les fichiers de configuration et les paramètres sont configurés pour le scénario de réseau suivant.

L’adresse IP local du routeur est 192.168.1.1 et son masque de sous réseau est 255.255.255.0

Le serveur OpenVPN est relié au routeur et est configuré en adresse IP statique en 192.168.1.150 avec pour masque de sous-réseau 255.255.255.0 et a pour passerelle par défaut 192.168.1.1

Le routeur est configuré en NAT pour rediriger le port 1194 vers l’adresse IP 192.168.1.150 du serveur. Pour se faire, il faut aller dans la section NAT du routeur. Entrez 1194 pour le port, UDP pour le protocole et 192.168.1.150 pour l’adresse IP de votre serveur OpenVPN. Assurez-vous de bien l’avoir activée et enregistrée.

NOTE : 1194 est le port utilisé par défaut pour OpenVPN. Il est recommandé, pour une meilleure sécurité, de changer le numéro de port 1194 par un autre numéro de port. Assurez-vous que le routeur et tous les fichiers de configuration soient paramétrés sur le même numéro.

Création des fichiers de configuration :

Maintenant il est temps de créer des fichiers de configuration pour le serveur et vos clients.

Le serveur :

Copiez le fichier « server.ovpn » qui se trouve dans /sample-config vers /config.

Éditer-le, voici quelques paramètres essentiels :

port 1194

Le port utilisé par OpenVPN. Vous devez rediriger le port si vous êtes derrière un routeur. Vous pouvez créer plusieurs VPN en utilisant des ports différents.

client-to-client

Il faut « dé-commenter » ce paramètre (enlever le point-virgule) afin que les clients puissent communiquer entre eux, sinon ils ne pourront communiquer qu’avec le serveur.

tls-auth ta.key 0 # This file is secret

Dé-commentez cette ligne si vous utilisez un fichier d’authentification TLS « ta.key » sur les machines.

Le client :

Copiez le fichier « client.ovpn » qui se trouve dans /sample-config vers /config.

Editer-le, voici quelques paramètres essentiels :

remote xx.xx.xx.xx 1194

Spécifiez ici l’adresse IP WAN du routeur et le port sur lequel joindre le serveur OpenVPN. Vous pouvez spécifier plusieurs adresses de serveur pour répartir la charge automatiquement et proposer une redondance.

cert client1.crt

key client1.key

Pensez à changer ces paramètres en fonctions des fichiers qui sont présents dans le répertoire /config de la machine.

ns-cert-type server

Dé-commentez cette ligne pour ajouter une vérification du certificat du serveur. Le serveur est pré-configuré correctement avec les fichiers par défaut proposés dans /easy-rsa. Cette protection permet d’éviter une attaque du type « homme du milieu ».

tls-auth ta.key 1

Dé-commentez cette ligne si vous utilisez un fichier d’authentification TLS « ta.key » sur les machines.

Connexion :

Si tout s’est bien passé, vous devriez être capable de démarrer et de vous connectez sur le serveur grâce à OpenVPN.

Sur le serveur :

Allez dans la barre d’état système sur OpenVPN GUI puis cliquez sur Connect. Le serveur devrait maintenant se connecter et afficher une adresse IP virtuel.

Mise en place OpenVpn 2

Sur les clients :

Une fois le serveur connecté, vous devriez être en mesure de connecter les clients au VPN. Si l’icône s’allume en vert, la configuration est correcte et est terminée

Mise en place OpenVpn 3

Créer un VPN avec une adresse IP dynamique

Alors que les clients peuvent facilement accéder au serveur en ayant une adresse IP dynamique, ça devient plus intéressant quand le serveur lui-même a une adresse IP publique dynamique. Bien qu’OpenVPN fonctionne très bien avec ce genre de schéma, il faut quand même configurer certaines choses.

La première étape est d’obtenir un DNS dynamique qui peut être configuré pour suivre le serveur chaque fois que l’adresse IP change. Il y a beaucoup de services de DNS dynamique disponibles tel que DynDNS.

Il faudra toutefois s’assurer de la mise à jour de l’adresse IP correspondant au nom d’hôte choisi afin de pouvoir retrouver facilement le serveur VPN.

Version rapide du Tutorial OpenVPN :

Sur le serveur :

Téléchargez le fichier OpenVPN GUI : http://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exe

Lancez l’installation en gardant les options par défaut et acceptez l’installation du périphérique.

Lancez une console (Démarrer / Exécuter / cmd.exe) :

> cd C:Program FilesOpenVPNeasy-rsa

> init-config

Modifiez le fichiez vars.bat (avec le bloc-notes par exemple) :
C:Program FilesOpenVPNeasy-rsavars.bat

Ce qu’il y a à modifier (aucun champ ne doit être laissé vide) :
set KEY_COUNTRY=FR
set KEY_PROVINCE=ML set KEY_CITY=ANGERS
set KEY_ORG=organisme
set KEY_EMAIL=example@organisme.fr

Copiez le dans :

C:Program FilesOpenVPNeasy-rsa (en écrasant celui existant).

> vars

> clean-all

Pour la commande suivante, mettez « OpenVPN-AFPA » (par exemple) pour le « Common Name ».

> build-ca

Pour la commande suivante, mettez « server » pour le « Common Name », contentez-vous de valider en tapant entrée à chaque fois et répondez deux fois « y » aux questions à la fin.

> build-key-server server

> build-dh

> openvpn –genkey –secret ta.key

Génération des certificats et clés pour les clients. Chaque nom doit être unique et mettez le « Common Name » correspondant à chaque nouveau certificat « client1 », « client2 », etc. Contentez-vous de valider en tapant entrée à chaque fois et répondez deux fois « y » aux questions à la fin.

> build-key client1

> build-key client2

> build-key client3

Ouvrez une fenêtre explorateur et allez dans

C:Program FilesOpenVPNeasy-rsakeys

Sur le serveur, copiez « ca.crt », « server.crt », « server.key », « dh1024.pem » et « ta.key » dans C:Program FilesOpenVPNconfig

Sur chaque client, vous devez copier : « ca.crt », « clientx.crt », « clientx.key », « ta.key » dans C:Program FilesOpenVPNconfig

Le fichier « ca.key » devrait être gardé hors ligne.

Le répertoire C:Program FilesOpenVPNeasy-rsa peut être effacé.

Modifiez le fichier server.ovpn : C:Program FilesOpenVPNsample-configserver.ovpn et copiez le dans C:Program FilesOpenVPNconfig sur le serveur.

Changez le port et dé-commentez client-to-client si nécessaire

Sur le client :

Editez le fichier client.ovpn : C:Program FilesOpenVPNsample-configclient.ovpn Dé-commentez ns-cert-type server tls-auth ta.key 1 et copiez le dans C:Program FilesOpenVPNconfig

Editez le fichier client.ovpn : C:Program FilesOpenVPNsample-configclient.ovpn

Dé-commentez :

ns-cert-type server

tls-auth ta.key 1

Et copiez le dans C:Program FilesOpenVPNconfig

Pour chaque client, vous devez changer la ligne :

remote xx.xx.xx.xx 1194 en mettant l’adresse du serveur et le port.

Ainsi que :

cert client1.crt

key client1.key avec le nom correct correspondant au client.

La configuration est terminée.

Dépannage :

Impossible de charger les paramètres DH :

Si vous obtenez ce qui suit : Cannot load DH parameters from dh1024.pem vous devrez vérifier vos certificats. Les avez-vous collés correctement?

Connection reset by peer :

(WSAECONNRESET) (code = 10054) Si vous recevez une erreur lorsque vous essayez de vous connecter à votre serveur VPN, vérifier les points suivants :

* Assurez-vous que le protocole utilisé est le même sur le serveur et le client, c’est à dire UDP / TCP

* Vérifiez que le numéro de port soit le même sur le client et le serveur; le port par défaut est UDP 1194

* Vérifiez que le port soit ouvert sur le serveur à l’aide de nmap ou un autre utilitaire

Paquets entrants Rejetés :

Si les paquets entrants sont rejetés lorsque vous tentez de vous connecter avec le client VPN (OpenVPN), assurez-vous que la redirection de port 1194 (si configuré pour utiliser ce port) sur le serveur/ routeur est approprié (généralement 192.168.1.1).

Exemple de paquets TCP/UDP rejetés :

* [Date] TCP/UDP: Incoming packet rejected from 192.168.1.1:1194[2], expected peer address: w.x.y.z:1194 (allow this incoming source address/port by removing –remote or adding –float)

Lexique :

VPN :

Quelques mots pour définir le Virtual Private Network (VPN) ! Il s’agit d’une technologie qui se définie comme un Réseau Privé Virtuel. Une connexion ou un serveur VPN permet à un ordinateur distant d’avoir, via Internet, un accès direct et totalement sécurisé à un autre ordinateur ou à un réseau local. Le VPN est synonyme de sécurité. En effet, il permet des connexions plus sécurisées et protège votre identité.

Diffie Hellman :

Le protocole Diffie-Hellman est un protocole de cryptographie utilisé dans les échanges de clés.

Merci à Julien pour cet excellent tutoriel.

7 commentaires

  1. bonjour, je suis en BTS SIO SISR et votre blog ma bien servis a monté un VPN sur mes VM , bien expliqué mais a mon avis vous oubliez quelque chose, par rapport au serveur vous n’expliquez pas de bridge afin de pouvoir faire communiquer le client avec le serveur, pour cela il faut sur le serveur allé dans le centre réseau et partage puis sélectionné la carte réseau qui nous permet d’avoir internet et la carte réseau que OpenVPN a installer puis clique droit et créer un pont.
    voila je vous remercie encore 🙂

  2. bonjour
    je viens de faire l’installation j’ai bien suivi la démarche a la lettre tout l’air bien fonctionné mon serveur OPenvpn sur windows 2003 est connecté mon client aussi sous wondows XP est connecté mais j’arrive pas a pinger mon réseau local c’est a dire les serveur 2003 pourtant j’ai connecxion internet sur l’xp aussi
    merci de m’expliquer svp

  3. Bonjour les amis…. j’ai suivi ton tuto a la lettre mais j’ais un souci avec le serveur… voici ce qu’il affiche quand je lui de demande de demarrer sur le fichier de confi openvpn.ovpn

    Tue Feb 10 03:14:37 2015 OpenVPN 2.3.4 i686-w64-mingw32 [SSL (OpenSSL)] [LZO] [P
    KCS11] [IPv6] built on Oct 21 2014

    pouvez vous m’aider svp

  4. Petite correction dans ce très bon tuto.
    Dans le server.opvn, par defaut le fichier Diffie Hellman qu’il recherche est le dh2048.pem
    Or nous avons vu que lors de la génération le fichier généré (et recommandé de garder dans ce tuto) est dh1024.pem.

    Par conséquent, ca va jamais marché tel quel.
    Il faut donc penser à chagner dans le server.opvn par

    # Diffie hellman parameters.
    # Generate your own with:
    # openssl dhparam -out dh2048.pem 2048
    dh dh1024.pem

    Sinon merci pour ce tuto bien utile.

  5. bonjour j’ai réussit a appliquer un vpn windows windows avec openvpn cependant il m’est impossible de connecter plusieurs client l’ip est systematiquement la même sur les clients et du coup ca bug comment faire ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *