Vous êtes sur la page 1sur 15

Implémenter l’accès sécurisé au serveur

via OpenVPN
Sommaire
1 Présentation de VPN
2 Implémentation de OpenVPN

1 Présentation de VPN
1.1 Introduction
Les entreprises ont besoin de moyens à la fois sécurisés, fiables et économiques
permettant d'interconnecter plusieurs réseaux. De plus, avec l'augmentation du nombre de
télétravailleurs, les entreprises ont un besoin croissant de moyens sécurisés, fiables et
économiques de connecter aux ressources présentes sur les sites de l'entreprise les
employés travaillant dans de petites structures ou des bureaux à domicile (SOHO), ainsi qu'à
d'autres emplacements distants.
Les entreprises utilisent des VPN pour créer une connexion sécurisée de bout en
bout par réseau privé sur des réseaux tiers, comme Internet ou des extranets. Le tunnel
supprime la barrière de distance et permet aux utilisateurs distants d'accéder aux ressources
réseau du site central.
Un VPN est un réseau privé créé par tunneling sur un réseau public, généralement
Internet. Un VPN est un environnement de communication dans lequel l'accès est
strictement contrôlé de manière à autoriser les connexions homologues au sein d'une
communauté définie d'intérêt. Les premiers VPN étaient exclusivement des tunnels IP qui
n'incluaient ni l'authentification ni le chiffrement des données.
Un VPN utilise des connexions virtuelles qui sont routées via Internet depuis le réseau
privé de l'entreprise jusqu'au site ou à l'hôte distant. Les informations issues d'un réseau
privé sont transportées de manière sécurisée sur le réseau public afin de constituer un
réseau virtuel.

1.2 Avantages de VPN


Les avantages d'un VPN sont les suivants :
 Réductions des coûts : les VPN permettent aux entreprises d'utiliser un
transport Internet tiers et économique pour la connexion des bureaux
et des utilisateurs distants au site principal, éliminant par conséquent
le besoin de disposer de liaisons WAN et de bancs de modem dédiés et
onéreux.
 Évolutivité : Les grandes entreprises peuvent ajouter des volumes
importants de capacité et d'ajouter facilement de nouveaux
utilisateurs sans ajouter d'infrastructure importante.
 Compatibilité avec la technologie haut débit : les VPN permettent aux
travailleurs mobiles et aux télétravailleurs de bénéficier d'une
connectivité haut débit rapide, comme la technologie DSL et le câble,
pour accéder au réseau de leur entreprise.
 Sécurité : les VPN peuvent inclure des mécanismes de sécurité offrant
un niveau de sécurité très élevé grâce à l'utilisation de protocoles de
chiffrement et d'authentification avancés qui protègent les données de
tout accès non autorisé.
1.3 Types de VPN
Il existe deux infrastructures basiques pour implémenter VPN :

 VPN de site à site (Routeur à Routeur):


o Dans un VPN de site à site, les hôtes finaux envoient et reçoivent le
trafic TCP/IP normal par l'intermédiaire d'une « passerelle » VPN, et
les hôtes internes ne savent pas qu'un VPN existe.
o La passerelle VPN est responsable de l'encapsulation et du chiffrement
de la totalité du trafic sortant issu d'un site spécifique.
o La passerelle VPN envoie ensuite ce trafic sur Internet par le biais d'un
tunnel VPN jusqu'à une passerelle VPN homologue au niveau du site
cible. Lors de la réception, la passerelle VPN homologue élimine les en-
têtes, déchiffre le contenu et relaie le paquet vers l'hôte cible au sein
de son réseau privé.
o Un VPN site à site est une extension d’un réseau étendu classique.
o Par le passé, une connexion par ligne louée ou Frame Relay était
requise pour connecter des sites, mais comme la plupart des
entreprises disposent aujourd'hui d’un accès Internet, ces connexions
peuvent être remplacées par des VPN site à site.
 VPN d'accès à distance :
o Les VPN d'accès à distance sont utilisés pour la connexion d'hôtes
individuels devant accéder en toute sécurité au réseau de leur
entreprise via Internet.
o Un VPN d'accès à distance est créé lorsque les informations sur le VPN
ne sont pas configurées de manière statique, mais qu'elles permettent
au contraire des modifications dynamiques.
o Ce VPN d'accès à distance peut également être activé et désactivé. Les
VPN d'accès à distance prennent en charge une architecture client-
serveur, dans laquelle le client VPN (hôte distant) obtient un accès
sécurisé au réseau de l'entreprise par l'intermédiaire d'un
périphérique de serveur VPN à la périphérie du réseau.
o Il se peut qu'un logiciel client VPN doive être installé sur le
périphérique final de l'utilisateur mobile. Les données chiffrées sont
ensuite envoyées via Internet vers la passerelle VPN située à la
périphérie du réseau cible. Dès réception, la passerelle de VPN adopte
le même comportement que pour des VPN site à site.
Note : On trouve aussi autre terme utilisé pour VPN Site à Site est l’intranet VPN, et
pour l’accès à distance extranet VPN.

1.4 Protocoles de VPN


Les deux types de VPN ci-dessus sont basés sur différents protocoles de sécurité VPN.
Chacun de ces protocoles VPN offre des fonctionnalités, des niveaux de sécurité différents,
et détermine exactement comment vos données acheminent entre votre ordinateur et le
serveur VPN.
1.4.1 PPTP
Le protocole PPTP vous permet de chiffrer et d’encapsuler dans un en-tête IP le trafic
multi protocole qui est ensuite envoyé sur un réseau IP ou sur un réseau IP public comme
Internet. Vous pouvez utiliser le protocole PPTP pour les connexions d’accès à distance et les
connexions VPN de site à site. Si vous utilisez Internet comme réseau public VPN, le serveur
PPTP est un serveur VPN PPTP avec une interface sur Internet et une seconde interface sur le
réseau intranet.
Le protocole PPTP encapsule des trames PPP dans des datagrammes IP en vue de la
transmission sur le réseau. Le protocole PPTP utilise une connexion TCP pour gérer les
tunnels et une version modifiée du protocole GRE afin d’encapsuler des trames PPP pour les
données en tunnel.
La trame PPP est chiffrée avec le chiffrement Microsoft Point-to-Point (MPPE) à l’aide
des clés de chiffrement générées par le processus d’authentification MS-CHAPv2 ou EAP-
TLS.
1.4.2 L2TP
Le protocole L2TP vous permet de chiffrer le trafic Multi Protocole qui doit être
envoyé via tout support prenant en charge la remise de datagramme point à point, comme
le trafic IP ou le mode de transfert asynchrone. Le protocole L2TP est une combinaison des
protocoles PPTP et L2F (Layer 2 Forwarding). Il regroupe les meilleures fonctionnalités des
deux.
À la différence du protocole PPTP, l’implémentation Microsoft du protocole L2TP
n’utilise pas le chiffrement MPPE pour chiffrer les datagrammes PPP. Le protocole L2TP
s’appuie sur IPsec en mode transport pour les services de chiffrement. La combinaison des
protocoles L2TP et IPsec est appelée L2TP/IPsec.
IPSec peut aussi être utilisé seul. Il est fréquemment utilisé pour les VPN de site à site
et de nombreuses applications VPN iOS utilisent également IPSec. Il est généralement
considéré comme plus rapide que SSL, mais vos résultats peuvent varier en fonction de la
configuration et de l'utilisation envisagée.
L’encapsulation pour les paquets L2TP/IPsec est formée de deux couches,
l’encapsulation L2TP et l’encapsulation IPsec.
Pour le chiffrement, le message L2TP est chiffré avec l’algorithme AES ou 3DES en
utilisant les clés de chiffrement générées par le processus de négociation IKE.
L2TP/IPSec devient l'une des connexions VPN les plus sécurisées disponibles. Il utilise
le cryptage AES-256 bits, et n'a pas de vulnérabilités connues, il présente de légères failles.
Par exemple, le protocole utilise par défaut UDP sur le port 500. Cela rend le trafic plus facile
à repérer et à bloquer. Bien qu’IPSec aurait été compromis par la NSA.

1.4.3 SSTP
Secure Socket Tunneling Protocol (SSTP) est un type de tunnel VPN qui fournit un
mécanisme pour transporter PPP ou L2TP à travers un canal SSL 3.0. SSL fournit une sécurité
au niveau transport avec une négociation de clés, le chiffrement, et le contrôle de l'intégrité
des données. L'utilisation de SSL sur le port TCP HTTPS (443 par défaut) permet à SSTP de
passer facilement à travers les pare-feu et les serveurs Proxy qui peuvent bloquer le trafic
PPTP et L2TP/IPsec.
L’utilisation du protocole PPP permet la prise en charge de méthodes
d’authentification fortes, telles qu’EAP-TLS. Le protocole SSL offre une sécurité de niveau du
transport avec une négociation des clés améliorée, le chiffrement et le contrôle d’intégrité.
Sur cette couche HTTPS, les paquets du protocole sont transmis comme charge utile
des données à l’aide des méthodes suivantes d’encapsulation et de chiffrement :
• Le protocole SSTP encapsule des trames PPP dans des datagrammes IP en vue
de la transmission sur le réseau. Le protocole SSTP utilise une connexion TCP
(sur le port 443) pour la gestion des tunnels et comme trames de données PPP.
• Le message SSTP est chiffré avec le canal SSL du protocole HTTPS.
• SSTP utilise des certificats SSL/TLS 2048 bits pour l'authentification et des clés
SSL 256 bits pour le chiffrement. Dans l'ensemble, SSTP est assez sécurisé.
1.4.4 IKEv2
IKEv2 (Internet Key Exchange) utilise le protocole Mode de tunnel IPsec sur port UDP
500. IKEv2 prend en charge la mobilité, ce qui en fait le choix idéal pour la main d’œuvre
mobile. Les connexions VPN basées sur IKEv2 permettent aux utilisateurs de se déplacer plus
facilement entre les zones d’accès sans fil et les connexions câblées.
L’utilisation des protocoles IKEv2 et IPsec permet la prise en charge des méthodes de
chiffrement et d’authentification forte.
Le protocole IKEv2 encapsule des datagrammes en utilisant les modes AH ou ESP
IPsec pour la transmission sur le réseau. Le message est chiffré avec les algorithmes de
chiffrement AES 256, AES 192, AES 128 et 3DES à l’aide des clés de chiffrement générées à
partir du processus de négociation IKEv2.

1.4.5 Protocoles supplémentaires


1.4.5.1 SSL/TLS
Transport Layer Security (TLS) ou Sécurité de la couche de transport, et son
prédécesseur Secure Sockets Layer (SSL), sont des protocoles de sécurisation des échanges
sur Internet. On parle parfois de SSL/TLS pour désigner indifféremment SSL ou TLS.

SSL et TLS se comportent en effet comme une couche intermédiaire supplémentaire,


car ils sont indépendants du protocole utilisé au niveau application. Cela signifie donc qu’il
peut aussi bien être employé pour sécuriser une transaction web, l’envoi ou la réception
d’email, transfère des fichiers etc.
SSL et TLS proposent les fonctionnalités suivantes :
 Authentification – Le client doit pouvoir s’assurer de l’identité du serveur.
Depuis SSL 3.0 (dernière version), le serveur peut aussi demander au client de
s’authentifier. Cette fonctionnalité est assurée par l’emploi de certificats.
 Confidentialité – Le client et le serveur doivent avoir l’assurance que leur
conversation ne pourra pas être écoutée par un tiers. Cette fonctionnalité est
assurée par un algorithme de chiffrement.
 Identification et intégrité – Le client et le serveur doivent pouvoir s’assurer
que les messages transmis ne sont ni tronqués ni modifiés (intégrité), qu’ils
proviennent bien de l’expéditeur attendu. Ces fonctionnalités sont assurées
par la signature des données.
SSL et TLS reposent donc sur la combinaison de plusieurs concepts cryptographiques,
exploitant la fois le chiffrement asymétrique et le chiffrement symétrique.

1.5 Implémentation de protocoles VPN


Vous trouverez ci-dessus la liste des logiciels libres pour implémenter les protocoles
VPN dans différentes plateforme :

VPN Implémentation Libre Description


IPsec-Tools Intégrer par défaut au système.
StrongSwan
IKEv2/IPSec
LibreSwan
OpenSwan
SSL OpenVPN
L2TP xl2tpd Protocole.
PPTP pptp Protocole.
SoftEther VPN Multi protocole VPN tel que SSL VPN,
L2TP/IPsec, OpenVPN, and SSTP.

2 Implémentation de OpenVPN
2.1 Présentation
OpenVPN est un VPN Open Source utile pour la création de connexions point à point
et de site à site. Il utilise un protocole de sécurité personnalisé basé sur les protocoles SSL et
TLS.
OpenVPN permet à des pairs de s'authentifier entre eux à l'aide d'une clé privée
partagée à l'avance ou de certificats ou de couples de noms d'utilisateur/mot de passe. Il
fonctionne sur un mode client/serveur, ce qui implique son installation sur les 2 sites
distants, l'un côté client, l'autre côté serveur.
OpenVPN n'est pas un VPN IPSec, c'est un VPN SSL se basant sur la création d'un
tunnel IP (UDP ou TCP au choix) authentifié et chiffré avec la bibliothèque OpenSSL. IL n’est
pas compatible avec les clients VPN qui utilise IPsec/L2TP ou PPTP.
2.2 Topologie VPN
L’avantage principal d’OpenVPN est de pouvoir interconnecter plusieurs réseaux (ou
plusieurs ordinateurs distants) entre eux via une technique de « tunnel », et cela de manière
sécurisée à l’aide du protocole SSL. Il existe deux modes de fonctionnement d’OpenVPN :
 Le mode « bridge », qui permet d’interconnecter plusieurs réseaux distants.
 Le mode « routed », qui permet d’interconnecter des machines distantes, et
donc d’appliquer un filtrage plus précis.
Il existe 3 configurations de base pour une solution VPN :
 VPN site à site : Relier des réseaux privés au travers d'Internet de manière
sûre.
 VPN « host to network » : Fournir un accès sécurisé au réseau interne à des
postes nomades.
 VPN « host to host » : Etablir une communication sécurisée entre 2 tiers.
2.3 Scénario de Travaux pratique
Dans ce TP, nous expliquerons comment configurer un serveur VPN à l'aide
d'OpenVPN. Par souci de simplicité, nous ne prendrons en considération que le cas où le
serveur OpenVPN agit comme une passerelle Internet sécurisée pour un client VPN « host to
network ».
Pour cette configuration, nous avons utilisé trois machines, la première faisant office
de serveur OpenVPN et les deux autres (Linux et Windows) agissant en tant que clients pour
se connecter au serveur OpenVPN distant.

Tun1: 10.8.0.0/24

2.4 Authentification par certificat


2.4.1 Paquetages OpenVPN
Commencez à installer les paquetages suivants pour déployer OpenVPN :
# rpm -ihv lz4-r131-1.el6.x86_64.rpm pkcs11-helper-1.11-3.el6.x86_64.rpm
# rpm -ihv openvpn-2.4.4-1.el6.x86_64.rpm
2.4.1.1 pkcs11-helper
PKCS#11 est une bibliothèque qui simplifie l’interaction avec les fournisseurs PKCS#11 pour
les applications d’utilisateur final utilisant une simple API et un moteur OpenSSL en option.
La bibliothèque permet l’utilisation simultanée de plusieurs fournisseurs PKCS#11,
Listant les jetons des certificats de jetons disponibles, ou sélectionner directement un
certificat par identifiant sérialisé, gestion des événements de retrait et d'insertion de carte,
gestion de la réinsertion de carte dans un emplacement différent, prise en charge de
l'expiration de session et bien plus encore à l'aide d'une simple API.
La norme PKCS#11 définit une API indépendante de la plate-forme pour les jetons
cryptographiques, il définit les types d'objets cryptographiques les plus couramment utilisés
(clés RSA, certificats X.509, clés DES / Triple DES, etc.) et toutes les fonctions nécessaires
pour utiliser, créer / générer, modifier et supprimer ces objets.
La plupart des logiciels des autorités de certification commerciales utilisent PKCS # 11
pour accéder à la clé de signature de l'autorité de certification ou pour inscrire des certificats
d'utilisateur.
2.4.1.2 LZ4
LZ4 est un algorithme de compression sans perte extrêmement rapide, offrant une
vitesse de compression 400 Mo/s par cœur, évolutif avec un processeur multi cœur. Il
comporte également un décodeur extrêmement rapide, avec une vitesse de plusieurs Go/s
par cœur, généralement atteindre les limites de vitesse RAM sur les systèmes multi cœurs.
2.4.2 Infrastructure de clé publique
L'infrastructure de clé publique ou PKI est l'ensemble des certificats et clés
nécessaires au bon fonctionnement de notre service OpenVPN.
Lors de la configuration d'OpenVPN, la première étape consiste à créer une
infrastructure à clé publique (PKI). En résumé, cela comprend:
 Un certificat d'autorité de certification principale et une clé privée.
 Un certificat public et une paire de clés privées distincts pour chaque serveur.
 Un certificat public et une paire de clés privées distincts pour chaque client.
OpenVPN s'appuie sur une stratégie d'authentification bidirectionnelle, le client doit
donc authentifier le certificat du serveur et parallèlement, le serveur doit authentifier le
certificat du client. Ceci est accompli par la signature de la tierce partie (la CA) sur les
certificats du client et du serveur. Une fois que cela est établi, des vérifications
supplémentaires sont effectuées avant la fin de l'authentification.
Voici un récapitulatif rapide de PKI requis pour le fonctionnement de notre OpenVPN:
Fichier Confidentiel ? Emplacement
Sur le serveur.
Certificat de l’autorité de certification. ca.crt Non
Sur le clientX.
Clé de l’autorité de certification.
ca.key Oui Sur le serveur.
« key signing machine only »
Paramètre de Diffie-Hellman dh2048.pem Non Sur le serveur.
Certificat du serveur Server.crt Non Sur le serveur.
Clé de Serveur Server.key Oui Sur le serveur.
Certificat de client clientX.crt Non Sur le clientX.
Clé de client clientX.key Oui Sur le clientX.
 Sur le client : Certains de ces fichiers peuvent être lus par tout le monde sans risque
alors que d'autres doivent rester secret.
2.4.2.1 EazyRSA
Easy-rsa est un utilitaire CLI permettant de créer et de gérer une autorité de
certification PKI. En termes simples, cela signifie créer une autorité de certification racine,
ainsi que demander et signer des certificats, y compris des sous-autorités de certification et
des listes de révocation de certificats (CRL).Un outil peut nous aider à la création de l'ICP, il
faut pour cela se rendre dans le répertoire easy-rsa fournis par OpenVPN:
# tar -tzvf EasyRSA-2.2.2.tgz
# cd EasyRSA-2.2.2/
# ls
build-ca build-key build-key-server clean-all list-crl openssl-1.0.0.cnf sign-req
build-dh build-key-pass build-req inherit-inter openssl-0.9.6.cnf pkitool vars
build-inter build-key-pkcs12 build-req-pass openssl-0.9.8.cnf revoke-full
whichopensslcnf
 Eviter que le chemin de dossier contient des espaces tel que « OpenVPN TP/ »
Cet ensemble de scripts fournis, va nous permettre de créer notre PKI facilement. Il faut tout
d'abord se rendre dans le fichier vars pour y remplir quelques informations :
Ces informations servent à faciliter la création des clés et des certificats de l'architecture PKI.
KEY_COUNTRY : Votre pays
KEY_PROVINCE : Votre région
KEY_CITY : Votre Ville
KEY_ORG : Nom de votre organisation
KEY_EMAIL : Votre mail pour des contacts éventuels
KEY_CN : Le "Common Name", il faut y mettre votre nom ou celui de votre serveur.
KEY_NAME : Votre nom ou celui de votre serveur
KEY_OU : Organisation unit, nom de l'unité de travail dans laquelle vous êtes.
Sur certaines versions, il est possible que quelques informations ne soient pas présentes
dans le fichier "vars", il faudra juste les préciser "manuellement" lors de la création des
certificats et des clés.
Entrez ensuite le jeu de commande suivant, qui va nous permet de charger les nouveaux
paramètres du fichier "vars":
# . ./vars
Ou
# source vars
Avant de continuer, assurez-vous que l'heure du système est correcte. De préférence,
configurez NTP.
Vider le répertoire "keys/" ou seront mis les certificats et clés :
# ./clean-all
Lance la construction du certificat et de la clé de l'autorité de certification selon le fichier
vars précédemment remplie
# ./build-ca
 Si vous lancez un « # ls keys/ » vous verrez alors qu'un "ca.crt" et un "ca.key"
viennent d'être créés.
Générer les paramètres de Diffie-Hellman pour l'échange d'informations en complément de
RSA.
# ./build-dh
Nous allons maintenant créer le certificat et la clé du serveur:
# ./build-key-server serveur
Il faut alors accepter les différents paramètres (qui sont ceux entrés dans le fichier "vars"). A
la fin, un mot de passe (facultatif) est demandé, ainsi que deux questions qu'il faut affirmer.
Il nous reste à créer un certificat et une clé pour chaque client:
# ./build-key client1
# ./build-key client2
Même procédure au niveau des paramètres et des questions.
Nous avons maintenant quelques fichiers dans le répertoire « /keys ». Ceux qui nous
intéressent sont les suivants:
 ca.crt : certificat de l'autorité de certification (CA).
 ca.key : clé du CA avec laquelle il signe les certificats clients et serveurs.
 dh2048.pem : paramètre Diffie-Hellman.
 serveur.crt : certificat du serveur.
 serveur.key : clé du serveur.
 client1.crt : certificat du client.
 client1.key : clé du client.
 client2.crt : certificat du client.
 client2.key : clé du client.
2.4.3 Création de la configuration du serveur
Vous devez copier le fichier de configuration de serveur qu’est fournis par OpenVPN :
# cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/
Avant de le modifier, il nous faut copier les éléments de PKI nécessaire au serveur:
# mkdir /etc/openvpn/keys
# cp keys/ca.crt /etc/openvpn/keys/
# cp keys/server.key /etc/openvpn/keys/
# cp keys/server.crt /etc/openvpn/keys/
# cp keys/dh2048.pem /etc/openvpn/keys/
Nous pouvons maintenant aller configurer notre serveur. Voilà l'état du fichier de
configuration simplifié de serveur /etc/openvpn/server.conf avec les paramètres
commentés:
# Interface d’écoute d’OpenVPN
;local a.b.c.d
# Numéro du port utilisé
port 1194
# Protocole de communication
;proto udp
proto tcp
# Type d'interface
dev tun
# Emplacement du master CA
ca /etc/openvpn/keys/ca.crt
# Emplacement du certificat du serveur
cert /etc/openvpn/keys/nom_choisi_pour_le_serveur.crt
# Emplacement de la clé du serveur
key /etc/openvpn/keys/nom_choisi_pour_le_serveur.key
# Emplacement du fichier Diffie-Hellman
dh /etc/openvpn/keys/dh2048.pem
# Adresse du réseau virtuel créé par le VPN
# L'adresse du serveur VPN sera ici 10.8.0.1
server 10.8.0.0 255.255.255.0
# Fichier utilise pour la réservation d’adresses
ifconfig-pool-persist ipp.txt
# Type d'encryptage des données
cipher AES-256-CBC
# Activation de la compression
comp-lzo
# Nombre maximum de clients autorisés
max-clients 10
# Pas d'utilisateur et groupe particuliers pour l'utilisation du VPN
# Ou changer nobody par openvpn pour mesure de sécurité
user nobody
group nobody
# Pour rendre la connexion persistante
persist-key
persist-tun
# Fichier de log
status openvpn-status.log
log openvpn.log
# Niveau de verbosité
verb 5
# Commenter cette ligne, qui n’est pas compatible avec le protocole TCP
;explicit-exit-notify 1
Pour renforcer la sécurité contre les attaques DDOS, il faut ajouter l'option tls-auth
qui utilise une clé pré-partagée statique (PSK) qui doit être générée à l'avance et partagée
entre tous les homologues. Cette fonctionnalité ajoute une "protection supplémentaire" au
canal TLS en exigeant que les paquets entrants aient une signature valide générée à l'aide de
la clé PSK. Si cette clé est modifiée, elle doit l'être simultanément sur tous les pairs.
L'avantage principal est qu'un client non authentifié ne peut pas provoquer la même
charge CPU / cryptage sur un serveur car le trafic indésirable peut être abandonné beaucoup
plus tôt. Cela peut aider à limiter les tentatives de déni de service.
Cette fonctionnalité en elle-même n’améliore en aucun cas l’authentification TLS, bien
qu’elle offre une deuxième ligne de défense si une faille future est découverte dans une
suite de chiffrement TLS ou une implémentation particulière (telle que CVE-2014-0160,
Heartbleed, où la clé tls-auth offrait une protection contre les attaquants n’ayant pas de
copie). Cependant, il n'offre aucune protection en cas de rupture cryptographique complète
pouvant permettre le déchiffrement du trafic d'une suite de chiffrement.
Générez une PSK avec sur le serveur:
# openvpn --genkey --secret /etc/openvpn/keys/ta.key
Modifier la directive dans le fichier de configuration de serveur server.conf:
tls-auth keys/ta.key 0 # This file is secret
Sauvegarder le fichier de serveur server.conf
Démarrer le service OpenVPN :
# service openvpn start
Si le démarrage de service OpenVPN s’est passé sans aucun souci, une interface de type
tunnel sera créer :
# ifconfig
...
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet adr:10.8.0.1 P-t-P:10.8.0.2 Masque:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:100
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
2.4.4 Configuration et connexion d'un client
Après avoir installé OpenVPN sur les machines clientes. Prenez note que la configuration
de client suivent le même principe entre les différents systèmes d’exploitation, dans laquelle
les fichiers de certificat et de clés « ca.crt », « clientX.crt », « clientX.key », et « ta.key »
crées sur le serveur seront copier via un canal sécurisé ou main à main vers le dossier :
 Sous Windows : C:\Program Files\OpenVPN\config\
 Sous CentOS : /etc/openvpn/keys/
Une fois que ces fichiers sont sur le client, n’oublier pas que pour chaque machine client
vous devez mettre ses propres certificats et clefs, si non le serveur va distribuer la même
adresse pour chaque un.
2.4.4.1 Fichier de configuration client
Concernant le fichier de configuration de client, vous devez copier un fichier modèle qui
se trouve dans:
 Sous Windows : C:\Program Files\OpenVPN\sample-config\client.ovpn
 Sous CentOS : /usr/share/doc/openvpn-*/sample/sample-config-files/client.conf
Vers les emplacements suivants:
 Sous Windows : C:\Program Files\OpenVPN\config\
 Sous CentOS : /etc/openvpn/keys/
Note : Sous Windows vous pouvez utiliser Winscp pour transférer les fichiers.
Ensuite, il nous faut modifier le fichier de configuration du client afin que les paramètres
correspondent à celui du serveur. Voici le fichier de configuration simplifié avec les
paramètres commentés:
# Pour signaler que c'est un client !
client
# Type d'interface
dev tun
# Protocole de communication
Proto tcp
# Adresse de Passerelle VPN, port identique au serveur
remote 192.168.12.1 1194
# Tentative de connexion infinie
resolv-retry infinite
nobind
# Pour rendre la connexion persistante
persist-key
persist-tun
# Pour cacher les avertissements
mute-replay-warnings
# Emplacement du master CA (par défaut)
ca ca.crt
# Emplacement du certificat client
cert nom_du_client.crt
# Emplacement de la clé privée du client
key nom_du_client.key
# Clés privé partagé PSK
tls-auth ta.key 1
# Type d'encryptage des données
cipher AES-256-CBC
# Activation de la compression
comp-lzo
# Niveau de verbosité
verb 5
Vous pouvez alors lancer la commande qui vous permettra de vous connecter à votre
serveur VPN:
# service openvpn start
Ou
# openvpn --config /etc/openvpn/client.conf
Sous Windows, lancer le programme à partir de Menu Démarrer  Tous les
programmes  OpenPVN  OpenVPN GUI, il va démarrer avec une icône dans la
barre des tâche.
Puis cliquer droit sur l’icône, et appuyer
sur Connecter.
2.4.5 Configuration avancée de serveur
Il existe de nombreuses autres configurations et options possibles pour la mise en
place d'un VPN avec OpenVPN.
Par exemple dans ce TP, vous arrivez à connecter les deux machines clientes au
Passerelle VPN, en vérifiant leur interface Tunnel et aussi les fichiers log de serveur ou de
client (déclarée par les directives log et status de fichier de configuration).
# tail -f /etc/openvpn/openvpn-status.log
# tail -f /etc/openvpn/openvpn.log
Vous remarquez aussi que les machines clientes en recevaient les adresses IP de la
passerelle VPN, mais elles n’arrivent pas à se pinguer entre eux même que le routage est
activé. Pour cela, vous devez configurer le serveur pour que tout le trafic IP (tel que la
navigation Web et les recherches DNS, etc.) doit passer par le VPN. Assurez-vous que la ligne
suivante n'est pas commentée dans le fichier de configuration server.conf:
push "redirect-gateway def1 bypass-dhcp"
En conséquence de la configuration précédente, vous devez spécifier au moins deux serveurs
DNS qui seront utilisés pour résoudre les noms dans le fichier de configuration server.conf:
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

2.5 Authentification par utilisateur


Après avoir examiné les cinq principaux protocoles VPN, voici un rapide résumé de leurs
avantages et inconvénients :

OpenVPN: Open source, offre le cryptage le plus fort, adapté à toutes les activités, un peu
lent parfois.
L2TP / IPSec: Protocole largement utilisé, bonnes vitesses, mais facilement bloqué en
raison de son fonctionnement sur un seul port.
SSTP : Bonne sécurité, difficile à bloquer et à détecter.
IKEv2: Rapide, convivial pour les mobiles, avec plusieurs implémentations Open Source
(potentiellement surveillé par la NSA).
PPTP : Rapide, largement pris en charge, mais plein de failles de sécurité, seulement à
utiliser pour le streaming et la navigation Web de base.

Mais prenez certaines précautions si vous souhaitez utiliser cette approche dans un
environnement de production. Les choses importantes à éviter sont:
 Ne stockez pas les fichiers easy-rsa CA sur le serveur OpenVPN.
 Le serveur n'a besoin que des fichiers ca.crt, server.crt, server.key et dh * .pem
 Le client n'a besoin que de ca.crt, client.crt et client.key
 Évitez de créer les clés de chiffrement dans un environnement virtualisé, car
l’entropie aléatoire pourrait ne pas être suffisante pour garantir des clés sûres.
 Conservez la clé racine (ca.key) sur une machine autonome sans connexion réseau.

2.5.1 SmartDNS

Vous aimerez peut-être aussi