OpenVPN


Version traduction 2.0.fr.1.0 du 13/04/2004

  OpenVPN est un  outil de création de VPN (Virtual Private Network, ou réseau virtuel privé) facile à utilisé, robuste et grandement configurable. Il peut être utilisé pour relier de manière sécurisée deux ou plus réseaux privés, en utilisant un tunnel chiffré à travers Internet (exemples) (citations d'utilisateurs) (articles).

OpenVPN est un projet Open Source sous licence GPL.

Avec OpenVPN, vous pouvez :

  • encapsuler dans un tunnel n'importe quel sous-réseau IP ou adapateur ethernet virtuel, dans un unique port TCP ou UDP;
  • créer une infrastructure de tunnels entre n'importe quel système d'exploitation supporté par OpenVPN. Sont concernés Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, et Windows 2000/XP;
  • utiliser toutes les fonctionnalités de chiffrement, d'authentification et de certification de la librairie OpenSSL afin de protéger le trafic de votre réseau privé lorsqu'il transite par Internet;
  • utiliser n'importe quel algorithme de chiffrement, taille de clef, ou empreinte HMAC (pour l'authentification des datagrammes) supporté par la bibliothèque OpenSSL,
  • choisir entre un chiffrement conventionnel basé sur une clef statique, ou un chiffrement par clef publique en se basant sur les certificats,
  • utiliser les clefs statiques, pré-partagée, ou un échange de clef dynamiques basé sur TLS.
  • utiliser une compression des flux adaptée en temps-réel, la mise en forme de trafic pour gérer l'utilisation de la bande-passante du lien,
  • encapsuler les réseaux dont les extrémités publiques sont dynamiques comme on peut le rencontrer avec DHCP ou avec des clients connectés par modem,
  • encapsuler le trafic de réseaux grâce aux firewalls effectuant du suivi de sessions, sans nécessairement utiliser des règles de filtrage particulières,
  • encapsulé le trafic de réseaux avec du NAT (translation d'adresse), et
  • créer des ponts ethernets sécurisés utilisant les périphériques tap.

Qu'est-ce qui distingue OpenVPN des autres paquetages VPN open-sources ?

  • Les principaux points forts de OpenVPN est de proposer la portabilité inter-plateforme pour la plupart des environnements informatiques connus, une excellente stabilité, une installation relativement aisée qui dans la plupart des cas ne requiert pas un module noyau spécifique, puis le support des adresses IP dynamiques et le NAT.

  • Pour ce que nous en savons, OpenVPN est le seul produit VPN open source à supporter entièrement l'ICP (Infrastructure à Clef Publique) OpenSSL pour la session d'authentification, le protocole TLS pour l'échange de clef, l'interface EVP (indépendante du chiffrement utilisé) fournie par OpenSSL pour chiffrer les données encapsulées, l'algorithme HMAC pour authentifier les données encapsulées, et pour multiplexer tout ceci au travers d'un unique port UDP.
  • OpenVPN utilise un modèle de sécurité avec une robustesse équivalente à ce que l'on retrouve dans l'industrie. Ce modèle est conçu pour protéger à la fois contre les attaques passives et contre les attaques actives. Le modèle de sécurité de OpenVPN est similaire à celui de IPSec mais avec un encombrement bien moindre et sans nécessiter une modification du noyau ou de la pile IP. OpenVPN supporte :
    • le choix, pour le chiffrement, de n'importe quel type de chiffrement de OpenSSL, et la taille de la clef,
    • le choix des modes de chiffrement CBC, CFB, et OFB,
    • HMAC pour l'authentification des datagrammes,
    • l'indication explicite d'un IV (Initialization Vector ou Vecteur d'Initialisation) pour masquer le modèle dans le texte clair,
    • protection anti-rejeu utilisant un horodateur/numéro-de-séquence unique pour identifier le datagramme, et,
    • le protocole TLS pour authentifier les sessions en se basant sur des certificats.
En outre, n'importe laquelle de ces options peut être désactivée pour améliorer les performances. Le coût de cette amélioration de performances est la baisse du niveau de sécurité.

  • OpenVPN a été construit pour être portable. Au moment de l'écriture, OpenVPN tourne sous Linux, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, et Windows 2000/XP. Étant donné que OpenVPN est écrit pour fonctionner comme un démon en espace utilisateur plutôt que comme un module du noyau ou comme une modification complexe de la couche IP, les efforts pour porter le  logiciel ont été considérablement simplifiés.
  • OpenVPN est facile à utiliser. Généralement, un tunnel peut être créé et configuré avec une seule commande (et sans nécessiter de fichiers de configuration). La documentation de OpenVPN contient des examples illustrant cette facilité d'utilisation.
  • OpenVPN a été rigoureusement conçu et testé pour être robuste sur des réseaux incertains. Le principal effort de conception d'OpenVPN est de faire en sorte qu'il soit aussi réactif, à la fois lors d'opérations normales et de reprise sur erreur, que la couche IP sous-jacente qu'il encapsule. Cela signifie que si la couche IP tombe pendant 5 minutes, quand elle remonte, le trafic du tunnel sera immédiatement repris même si la panne a interféré avec l'échange de clef dynamiques qui était réalisé pendant ce temps.
  • OpenVPN a été conçu avec une conception très modulaire. Tout ce qui concerne le chiffrement est manipulé par la bibliothèque OpenSSL, et toutes les fonctionnalités d'encapsulation IP sont fournies par les pilotes du réseau virtuel TUN/TAP. En tant que tel, OpenVPN présente l'avantage qu'il évoluera en coopération avec ces 2 projets.


    Par exemple, du fait que le lien entre OpenVPN et OpenSSL soit réalisé au travers de  TLS et EVP qui sont des couches d'abstractions de plus haut niveau, OpenVPN peut être recompilé avec une nouvelle bibliothèque OpenSSL et avoir immédiatement accès à n'importe quelle nouvelle fonctionnalité fournie par cette nouvelle release. Par exemple, lorsque OpenVPN est compilé avec la dernière version de OpenSSL (0.9.7), il a automatiquement accès à de nouveaux chiffrements tels que AES-256 (Advanced Encryption Standard avec une clef de 256 bits) et les nouvelles capacités du moteur de chiffrement de OpenSSL qui permettent l'utilisation d'accélérateurs matériels spécifiques pour optimiser le chiffrement, le déchiffrement, et les performances de l'authentification.

    De la même manière, le pilote TUN/TAP fait officiellement parti du noyau Linux (pour le 2.4), donc le lien de OpenVPN avec ce pilote promet de progresser, tant que le noyau Linux continuera à évoluer, ou tant que le pilote sera porté vers de nouvelles plateformes.


  • OpenVPN supporte le multi-threading basé sur pthread pour optimiser la latence de l'échange de clef dynamiques SSL/TLS. Cela vous permet l'utilisation de longues clef RSA (tel que 2048 bits ou plus) et de les renégocier fréquemment avec peu ou pas de baisse de performance.

  • OpenVPN est rapide. Tournant sous RedHat 7.2 sur un Pentium II 266 MHz, en se basant sur TLS pour l'authentification de session, le chiffrement Blowfish, SHA1 pour l'authentification des données du tunnel, et encapsuler une session FTP avec de grands fichiers précompressés, OpenVPN réalise l'envoi/réception à un taux de transfert de 1,455 Mo par seconde du temps CPU (combiné avec le temps noyau et le temps utilisateur).

  • OpenVPN est flexible. Vous pouvez créer autant de tunnels vers ou depuis la même machine, vous pouvez appliquer de la mise en forme du trafic du tunnel pour limiter l'usage de la bande-passante, et vous pouvez choisir graduellement entre la sécurité et l'efficacité en controllant exactement combien de rajouts en relation avec la sécurité sont ajoutés à chaque datagramme.

  • Tandis qu'OpenVPN fournit de nombreuses options pour controler les paramètres de sécurité des tunnels VPN, il fournit également des options pour garantir la sécurité du serveur lui-même, tel que --chroot pour restreindre la partie du système de fichiers auquel le démon OpenVPN a accès, --user et --group pour abaisser les privilèges du démon après initialisation, et --mlock pour s'assurer que les clef matérielles et les données du tunnel ne sont jamais inscrites (paginées) sur le disque à un endroit où elles pourraient être récupérées plus tard.

  • OpenVPN tourne entièrement en espace utilisateur et coexiste en paix avec les autres applications qui utilisent les tunnels TUN/TAP.

  • OpenVPN est conçu pour fonctionner correctement avec des scripts et des applications de plus haut niveau qui établissent de manière dynamique, à la demande, des connexions VPN. Pour ces applications, OpenVPN fournit diverses options pour contrôler les déconnexions par inactivité, automatiser la traversée de firewalls, et l'adressage IP dynamique.

Pourquoi choisir TLS comme sous-couche d'authentification de OpenVPN et comme protocole de négociation de clef ?

TLS est la dernière évolution de la famille SSL, protocoles qui ont été développés au départ par Netscape pour leur premier navigateur web sécurisé. TLS et ses prédécesseurs SSL ont vu leur utilisation se répandre sur le web pendant plusieurs années et ont été analysés avec intensité pour détecter leurs faiblesses. Alternativement, cette analyse a mené à un renforcément conséquent du protocole tel qu'on le connait aujourd'hui, SSL/TLS est considéré pour être un des plus résistant et des plus matures protocoles de sécurité disponible. En tant que tel, nous croyons que TLS est un excellent choix pour l'authentification et pour les mécanismes d'échanges de clef dans un produit de VPN.

Est-ce que OpenVPN support IPSec ?

Du fait que OpenVPN tourne en tant que démon en espace utilisateur, il utilise le protocol SSL/TLS plutôt que IPSec ou IKE.

L'implémentation de OpenVPN en espace utilisateur lui permet d'être protable à travers les systèmes d'exploitation et les architectures processeurs, firewall et les opérations de translation d'adresses "amicales", le support des adresses dynamiques, et le support de multiples protocoles comme entre autre les protocole de bridging.

Le protocole IPSec est conçu pour être implémenté comme une modification de la pile IP en espace noyau, donc chaque système d'exploitation requiert sa propre implémentation de IPSec indépendante des autres.

Il y a des avantages et des inconvénients pour les deux approches. Le principal avantage de l'approche de OpenVPN est la portabilité, la facilité d'utilisation, et la compatibilité avec le NAT et l'adressage dynamique. Le plan d'étude pour installer et utiliser OpenVPN va de paire avec cela et avec les questions de sécurité des démons logiciels tels que ssh.


Le principal avantage de IPSec est son support par de nombreux fournisseurs.

OpenVPN supporte-t-il Windows ?

Oui, OpenVPN supporte Windows 2000/XP, depuis la version 1.5.

OpenVPN respecte-t-il les standards ?

Comme démon VPN en espace utilisateur, OpenVPN est compatible avec SSL/TLS, les certificats RSA et les PKI X509, NAT, DHCP, et les périphériques virtuels TUN/TAP.

OpenVPN n'est pas compatible avec IPSec, IKE, ou les VPN matériels.

OpenVPN peut-il gérer un tunnel au-dessus d'une connexion TCP ?

Oui, cela est possible depuis la version 1.5.

Compiler OpenVPN

OpenVPN peut être compilé :
  • avec à la fois les librairies OpenSSL Crypto et les librairies SSL (version 0.9.5 ou supérieures nécessaire), offrant une authentification basée sur les certificats, un chiffrement par clef publiques, et un échange de clef dynamique basé sur TLS;
  • avec uniquement la librairie OpenSSL Crypto, offrant une authentification et un chiffrement conventionnels basés sur une clef statique, ou
  • autonome, avec le support de tunnels UDP non chiffrés.
OpenVPN peut aussi être lié avec la bibliothèque de compression en temps réel LZO. OpenVPN supporte la compression adaptative, ce qui signifie qui sera capable de compresser un lien seulement lorsque le flux de données du tunnel pourront être compressées.

OpenVPN supporte le multi-threading, et peut être compilé avec la bibliothèque pthread. Dans le mode SSL/TLS, OpenVPN utilise un thread en arrière plan pour procéder à des tâches coûteuses en CPU telles que les négociations de clefs SSL/TLS, ce qui améliore spectaculairement la latence de l'expédition des paquets durant ces échanges pour la négociation de clef.

Actuellement, OpenVPN tourne sous Linux 2.2, 2.4, Solaris, OpenBSD, FreeBSD, NetBSD, Mac OS X, et Windows 2000/XP.

OpenVPN fonctionne entièrement en espace utilisateur et ne nécessite aucun composant noyau spécial que le pilote de réseau virtuel TUN/TAP ou autres périphériques tun compatibles qui existent sous de nombreux unix.

Dons au projet OpenVPN

S'il vous plait, lisez la page traitant des dons au projet OpenVPN. OpenVPN est entièrement supporté par la communauté du logiciel libre, et se trouve sous licence GPL. Vos dons peuvent permettre d'assurer longtemps le développement de OpenVPN en sachant rester au plus haut niveau en ce qui concerne les problèmes de sécurité, et en maintenant un rigoureux programme de tests, l'ajout de nouvelles fonctionnalités, l'amélioration de la documentation, et fournir un support technique.
Copyright (C) 2002-2003 by James Yonan <jim@yonan.net>
This Document is released under the GNU Free Documentation License Version 1.2.
Traduction Guillaume Lehmann <lehmann@free.fr>