OpenVPN permet d’authentifier un utilisateurs à un site distant ou deux sites distants entre eux, au travers d’un tunnel sécurisé, entre eux en utilisant
- une clé symétrique partagée à l’avance.
- des certificats électroniques.
- des comptes utilisateur/mot de passe
Il s’appuie sur openSSL et le protocole SSL/TLS afin de construire le tunnel VPN.
Les données sont transportées de façon chiffrés au travers de ce tunnel (TCP ou UDP).
L’avantage de cet outil est qu’il est open source, son code est libre, sa communauté est active et il est gratuit.
Par défaut il utilise le port UDP 1194 mais son port est modifiable
Cependant certaines dégradations de performances peuvent survenir selon le protocole et le port :
- Perte de performances sur TCP
l’échange de demande SYN/ACK peuvent entraîner des pertes durant la demande communication, si des retransmissions de paquets doivent s’effectuer il est nécessaire de recalculer un certains nombre d’élément élevant le temps de réponse
Il existe deux modes de tunnel :
- Tunnel IP (pilote réseau tun)
- Tunnel Ethernet (pilote réseau tap)
Tun et tap sont des périphériques virtuels.
Tap simule un lien (link layer) et se situe au niveau de la couche 2 (physique) du modèle OSI.
Tun est un tunnel réseau qui simule un périphérique de la couche Ethernet et qui travaille avec la couche 3 (réseau) du modèle OSI comme les paquets IP.
Le tunnel IP est semblable au mode routé ( client connecté au réseau distant)
Le tunnel Ethernet est lui semblable mode bridgé (Sous-Réseau connectés entre eux)
Si vous devez faire passer du traffic NetBIOS (Beeeeeurk) dans le tunnel il vaut mieux utiliser le mode bridge
- Le mode routé utilisera du NAT, la machine aura une adresse différente (réseau différent) de la machine réelle. Par exemple, la machine réelle pourra être en 192.168.1.0 et les machines en NAT en 10.2.0.0.
- Le mode ponté ou bridgé permet de relier entre eux deux sous-réseaux. Nous pourrons dans ce cas avoir par exemple la machine réelle dans la même plage d’adresse IP que la machine virtuelle.
Il existe plusieurs catégories d’architecture VPN
Tunnel transparent
Dans ce mode, openvpn transporte uniquement les données, au travers du tunnel, sans effectuer d’authentification, ni de chiffrement ou d’intégrité de données. Il n’y ici aucune sécurité et les données peuvent être visualisées en clair.
Tunnel à clés partagées
Dans ce cas, les deux passerelles VPN partagent une combinaison secrète et permanente. Il faut au préalable créer ces clés de partage, ce mode est plus simple à mettre en œuvre que le tunnel SSL/TLS mais il comporte des inconvénients :
·Nécessiter l’échange de la clé sur les deux routeurs
·Ne pas pouvoir renouveler la clé partagée
·Ne pas disposer d’authentification des passerelles
Le fichier de clé se découpe en quatre grandes sections :
· la clé de chiffrement (512 bits maximum)
· la clé de hachage (512 bits maximum)
. la clé de déchiffrement optionnel (512 bits maximum)
· la clé de hachage optionnelle (512 bits maximum)
=> Les deux dernières parties servent au cas où l’on souhaite utiliser des clés de chiffrement et déchiffrement différentes l’une de l’autre. Il faut alors des clés de hachage différentes également.
Tunnel SSL/TLS (solution PKI)
Chaque équipement doit disposer de ses propres clés privée et publique. Ces dernière étant en fait intégrée à un certificat, le certificat de l’autorité de certification est également stocké sur chaque client VPN.
Chaque membre possède une paire de clés privée et publique. L’outil openssl utilise l’architecture PKI afin d’authentifier les routeurs OpenVPN, avant de transmettre les informations chiffrées, au travers du tunnel.
L’objectif d’un certificat est d’assurer l’authenticité de la personne possédant une clé privée. Sans certificat, pas d’authentification, le certificat est systématiquement signé par une autorité de confiance, appelée autorité de certification.
Il existe des organismes, spécialisés dans la vente de certificats, on peut tout aussi bien créer sa propre autorité de certification, cette entité signe ses certificats à l’aide de sa clé privée et diffuse largement sa clé publique, à l’ensemble des participants à l’architecture sécurisée, sous forme de certificat.
En bref :
Avantages :
- Outil Libre et Open source (pas de backdoor possible dans le code)
- Très sécurisé (Plusieurs protocole de chiffrement / hashage possible)
- Protocole stable et rapide
- Plusieurs modes d’authentifications possibles
- Compatible sur les plateformes standards (Windows, Linux, Android, Apple IOS, Apple MacOS)
Inconvénient :
- Non compatibles avec les logiciels du marché (Ipsec, serveur VPN commerciaux)
- Non intégré de base sur les plateformes (Installation du client sur les OS)
- Difficile à gérer si on a pas l’habitude