Documente Academic
Documente Profesional
Documente Cultură
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.
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:
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.
Sur le serveur, on se rend dans le répertoire de configuration où nous allons créer un fichier de
configuration.
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 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.
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.
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.
init-config
set KEY_COUNTRY=FR
set KEY_PROVINCE=FR
set KEY_CITY=MaVille
set KEY_ORG=MaSociété
set KEY_EMAIL=mail@mail
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
build-ca.bat
build-key-server.bat nom_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 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.
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"
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…
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.
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:
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.
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.
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.
13
14