Вы находитесь на странице: 1из 14

OpenVPN -Point to Point

Aujourd’hui, il est primordial de sécuriser son accès à un réseau distant, car les risques
sont trop grands de publier par exemple une session RDP distante sans restriction. Dans
le cadre d’un déplacement ou autres, il peut être pratique d’avoir accès à ses données.

On va donc voir ici comment sécuriser un accès distant. On va donc mettre en place un VPN
de type Point to Point. Vous l’aurez compris, ici, la communication va se faire entre le serveur
et le client. La sécurité sera assurée par une clé privée. Cette configuration sera présentée sous
Windows, même si elle est facilement reproductible sous Linux.

La configuration n’est cependant pas si simple à mettre en place. Un VPN Point to Point
(PTP) permet de créer un tunnel en quelques minutes, mais elle présente les inconvénients de
devoir partager une clé entre 2 équipements, de ne pas bénéficier d’authentification des
passerelles et que du coup, nous n’avons qu’un client et un serveur dans la configuration.

Afin d’assurer une sécurité, il est très important de partager la clé par un moyen sécurisé, et de
la changer en cas de perte, car le VPN serait corrompu.

La clé est un simple fichier texte non crypté. Il est donc important, une fois sa génération faite
sur serveur, d’utiliser un canal sécurisé comme un autre VPN, ou un moyen de transport
physique comme une clé USB. La seule sécurité est la clé en elle-même.

Pour information, la configuration ne doit pas être maintenue éternellement. Elle doit se faire
dans le cadre d’un besoin de mise en place rapide et temporaire ou pour tester. Quand on met
une architecture VPN basée sur OpenVPN, on commence par mettre en place une simple
configuration. Aussi on peut s’assurer que le VPN fonctionne, que les équipements réseaux
sont bien paramétrés. Par la suite, on modifie la configuration pour ajouter de la sécurité,
comme une infrastructure PKI qui utilise des certificats.

OpenVPN se télécharge ici: OpenVPN

Le package est le même pour le serveur que pour le client. On lance l’installation, et il n’y a
qu’à cliquer sur Suivant. Uniquement deux options vont importer.

On doit impérativement cocher l’option OpenSSL Utilities, car cela va nous permettre de
générer une clé.

1
On doit aussi cocher, ce que je n’ai pas fait, OpenVPN RSA en dessous. Cela va nous
permettre d’installer des outils pour générer des certificats pour une infrastructure PKI. Je
vous conseille de le faire tout le temps, car la configuration de ce tutoriel n’est pas une
configuration à mettre en place tout le temps. Il est très important dans le cadre du VPN
d’utiliser des méthodes sécurisées.

Ici, on accepte l’installation de la carte réseau virtuelle, qui va nous servir à gérer le VPN.

Une fois le package OpenVPN installé sur serveur, on va le configurer. On lance une invite de
commande sur le serveur, on se place dans le répertoire de configuration de OpenVPN (situé
normalement sur C:\Program Files\OpenVPN\config). On va donc lancer la commande:

openvpn --genkey --secret Nom_Clé.key

On personnalisera le nom de la clé pour la retrouver facilement par la suite.

2
On va déplacer notre clé sous le même répertoire, chez le client. Pour cela, on utilise une clé
UBS ou un autre VPN existant.

La seule sécurité de connexion ici est basé sur l’échange. Dès qu’on soupçonne notre clé
comme falsifiée, il faut impérativement la changer.

On va maintenant paramétrer le serveur et le client pour monter le VPN.

Sur le serveur, on se rend dans le répertoire de configuration où nous allons créer un fichier de
configuration.

On crée un fichier texte et on met dedans:

dev tun
ifconfig 10.8.0.1 10.8.02
secret OVPNTony.key

Ici:
– dev tun est le mode du tunnel VPN où on définit le type de pilote. tun signifie le mode IP
– ifconfig 10.8.0.1 10.8.0.2 est un adressage IP statique où la première adresse IP est celle du
serveur, et la seconde correspond au client
– secret OVPNTony.key est la clé statique qu’on a généré

On modifie ensuite le fichier texte pour changer l’extension de .txt à .ovpn

On lance OpenVPN GUI (l’interface graphique). Dans le systray, on fait un clic droit sur
l’icône d’OpenVPN (qui ressemble à un écran de PC), et on choisit Connecter.

L’icône du systray devient jaune, ce qui veut dire que le serveur est en ligne, mais en attente
de connexion.
3
Du côté du client, on fait la même chose, on va créer un fichier de configuration .ovpn

On met en configuration:

remote Nom_Serveur
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret OVPNTony.key

Ici:
– remote Nom_Serveur est l’indication de notre hôte distant. Selon nos paramètres NAT, on
peut utiliser simplement une adresse IP publique du site distant
– ifconfig 10.8.0.2 10.8.0.1 est l’inverse de la configuration du serveur, ce qui est logique
puisqu’on indique d’abord l’adresse IP du client, puis celle du serveur cible.

Reste donc à paramétrer les pare-feux pour laisser passer le flux réseau d’OpenVPN.

On laisse d’abord passer les connexions sur le port 1994 qui est le port UDP. Ce port est
utilisé par défaut dans OpenVPN. Ensuite, on autorise les pare-feux des machines à laisser
passer les communications de la carte réseau virtuelle installé par OpenVPN.

Généralement, les problèmes de mise en place d’OpenVPN correspondent à des problèmes


réseaux, et souvent parce que les autorisations des flux réseaux sont mal maîtrisée. Faites
surtout attention de bien configurer vos pare-feux…

Pour se connecter, on lance OpenVPN GUI sur le client.

Ensuite, on fait pareil sur le systray, c’est-à-dire un clic droit sur l’icône OpenVPN puis
connecter.

Au bout d’un moment, si tout est bon, la connexion s’établit. Elle peut d’ailleurs mettre plus
d’une minute à s’établir.

4
Pour vérifier, on peut pinger les machines.

Et voilà, on peut utiliser le VPN pour se connecter à distance !

Si vous souhaitez quelques configurations en plus histoire de faire les choses proprement:
– comp-lzo permet d’utiliser la compression LZO pour que les trames soient compressés dans
le VPN.
– keepalive 10 60 & ping-timer-rem permet de tester et relancer la connexion de façon
automatique
– persist-tun & persist-key permet de ne pas relancer le périphérique Tun ni de relire la clé
sur perte de connexion.

5
OpenVPN – PKI
Précédemment, j’expliquais comment monter un VPN PTP facilement, de manière assez
simple. Ici, nous allons voir comment en place une véritable configuration VPN,
j’entends par là un VPN sécurisée et utilisable. Pour cela, on va mettre en place une
infrastructure à clés publiques. Après avoir mis en place une configuration à clé privée,
la suite est donc d’apporter plus de sécurité et de souplesse. L’infrastructure à clé
publique, dit PKI, va dans ce sens.

On va mettre en place une infrastructure PKI, en commençant par le serveur, où nous allons
lancer un batch.

On ouvre l’invite de commande en tant qu’administrateur, et on se place dans le répertoire


esay-rsa d’OpenVPN pour lancer le batch suivant:

init-config

Il va ainsi créer des fichiers vars.bat et openssl.cnf.

On va éditer le fichier C:\Program Files\OpenVPN\easy-rsa\vars.bat afin de remplir les


informations qui vont bien.

On renseigne donc ces variables:

set KEY_COUNTRY=FR
set KEY_PROVINCE=FR
set KEY_CITY=MaVille
set KEY_ORG=MaSociété
set KEY_EMAIL=mail@mail

Ensuite, on ouvre une invite de commande en tant qu’administrateur, on se déplace dans le


répertoire easy-ra, où nous allons effectuer plusieurs actions.

On va d’abord initialiser les variables:

vars

Ensuite, on nettoie le fichier des clés et on supprimer toutes les anciennes clés (ce qui n’est
pas nécessaire s’il s’agit de la première installation ou si on souhaite conserver les anciennes
clés):

clean-all.bat

Maintenant, on va créer l’autorité de certification, appelé CA:

build-ca.bat

La commande va créer la clé privée du CA et son certificat. Ce certificat va contenir la clé


publique. C’est le module OpenSSL qui est appelé à travers ce batch. Lors de la création, les
variables renseignées vont nous être proposées. On accepte, et il n’y aura que le Common
Name qui devra être renseigné (où on définit le nom du CA).
6
Maintenant, on va créer la clé privée et le certificat du serveur OpenVPN:

build-key-server.bat nom_serveur

Pour chaque client, on relance la génération de la clé et de son certificat, en changeant


évidemment le nom.

On va ensuite mettre un place un dispositif cryptographique nommé Diffie Hellman. C’est un


échange de clés utilisé par 2 équipements pour établir une clé partagée connue d’eux seuls.
Pour cela, la configuration à mettre en place doit se faire uniquement sur le serveur

build-dh.bat

Nous avons donc un certain nombre de fichiers dans le répertoire config. Pour mettre en place
le VPN, nous allons devoir copier les fichiers nécessaires à chaque équipement.

Pour le serveur, il faut le ca.crt, le ca.key, le dh1024.pem, le server.crt et le server.key.

Pour les clients, il faut le ca.cert, le ca.key et le client.crt, ainsi que le client.key

On doit avoir à l’esprit que les fichiers key doivent être gardés précieusement. Il faut donc les
transférer par des moyens sécurisés.

Nous allons donc configurer le serveur et les clients pour rendre opérationnelle notre VPN.

La bonne pratique, c’est d’aller dans C:\Program Files\OpenVPN\sample-config où on aura


des fichiers de configuration standards, un pour chaque type de communiquant (client et
serveur). On le prend et on le copie dans le répertoire config. On le renomme au besoin.

On va ensuite modifier ces fichiers.

Il nous faut renseigner les localisations des fichiers certificats et clés.

Pour cela, on a 2 solutions:


– Soit on copie les fichiers directement dans le répertoire config, et on aura plus qu’à
renseigner les noms corrects.
– Soit on laisse les fichiers dans le répertoire RSA, et dans ce cas, on indique la localisation
des fichiers avec le format suivant:

ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"

Dans le fichier de configuration, on modifie la ligne qui concerne le serveur auquel on


s’adresse:

remote IPserveur_ou_nomdomaine 1194

Ensuite, il faut spécifier sur les clients Windows cette option:

#Methode de gestion des routes


route-method exe

7
Elle va indiquer au client d’utiliser route.exe pour paramétrer les routes, plutôt que l’API
Windows IP Helper, qui ne fonctionne pas tellement…

Voilà comment mettre en place un VPN sécurisé et fonctionnel.

8
OpenVPN – Roadwarrior
Troisième article sur OpenVPN, cette fois consacré au rodwarrior. Précédemment, on a
vu comment mettre en place un VPN simplement, avec une infrastructure PKI pour
sécuriser notre tunnel.

Roadwarrior signifie en informatique que l’on dispose d’un client mobile, qui a besoin d’un
accès Internet et d’un accès à des ressources internes. Roadwarrior, c’est presque un terme
indissociable du VPN, car c’est le meilleur moyen pour un client nomade d’accéder à une
donnée interne, à des logiciels ou autres ressources. Cela veut dire concrètement que l’accès
se fera par des moyens divers d’accès Internet et au besoin d’une certaine confidentialité.
Mettre en place un accès en roadwarrior, cela veut dire simplement qu’on adapte un VPN à
ces problématiques.

Pour répondre à ces besoins, il va falloir adapter la configuration. En supposant qu’on dispose
d’un réseau expert, où des ports sont verrouillés par un firewall, comme par exemple le port
1194 (port par défaut de OpenVPN). L’astuce consistera donc à modifier la configuration du
VPN pour lui faire utiliser d’autres ports, comme le 443 (HTTPS), 80 (HTTP), ou encore 53 (
DNS). Ces ports sont forcément ouverts et constituent une bonne redirection pour le VPN.
Pour l’exemple, on prendra le port HTTPS, à savoir le 443.

Reste alors une autre problématique: TCP ou UDP ?

Je ne vais pas vous expliquer concrètement qu’est-ce que c’est que ces protocoles. Pour
information, UDP n’inclue aucun contrôle de communication. Le flux de données est transmis
sans se soucier de la réception. UDP est souvent assimilé aux connexions en LAN. TCP, lui,
intègre un accusé de réception et de contrôle CRC. Avec lui, une machine sait si l’intégralité
des données envoyées sont reçus. Au besoin, les données peuvent être renvoyées.

OpenVPN fonctionne sur le port 1194 par défaut, et aussi via le protocole UDP. Ce protocole
permet une vitesse de transmission plus élevée, du fait du contrôle d’arrivée qui n’est pas
inclus. Cependant, en cas de mauvaise connexion Internet, cela peut entraîner une plus grande
réception de paquets, et donc une réduction radicale de la vitesse de connexion.
Heureusement, OpenVPN fonctionne aussi avec TCP. L’inconvénient, c’est que TCP inclut sa
capacité à inclure des données pour assurer le contrôle d’arrivée. Si notre connexion est de
bonne qualité, TCP sera moins performant, car moins de données à transmettre. Egalement,
les paquets peuvent être mal interprété, et donc TCP va consommer plus de ressources en
termes de calcul.

9
Dans notre cas, en roadwarrior, le but est surtout de mettre en place une connexion exploitable
à coup sur n’importe où. Et comme HTTPS utilise TCP, on utilisera donc TCP. De plus, c’est
indétectable pour un pare-feu classique, et c’est donc exactement ce qu’il nous faut.

La configuration est très simple. Il suffit juste de remplacer dans le fichier de configuration
les termes suivants:

 Le port 1194 par 443


 La ligne << proto tcp >> par << proto udp >> côté serveur
 La ligne << proto udp >> par << proto tcp >> côté client
 Le port 1194 par 443 après l’IP du serveur chez le client.

Sur le pare-feu, il va falloir aussi rediriger les connexions entrantes sur le port 443 vers
l’adresse IP du serveur. Et donc, désormais, notre serveur est accessible en VPN n’importe où
!

10
OpenVPN – Démarrage automatique
Dans ce dernier article consacré à OpenVPN, nous allons voir comment on peut lancer,
côté serveur et/ou client, une connexion VPN automatique. Côté serveur, il est impératif
que OpenVPN se lance automatiquement. Lors d’un redémarrage suite à un plantage ou
une mise à jour, il est nécessaire que le service se lance automatiquement pour pouvoir
remonter le tunnel.

Il peut être tout aussi intéressant de lancer OpenVPN automatiquement côté client à
l’ouverture d’une session utilisateur pour monter un tunnel VPN sans avoir à agir
manuellement, ce qui peut être pratique dans certains cas de figure.

Nous allons donc créer une tâche planifiée.

Je vais paramétrer le lancement de la tâche au démarrage du serveur. C’est comme cela qu’on
veut que OpenVPN réagisse côté serveur.

11
Côté client, on aurait aussi pu choisir un lancement de tâche planifiée à l’ouverture d’une
session utilisateur, à une heure précise, etc…

12
L’argument appelle au lancement le fichier de configuration .ovpn qui est normalement
stocké dans le répertoire de configuration d’OpenVPN.

Ce fichier de configuration est nécessaire au lancement du serveur et du client.

Dans l’onglet Conditions de la tâche planifiée, on peut choisir de lancer la tâche uniquement
si un réseau au choix est disponible. Il n’est cependant pas nécessaire de monter le tunnel
VPN si le réseau nécessaire n’est pas disponible.

A l’issue de cette configuration, OpenVPN va se lancer tout seul, et il va monter le tunnel


dédié. Cependant, l’authentification ne sera pas automatique. Si on veut le faire, on peut créer
un fichier pass.txt dans le répertoire de configuration de OpenVPN. On met simplement notre
login en première ligne, et le mot de passe en seconde ligne. Il faut bien sur que le serveur
OpenVPN attende un mot de passe.

13
14

Вам также может понравиться