OpenVPN

Fiche logiciel validé
  • Création ou MAJ importante : 26/03/12
  • Correction mineure : 02/03/14
Mots-clés

OpenVPN : connexion sécurisée de PC à distance

Description
Fonctionnalités générales

openVPN est utilisé pour permettre à des PC clients distants de se connecter à un réseau d'entreprise (laboratoire, université ...) de manière sécurisé. Basiquement le serveur openVPN alloue aux PC distants une adresse IP provenant du réseau d'entreprise et établi une liaison chiffrée basée sur SSL. openVPN établi donc un réseau virtuel sécurisé ("VPN") entre le PC client et le serveur.

openVPN est donc utile lorsqu'un utilisateur sur un réseau distant veut accéder à un serveur dans la zone interne du réseau de son entreprise, laboratoire ou université...

Prenons pour exemple, l’architecture réseau d'un laboratoire ou d'une université découpée en deux zones :
* une « zone semi-ouverte », accessible de l’Internet
* une « zone interne » hébergeant les serveurs internes

Ces deux premières zones sont séparées par un routeur assurant la sécurité entre elles. Une troisième zone, nommée « zone VPN », est créée pour les machines distantes. Elle regroupe une plage d’adresses qui sera utilisée par le serveur OpenVPN pour celles-ci.

Le processus général est le suivant :
1. L’utilisateur démarre le client openVPN et se connecte au serveur OpenVPN se trouvant dans la zone semi-ouverte via Internet.
2. A l’ouverture de la liaison, le serveur openVPN :
a. Affecte des adresses IP aux extrémités du tunnel entre le serveur et la machine cliente dans la zone VPN du réseau du laboratoire.
b. Envoie des commandes qui seront exécutées sur la machine cliente en particulier pour créer une interface réseau et modifier sa table de routage.
c. Une fois le tunnel établi, toutes les connexions entre le poste client et la zone interne du réseau du site passeront par le tunnel.

Les datagrammes provenant de la machine cliente à destination du réseau du site auront une adresse source contenue dans la plage d’adresses de la « zone VPN ».

Autres fonctionnalités

Le logiciel devient serveur ou client selon le paramétrage que l'on fait dans un fichier de configuration.

openVPN offre la possibilité de :

  • créer un tunnel utilisant les protocoles UDP ou TCP
  • configurer un ensemble de serveurs VPN en utilisant une ou plusieurs machines pouvant gérer des milliers de connexions provenant des clients VPN
  • utiliser toutes les fonctionnalités de chiffrement, d'authentification et de certification provenant de la bibliothèque OpenSSL ( cf fiche PLUME http://www.projet-plume.org/fr/fiche/openssl ) afin de protéger votre réseau privé à travers Internet
  • utiliser les algorithmes de chiffrement, la taille de la clé, ou HMAC digest (pour le contrôle d'intégrité des datagrammes), supportés par la bibliothèque OpenSSL
  • pour le chiffrement, possibilité de choisir entre une clé de cryptage conventionnelle ou sur un certificat avec une infrastructure à gestion des clés publiques
  • utiliser des clés statiques pré-partagées ou TLS dynamique basée sur l'échange de clés
  • créer des tunnels à travers des réseaux publics dont les extrémités sont dynamiques (DHCP par exemple)
  • créer des tunnels dans des réseaux à travers du NAT
  • créer des ponts ethernet virtuels sécurisé
  • utiliser une interface utilisateur graphique (GUI) disponible sous Windows ou Mac OS X.
Interopérabilité

Seul un client OpenVPN peut interagir avec le serveur OpenVPN. Un seul logiciel peut être utilisé comme Client ou Serveur, cela dépend de la configuration. Il n'est pas non plus possible d'interagir avec d'autres logiciels VPN ou IPsec.
Par contre les certificats utilisés (dans le cas de choix de cette solution pour le chiffrement) sont standards.

Contexte d'utilisation dans mon laboratoire/service

L'UREC met à disposition deux serveurs OpenVPN pour les connexions à distance de ses membres : un utilisant le TCP l'autre utilisant l'UDP, ceci pour palier aux différentes politiques de filtrage dans laquelle se trouve le client. Par exemple, le protocole UDP est de plus en plus rejeté par les pare feux en entrée des réseaux de campus ou de laboratoires, ce qui rend l'utilisation d'openVPN impossible.

Limitations, difficultés, fonctionnalités importantes non couvertes

Pour palier à des problèmes de compatibilité avec le client Windows et le driver TAP-Win32, openVPN utilise 4 adresses IP pour établir une liaison avec un PC client : l'adresse de réseau, l'adresse de broadcast, l'adresse de routage et l'adresse du PC.
En pratique chaque établissement de liaison VPN consomme 4 adresses et une classe "C" peut être très vite entièrement consommée... Pour pallier cet inconvénient, on alloue souvent des adresses d'une classe "privée" (192.168.20.0/24 par exemple) et on met en place de la translation d'adresses "NAT3 au niveau du serveur VPN grâce à des iptables.

Environnement du logiciel
Plates-formes

Linux, Windows 2000/XP et supérieur, OpenBSD, FreeBSD, NetBSD, Mac OS X et Solaris

Environnement de développement
Eléments de pérennité

OpenVPN est basé sur SSL et utilise les librairies OpenSSL et les pilotes TUN/TAP.

Environnement utilisateur
Liste de diffusion ou de discussion, support et forums
Documentation utilisateur

Un article intéressant, https://aresu.dsi.cnrs.fr/spip.php?article189, sur 2 exemples d'utilisation d'openVPN :
accéder à son réseau local depuis l’extérieur,
accéder à l’extérieur (internet) depuis un réseau inconnu.

Divers (astuces, actualités, sécurité)

La clé statique partagée permet d'éviter des attaques de type DoS et est très simple à mettre en œuvre (http://openvpn.net/static.html )

Le site web annonce pour bientôt :
* "client installers"
* outil de configuration
* forum pour les utilisateurs

Interface graphique sous Windows :
Si vous souhaitez utiliser OpenVPN avec une Interface Graphique sous Windows, voici le lien du site qui propose un soft contenant OpenVPN + GUI :
http://openvpn.se/
Et la page directe de téléchargement :
http://openvpn.se/download.html

Il existe également une interface graphique sous Mac OS X (Tunnelblick) :
http://code.google.com/p/tunnelblick/
Pour accéder directement à la page de téléchargement :
http://code.google.com/p/tunnelblick/downloads/list

Commentaires

Exemples de mise en œuvre

Un article intéressant, https://aresu.dsi.cnrs.fr/spip.php?article189, sur 2 exemples d'utilisation d'openVPN :

  • accéder à son réseau local depuis l’extérieur,
  • accéder à l’extérieur (internet) depuis un réseau inconnu.

Rédigé par Gilian Gambini.

David.

Si je peux me permettre

Le paragraphe "doc utilisateur" de cette fiche est vide ; ce lien y trouverait typiquement sa place, ainsi que le lien "Documentation" dans l'autre paragraphe.
Ce n'est pas bien urgent, mais comme la fiche est "mure" pour une MAJ, c'est peut-être l'occasion bienvenue ? ;-)