Vous êtes sur la page 1sur 12

TP : OpenVpn

Introduction :
La construction d'un tunnel de communication sécurisé est une étape fondamentale dans le
domaine des réseaux informatiques. Elle permet de garantir la confidentialité et l'intégrité
des données transitant entre des dispositifs distants. Dans cet article, nous explorerons trois
approches différentes pour construire un tunnel.

CONSTRUCTION D’UN TUNNEL DE 3 MANIERES :


1-un Tunnel qui n’est pas chiffré
2- un tunnel en s’appuant sur une clé partagé
3-un tunnel en s’appuant sur des certificats (PKI)

1-Tunnel sans sécurisation (sans chiffrement) :

Figure1 :tunnel entre deux machines

Nous allons dans le premier TP créer un tunnel entre deux machines serveur et client dont le
bout de tunnel liée à la machine serveur va avoir comme adresse 10.0.0.1 et l’autre
extrémité du tunnel du client aura l’adresse 10.0.0.2
-pour les deux machines serveur (192.168.1.1) et client (192.168.1.2) nous allons installer
OpenVpn par la commande suivante :
-> sudo apt install openvpn

1
Après on aura la possibilité de créer le tunnel
Sur la machine serveur
➔ sudo openvpn --dev tun1 --ifconfig 10.0.0.1 10.0.0.2
On aura un warning qui dit que la communication entre le client et le serveur et non sécurisé
c’est-à-dire un attaquant capable de lire et de modifier tous les messages échangés entre les
deux machines qui est l’homme au milieux (man in the middle)
Sur la machine client :
➔ sudo openvpn --dev tun1 --remote 192.168.1.1 --ifconfig 10.0.0.2 10.0.0.1
Pour le test on applique dabord :
➔ hostname -I
Qui permet de déterminer les adresses assignées à la machine, il faut que l’adresse de
l’interface qui est en écoute apparait, on fait le ping pour les deux machines pour tester la
communication
➔ ping 192 .168 .1.2 (dans la machine serveur)
➔ ping 192.168.1.1 (dans la machine client)

2- creation d’unTunnel en sappuant sur une clé partagé :


Dans ce tp nous allons créer un dossier nommé par exemple doc-openvpn ou nous allons
mettre dedant une clé secrete qui est normalement utilisée pour chiffrer et déchiffrer les
données lors de la communication entre le serveur et le client. nous allons par la suite la
partéger avec le client
-création du dossier doc-openvpn :
➔ mkdir doc-openvpn
➔ cd doc-openvpn

-géneration de la clé secrete nommée key :


➔ sudo openvpn --genkey --secret key
➔ sudo cat key
Pour partager la clé key avec le client d’une manière sécurisé il faut redémarrer le service
SSH comme (dans la machine client) :
➔ sudo systemctl restart ssh
Pour savoir l’adresse du client le nom du client et le chemin actuel de la machine client on
exécute respectivement :

2
➔ ip a
➔ whomi
➔ pwd
En fait tout cela pour savoir les informations qui vont nous aider pour envoyer la clé a la
machine client :
➔ scp key ‘whoami’@192.168.1.2:’pwd’
Cette commande scp doit être exécuté dans la machine serveur en remplaçant whoami par
le nom de la machine client et pwd par le chemin actuel de la machine client, après on
applique la communication par un tunnel ‘tun1’ en employant bien entendu la clé secrète
‘key’.
➔ Sudo openvpn --dev tun1 --ifconfig 10.0.0.1 10.0.0.2 --secret key
On obtient un warning qui dit : “using a --cipher with a larger block size (e.g AES-256-CBC)”,
l'option --cipher va nous permettre de spécifier le chiffrement à utiliser pour sécuriser la
connexion VPN. La taille du bloc est un aspect important d'un chiffrement elle a un avantage
en termes de sécurité contre les attaques crypyptographiques, et on peut effectivement
choisir un chiffrement avec une taille de bloc plus grande, comme AES-256-CBC.
Donc nous allons réexécuter la commande mais en utilisant --cipher avec algorithme de
chiffrement AES-256-CBC :
➔ Sudo openvpn --dev tun1 --ifconfig 10.0.0.1 10.0.0.2 --secret key --cipher AES-256-
CBC
On applique la meme chose pour la machine client :
➔ Sudo openvpn --dev tun1 --remote 192.168.1.1 --ifconfig 10.0.0.2 10.0.0.1 --secret
key --cipher AES-256-CBC
Ce qui permet de l’ouverture du port 1194 et pour le test il faut tout simplement faire le
ping.

3-création d’un tunnel en s’appuant sur de certificats (PKI) :


Nous allons tout dabord installer easy-rsa qui est un ensemble de scripts qui facilite la
gestion des clés, des certificats et des demandes de signature de certificat pour la mise en
place d'une infrastructure à clé publique (PKI) :
➔ sudo apt install openvpn easyrsa
Puis nous allons mettre easyrsa dans le répertoire /etc/openvpn, pour que easyrsa soit utilisé
en conjonction avec openvpn, c’est à dire que dans ce tp nous allons suivre des conventions
qui simplifie généralement la configuration et la maintenance du système. openvpn est
souvent configuré pour utiliser les certificats générés par easyrsa. En plaçant easyrsa dans le

3
même répertoire qu'openvpn, on facilite l'intégration entre les deux et la configuration des
certificats pour sécuriser les connexions vpn.
➔ sudo make-cadir /etc/openvpn/easyrsa
➔ cd /etc/openvpn
➔ sudo su
➔ cd easy-rsa
➔ ls
Pour accéder à easy-rsa il faut avoir les privilèges du root car les opérations sur les clés
privées et des certificats nécessitent des autorisations spéciales. On remarque que easy-rsa
contient les fichiers easyrsa, openssl-easyrsa.cnf, vars et x509-types.
- easyrsa : Il s'agit du script principal qui est utilisé pour effectuer diverses opérations liées à
la gestion des clés et des certificats. Ce script est exécuté avec des arguments spécifiques
pour générer des paires de clés, des certificats, des demandes de signature de certificat
(CSRs), etc.
- vars : Ce fichier contient des variables et des paramètres de configuration que le script
easyrsa utilise lors de son exécution. Les variables dans ce fichier incluent souvent des
informations telles que le nom du pays, de l'État, de la ville, etc.
-nous allons faire maintenant l’initialisation de la PKI :
PKI est une infrastructure à clé publique qui utilise la cryptographie asymétrique pour
sécuriser les communications. Elle permet de gérer la création, la distribution et le cycle de
vie des certificats numériques qui contiennent la clé publique et privée. Les certificats
numériques servent à s’authentifier, à signer électroniquement et à chiffrer les transactions.
➔ ./easyrsa init-pki
Cela implique la creation d’un répertoire pki qui contient : openssl-easyrsa.cnf, private , reqs,
safessl-easyrsa.cnf .
-toujours sur /etc/openvpn/easy-rsa# nous allons générer un certificat d’autorité (une entité
de confiance responsable de vérifier l'identité des parties demandant des certificats) :
➔ ./easyrsa build-ca
Après on nous demande d’entrer un passephrase, pour la protection de la clé privé. On
obtient dans le répertoire pki le certificat ca.crt et d’autres répertoires sont générées comme
issued dont ils auront sauvegardé les certificats
- pour voir les informations du certificat, on utilise par exemple
➔ Openssl x509 -in ca.crt -subject -issuer -dates -noout
Il faut noter aussi que la clé du certificat ca.crt va être généré dans le répertoire pki qui est
ca.key.
-on génère la clé du diffie-helman par :

4
➔ ./easyrsa gen-dh
Cela va permettre de générer la clé dh.pem qui va être placé dans le répertoire pki
-maintenant nous allons générer une demande de certificat que nous allons l’appeler EMSI
par exemple :
➔ ./easyrsa gen-req EMSI
Et en va la signer :
➔ ./easyrsa sign-req server EMSI
Dès que le certificat est signé on peut dire qu’on a créer le certificat qui va être placé dans le
répertoire issued
Après pour la simplicité on va mettre les informations qu’on déjà générer sur le répertoire
openvpn mais ce n’est pas obligatoire
➔ cp pki/dh.pem pki/private/EMSI.key pki/ca.crt pki/issued/EMSI.crt
/etc/openvpn
Maintenant nous allons générer le certificat pour le client qu’on va appeler cli, et nous allons
procéder de la même manière :
➔ ./easyrsa gen-req cli
➔ ./easyrsa sign-req client cli

Figure : Schéma descriptif des opérations effectué par le script easyrsa

5
Après nous allons envoyer ces informations au client mais il ne faut pas oublier de
redémarrer le service ssh sur la machine client avant de faire ce qui suit dans la machine
serveur :
➔ Scp pki/ca.crt pki/issued/cli.crt pki/private/cli.key
‘whoami’@192.168.1.2:’pwd’
Pour la configuration de fichier server.conf par lequel on va créer notre tunnel nous allons le
copier vers le répertoire /etc/openvpn :
➔ cp /usr/share/openvpn/examples/sample-config-files/server.conf /etc/openvpn
Puis nous allons entrer les informations correspondantes en changeant les ligne suivantes :
ca ca.crt -> ca /etc/openvpn/ca.crt
cert server.crt -> cert /etc/openvpn/EMSI.crt
key server.key -> key /etc/openvpn/EMSI.key
Ce n’est pas obligatoire de spécifier le chemin de ces certificats et la clé car nous allons
travailler sur le même chemin
-maintenant nous allons générer la clé ta.key pour le renforcement de la sécurité et la
protection contre les attaques par rejeu en s'assurant que les paquets ne sont pas rejoués
par un attaquant, et aussi les attaques de type man-in-the-middle. Et pour contribuer à
l'authentification mutuelle entre le client et le serveur. ta.key permet au serveur de vérifier
que le client possède la clé partagée correcte avant de lui accorder l'accès au réseau.
➔ openvpn --genkey --secret ta.key
➔ nano etc/sysctl.conf
On applique nano etc/sysctl.conf pour activer net.ipv4.ip-forward=1, pour activer la
redirection IP(permettre au noyau du système d'acheminer les paquets réseau d'une
interface réseau à une autre), ce qui est souvent utilisé dans le contexte de configurations de
routage ou de partage de connexion Internet sur des systèmes Linux.
-maintenant nous allons créer le tunnel entre les deux machines et on laisse la machine
serveur en écoute
➔ openvpn /etc/openvpn/server.conf
Dans une autre fenêtre mcd on copie la clé ta.key dans le chemin actuel de la machine client
➔ scp ta.key , ‘whoami’@192.168.1.2:’pwd’
-dans la machine client nous allons copier les informations qu’on a générer par le serveur
dans le répertoire /etc/openvpn/ :
➔ sudo cp ca.crt clientg6.crt clientg6.key ta.key /etc/openvpn/
-la configuration du fichier client.conf :

6
➔ sudo su
➔ cd /etc/openvpn
➔ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf
➔ nano client.conf
Dans le fichier client.conf nous allons remplacer les ligne suivantes par les informations
convenable :
remote my-server-1 1194 -> remote 192.168.1.1 1194
ca ca.crt -> ca /etc/openvpn/ca.crt
cert client.crt -> cert /etc/openvpn/clientg6.crt
key client.key -> key /etc/openvpn/clientg6.key
tls-auth ta.key 1 -> tls /etc/openvpn/ta.key 1

-on va maintenant lancer openvpn avec le fichier de configuration client.conf


➔ openvpn /etc/openvpn/client.conf
Cette commande va permettre d’établir une connexion VPN entre le client et le serveur,
selon les paramètres définis dans le fichier de configuration.
Conclusion :
En conclusion, la construction d'un tunnel de communication offre une diversité
d'approches, chacune répondant à des exigences de sécurité différentes. La création d'un
tunnel non chiffré, bien que simple, expose les données à des risques significatifs. Opter pour
un tunnel reposant sur une clé partagée constitue une amélioration en termes de sécurité,
offrant une protection accrue. Cependant, pour une sécurité maximale et une gestion plus
sophistiquée des clés, la mise en place d'un tunnel basé sur des certificats via une PKI
demeure la meilleure option.

7
8
9
10
11
12

Vous aimerez peut-être aussi