OpenVPN : Point to Point
Incontestablement, à l’heure actuelle, on doit sécuriser les accès à un réseau distant. En effet, les risques sont trop grands de publier par exemple le bureau à distance directement, sans aucune restriction. Dans le cadre de maintenance pour un client, il est très pratique d’avoir accès à son serveur à distance par exemple. Nous allons donc voir comment sécuriser cet accès.Pour sécuriser cet accès, nous allons mettre en place un VPN de type Point to Point. Ici, donc, uniquement deux communicants : Le serveur et le client. La sécurité sera assurée uniquement par une clé privée. Cette configuration sera présentée sur client/serveur sous Windows. Mais elle est facilement transposable aux plateformes Linux.
VPN PTP Clé privée
Inconvénients
Cette configuration est de loin la plus simple à mettre en place. Elle permet de créer un tunnel point to point en quelques minutes. Cependant, elle présente des inconvénients certains :
- La clé doit être partagée sur les deux équipements.
- Ne pas bénéficier d’authentification des passerelles.
- Seulement un client et un serveur dans cette configuration.
Recommandations
Afin d’assurer un minimum de sécurité, il est important de respecter certaines règles :
- Partager la clé sur chaque équipement par un moyen sécurisé.
- Lors de la perte de la clé, immédiatement la changer. Le VPN est corrompu.
En effet, la clé est un simple fichier texte, non crypté. Il est donc important, une fois la génération de cette clé faite sur le serveur, d’utiliser un canal sécurisé tel qu’un VPN préexistant, ou un moyen de transport physique (clé usb) pour partager cette clé.
La seule sécurité étant cette clé, si par exemple l’ordinateur client sur lequel la clé est stockée est volé ou perdu, il faut alors immédiatement changer la clé sur le serveur afin d’éviter que quelqu’un ne s’introduise sur votre réseau en utilisant l’accès VPN.
Je rappel que cette configuration ne doit pas être maintenue perpétuellement. Je recommande d’utiliser cette configuration pour un besoin de mise en place très rapide et temporaire, ou pour tests. Par exemple, quand je mets en place une architecture VPN basée sur OpenVPN, je commence par mettre en place cette simple configuration. Ainsi, on peut s’assurer que le VPN est fonctionnel, et que les équipements réseaux sont bien paramétrer. Ensuite, on modifiera la configuration pour ajouter de la sécurité, par exemple par une infrastructure à clés publiques (PKI) qui utilise des certificats.
Mise en place d’OpenVPN
Installation d’OpenVPN
Il vous faut télécharger le package d’installation d’OpenVPN ICI.
Le package est le même sur le serveur ou le client. Lancez l’installation. Il n’y a qu’à cliquer sur suivant. Seules deux options sont importantes :
OpenSSL Utilities
Cette option doit être cochée. Elle permet de générer des clés.
Vous devez aussi cocher (ce qui n’est pas le cas sur cette capture) OpenVPN RSA, juste en dessous. Cette option permet d’installer des outils permettant de générer des certificats pour une infrastructure PKI. Je vous conseille de le faire systématiquement, car j’insiste sur le fait qu’il ne faut pas laisser en production la configuration que nous allons mettre en place. C’est important d’utiliser cette méthode sécurité ensuite (qui fera l’objet d’un autre article d’ici peu, je mettrais le lien).
Carté réseau virtuelle
Il faut accepter l’installation de cette carte réseau. C’est une carte réseau virtuelle, qui sert à gérer la connexion VPN.
Clé statique
Génération de la clé
Une fois le package OpenVPN installé sur le serveur, il va falloir le configurer.
Lancez une invite de commande sur le serveur.
Déplacez vous dans le répertoire de configuration d’OpenVPN (C:\Program Files\OpenVPN\config)
Là, lancez cette commande :
openvpn --genkey --secret NomDeVotreCLE.key
Personnalisez le nom de la clé, afin de vous y retrouver lors de configurations complexes.
Copie de la clé
Maintenant, déplacez cette clé dans le même répertoire, sur le client.
Pour celà, utilisez un moyen de transport sécurisé (physiquement sur une clé), ou par un canal sécurisé existant (VPN).
La seule sécurité de connexion est basée sur cet échange de clé. Dès lors qu’on soupsonne une corruption de celle ci, si on pense qu’elle n’est plus confidentielle, alors il faut la changer! De toutes façons, je le redis, cette configuration ne peut en aucun cas être mis en production, car la sécurité n’est pas suffisante.
Configuration du VPN
Nous allons maintenant paramétrer le serveur et le client VPN afin qu’on puisse monter le tunnel à la demande.
Coté serveur
Rendez vous dans le répertoire de configuration. Nous allons créer le fichier de configuration.
Créez un fichier texte, puis mettez dedans :
dev tun ifconfig 10.8.0.1 10.8.0.2 secret OVPNTech2Tech.key
- dev tun : Mode du tunnel VPN. On définit ici le type de pilote. Gardons pour notre cas le mode tun (IP)
- ifconfig 10.8.0.1 10.8.0.2 : Adressage ip statique. On définit ici l’adresse 10.8.0.1 au serveur, et on lui indique que le client aura l’adresse 10.8.0.2
- secret OVPNTech2Tech.key : C’est la clé statique que j’ai choisi de générer.
Modifiez ensuite le fichier pour changer l’extension .txt en .ovpn
Lancez OpenVPN GUI (l’interface graphique). Dans le systray, faites un clic droit sur l’icône d’OpenVPN (un écran de PC). Puis choisissez « Connecter ».
L’icône du systray devient jaune. Le serveur est en ligne, en attente de connexion.
Côté client
Même chose, créez le fichier de configuration .ovpn
Personnellement, j’utilise la convention de nommage du fichier client « clientSOCIETE.ovpn ». Ceci, afin de m’y retrouver parmi les fichiers des clients chez lesquels j’accède au réseau par le VPN.
Mettez en configuration :
remote TestServer.tech2tech.fr dev tun ifconfig 10.8.0.2 10.8.0.1 secret OVPNTech2Tech.key
On a donc le même fichier avec deux différence :
- remote TestServer.tech2tech.fr : Là, vous indiquez l’adresse de votre hôte distant. Nottez aussi que selon vos paramètres NAT, vous pouvez utiliser simplement l’adresse IP publique du site distant.
- ifconfig 10.8.0.2 10.8.0.1 : C’est en fait l’inverse de tout à l’heure, et c’est logique! Vous indiquez d’abord l’adresse IP du client, puis celle du serveur qu’il va joindre.
Configuration firewall
Il reste à paramétrer le (ou les) firewall, afin de laisser passer le flux réseau d’OpenVPN.
Pour cela, deux choses à faire :
- Laisser passer les connexions sur le port 1194 (UDP), port qui est utilisé par défaut par OpenVPN.
- Autoriser sur les parefeu des machines les communications de la carte réseau virtuelle installée par OpenVPN.
Dans la majorité des cas, les problèmes de mise en place d’OpenVPN sont en fait un problème de réseau, et souvent un manque de maitrise des autorisations des flux réseaux. Par pitié, si vous maitrisez mal cette partie, ne la mettez pas en œuvre, ou demandez conseil. J’ai vu des sites sur lesquels le firewall est carrément en Pass-all configuration. Ok, ca fonctionne, mais on appel ca un putain de problème de sécurité!!!! (excusez l’emportement!)
Connexion
Afin de se connecter, il faut lancer OpenVPN GUI sur le client.
Ensuite, pareil, sur le systray, clic droit sur l’icône OpenVPN, puis connecter (si vous avez plusieurs fichiers clients, il vous les proposent).
Au bout d’un moment, si tout est ok (ca peut durer une minute ou deux parfois), la connexion s’établit (le tunnel VPN est monté entre les deux nœuds).
Afin de vérifier, vous pouvez pinger les machines (je vous rappel que là, vous aurez 10.8.0.2 pour le client par exemple).
Et voilà, vous pourrez utiliser le VPN pour vous connecter à distance!
Paramètres supplémentaires
Vous pouvez améliorer la connexion en ajoutant des paramètres à vos configs :
- comp-lzo : Permet d’utiliser la compression LZO. Les trames sont compressées dans le tunnel VPN.
- keepalive 10 60 & ping-timer-rem : Permet de tester et relancer la connexion automatiquement.
- persist-tun & persist-key : Ne pas relancer le périphérique Tun ni relire la clé sur perte de connexion.
J’espère que cet article vous permettra de faire vos premiers pas avec OpenVPN.
Rendez-vous sur le prochain article pour apprendre à sécuriser votre VPN.
Article suivant : Open VPN : PKI