Installation et configuration de OpenVPN

OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel (VPN), l'une de ses
principales fonctions est l'accès à des ordinateurs distants comme si l'on était connecté au réseau
local. Il permet donc d'avoir un accès au réseau interne (réseau d'entreprise, par exemple) ou de
créer un réseau de pairs.

OpenVPN utilise un protocole de sécurité SSL/TLS pour établir des connexions sécurisées entre les clients VPN et le serveur VPN.
Il prend en charge de nombreux protocoles de chiffrement et de hachage, offrant ainsi une
sécurité élevée et une grande flexibilité.

Nous allons installer les paquets : openssl et openvpn à la fois sur la machine
cliente et sur le serveur.
Nous allons faire les tests dans un VLAN
Nous allons construire un tunnel minimal avec chiffrement symétrique, en
utilisant la commande openvpn en ligne.

Sur le serveur

Sur le client

Sur wireshark observons ce qui transite sur l'interface eth0 et tun0 avec un ping du client vers le serveur.

etho

tun0:

Ensuite avec la commande openvpn –genkey –secret MaClef, nous allons generer une clef symétrique.

Il ne faudra pas oublier de copier cette clef sur la machine cliente.
Après ça, on relance ma commande pour construire mon tunnel minimal en ajoutant la clef
dans la commande avec l'option –secret MaClef.
Sur le serveur :

Ensuite par SSH depuis la machine cliente on récupère la clé

On observe ce qu'il se passe ensuite avec wireshark le message n'est pas lisible.

Nous allons  construire un tunnel chiffré avec des certificats et pour cela je vais mettre
en place les certificats de l'autorité de certification, du serveur et du client.
Je vais créer des répertoires de travail ou seront stockées les données du tunnel VPN.

 Ensuite on se deplace  le répertoire easy-rsa qui est dans /usr/share puis copie le contenue de
ce répertoire dans le dossier dans /apps/pki-booktic.

On modifie ensuite les variables suivantes dans le fichier /apps/pki-booktic/vars.

Il faut ensuite initialiser mon infrastucture de certification dans /apps/pki-booktic avec la
commande ./easyrsa init-pki.

Dans /apps/pki-booktic/, j'utilise le script easyrsa pour construire le certificat de l'autorité.
./easyrsa build-ca nopass.

De la même façon, je crée le certificat serveur et de mes clients.
./easyrsa gen-req BKTICSRV3 nopass #serveur
./easyrsa gen-req Clt1 nopass #client

Je fais ensuite signer les certificats par l'autorité de certification.
./easyrsa sign-req server BKTICSRV3 #serveur
./easyrsa sign-req client Clt1 #client

Je crée également une clef de session de Diffie-Hellman.
./easyrsa gen-dh.

Puis je crée une signature électronique pour authentifier la connexion client-serveur.

Je la crée directement dans le dossier /apps/openvpn/keys.

openvpn –genkey –secret /apps/openvpn/keys/bookticsign.key.

L'ensemble des clefs, certificats sont dans le répertoire /apps/pki-booktic/pki et ses sous répertoires issued, private.

Je copie le certificat d'autorité ca.crt, le certificat et la clef serveur ainsi que la clef DH vers /apps/openvpn/keys.

Il faudra copier le certificat d'autorité et le couple certificat/clef client grâce à SCP sur le client

Mise en place du tunnel

Je viens créer un fichier de conf dans /apps/openvpn/conffiles/, je l'appelle bookticVPN.conf.

Puis je créer le lien depuis /etc/openvpn vers ce fichier.

ln -s /apps/openvpn/conffiles/bookticVPN.conf /etc/openvpn/bookticVPN.conf.

Je fais ensuite ls -l /etc/openvpn pour voir le résultat.

Nous allons maintenant éditer ce fichier bookticVPN.conf.

Il faut enregistrer le fichier dans /apps/openvpn/conffiles.

Je viens tester en relançant le service openvpn.

Je vérifie ensuite le fonctionnement dans les logs.

Il faudra faire la même chose du côté du client.

C'est-à-dire créer un fichier de conf.

Mon fichier sera MonCltVPN.conf

Pour enregistrer le fichier soit je fais comme le serveur c'est-à-dire que je le met dans /apps/openvpn/conffiles et créer le lien symbolique ou je peux directement l'enregistrer dans /etc/openvpn et je n'ai pas besoin de créer de lien symbolique.

Il ne reste plus qu'à tester.

Je rédemarre le serveur avec la commande précedente puis je fais de même avec le client en remplacant le nom.

De chaque côté je dois obetenir Initialization Sequence Completed.

Serveur :

Client :

Après ça je viens lancer un ping sur l'adresse virtuelle VPN du serveur et je vérifie le lien du tunnel via WireShark.

Mise en place du VPN au travers du pare-feu

Pour ce faire il faut mettre le client dans le VLAN 70 et autoriser tout le trafic dans le WAN sur le Pare-feu.

Je dois ensuite rediriger les requêtes VPN vers le serveur VPN avec les règles NAT de PfSense il génèrera automatiquement les autorisations.

La directive remote du client doit être modifié avec l'ip WAN de PfSense.

Afin de faciliter l'accès des clients sur les différents VLAN et aussi d'éviter l'écriture de routes sur les différents routeurs, nous allons faire en sorte que le serveur VPN prenne en charge ce routage et masque les IP venant du Tunnel.

Routeur :

Dans le fichier /etc/sysctl.conf, rendre le serveur routeur en postionnant la directive net.ipv4.ipforward=1

Je dois ensuite redémarrer le service : systemctl restart procps

NAT dynamique :

Je dois masquer toutes les IPs sortant du tunnel vers le réseau.

Iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Je peux maintenant tester et ping l'adresse ip virtuelle de ma machine serveur depuis mon client.

Il ne faudra pas oublier de rajouter le push dans le fichier de conf côté serveur.

Expliquation des options

--remote => IP et Port du Serveur VPN

--local => IP pour laquelleon lance le tunnel (si on a plusieurs IP)

--dev => Type d'interface virtuelle (tun pour un tunnel IP)

--ifconfig => Suivi de 2 IP pour adresser manuellement chaque extrémité du tunnel

--push => Permet d'envoyer chez les clients des commandes à exécuter

--route => Option permettant de configurer une route

--server => Désigne le serveur TLS et permet de distribuer de l'adressage dans les tunnels avec les clients (suivi d'un réseau et son masque)

--client => Désigne le client TLS

--dh => Fichier de clef de Diffie Hellman (clef de session)

--cert => Fichier du certificat machine

--key => Fichier de clef privée machine

--ca => Fichier du certificat d'autorité

--secret => Fichier clef symétrique

--gen-key => Génère une clef symétrique

Créez votre site web gratuitement ! Ce site internet a été réalisé avec Webnode. Créez le votre gratuitement aujourd'hui ! Commencer