
L’une des manières les plus sûres d’envoyer des données sur internet est via un VPN, aussi connu sous le nom de « Virtual Private Network ». Lorsque l’on utilise un VPN, les données sont encryptées et envoyées à travers un réseau virtuel privé qui utilise un réseau public (internet par exemple).
Cela assure l’intégrité et la confidentialité des données échangées entre le client VPN et le serveur VPN, car même si les données venaient à être interceptées, elles seraient toujours encodées.
VPN est communément utilisé pour :
- Etablir une connexion à distance à un réseau de travail privé
- Sécuriser vos communications lorsque vous êtes connecté à un réseau wifi public
- Etablir un réseau privé pour les jeux en lignes
Si vous voulez accéder à internet anonymement depuis différents endroits de la planète, il y a plusieurs fournisseurs de VPN comme HideMyAss, ExpressVPN et PureVPN qui offrent de tels services.
Cependant, si vous avez besoin de votre propre serveur VPN, voici comment faire en utilisant OpenVPN sur Linux CentOS 6 et le plus récent Centos 7.
Comment installer un serveur OpenVPN sur CentOS 6.5 et Centos 7
Pour ce tutoriel, j’utiliserai un VPS Cloud de Infomaniak. Au fait, si vous n’avez jamais entendu parler de Infomaniak, je vous recommande fortement d’y jeter un œil.
Vous pouvez facilement déployer un VPS totalement fonctionnel en moins de 3 minutes et ils sont incroyablement rapides.
1- Installer OpenVPN et Easy RSA
En partant du principe que vous êtes connecté en tant que root, commencez par installer et activer le référentiel EPEL (EPEL repository) :
# mkdir /root/temp
# cd /root/temp
# wget http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -Uvh epel-release-6-8.noarch.rpm
Sur Centos 7:
yum install epel-release
Maintenant que vous avez installé la zone de stockage EPEL, vous pouvez installer OpenVPN et Easy RSA :
# yum install openvpn easy-rsa -y
2- Configurer Easy RSA
Créez un directoire pour stocker vos clefs et certificats :
# mkdir -p /etc/openvpn/easy-rsa/keys
Copiez le script Easy RSA dans le sous-répertoire de OpenVPN :
# cp -R /usr/share/easy-rsa/2.0/ /etc/openvpn/easy-rsa/
Editez le fichier d’installation de Easy RSA :
# vi /etc/openvpn/easy-rsa/2.0/vars
Cherchez et modifiez ces valeurs :
# Ce sont les valeurs par défaut
# qui seront place dans le certificat.
# Remplissez toutes les cases
export KEY_COUNTRY="FR"
export KEY_PROVINCE="Paris"
export KEY_CITY="Paris"
export KEY_ORG="Paris-ville"
export KEY_EMAIL=votrenom@domaine.fr
export KEY_OU="Votre Compagnie"
Maintenant, cherchez cette ligne :
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`
Et changez là en :
export KEY_CONFIG=/etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf
Une fois que c’est fait, sauvegardez le fichier et quittez l’éditeur.
3- Générer le certificat CA et les clefs
Entrez ces commandes pour initialiser Easy RSA :
cd /etc/openvpn/easy-rsa/2.0
chmod 0755 *
./vars
./clean-all
Vous pouvez ensuite créer le certificat et les fichiers clefs :
./build-ca
Vérifiez que les fichiers ont été créés avec succès :
# ls -al keys
total 20
drwx------ 2 root root 4096 Jul 30 20:14 .
drwxr-xr-x 3 root root 4096 Jul 30 20:09 ..
-rw-r--r-- 1 root root 1887 Jul 30 20:14 ca.crt
-rw------- 1 root root 1704 Jul 30 20:14 ca.key
-rw-r--r-- 1 root root 0 Jul 30 20:09 index.txt
-rw-r--r-- 1 root root 3 Jul 30 20:09 serial
4- Générer le certificat Client VPN et la clé
Vous pouvez maintenant créer les certificats du serveur et de la clé.
./build-key-server server
Lorsqu’il vous sera demandé de fournir un mot de passe pour la clé, laissez la case vide. Autrement, le service openvpn ne pourra pas démarrer automatiquement car il vous demandera de rentrer le mot de passe à chaque fois :
A challenge password []: <= laisser la case vide
Une fois de plus, vous pouvez lister le contenu des directoires « clés » pour être certain que server.crt, server.csr et server.key ont bien été créés :
# ls -al keys
total 56
drwx------ 2 root root 4096 Jul 30 20:18 .
drwxr-xr-x 3 root root 4096 Jul 30 20:09 ..
-rw-r--r-- 1 root root 5732 Jul 30 20:18 01.pem
-rw-r--r-- 1 root root 1887 Jul 30 20:14 ca.crt
-rw------- 1 root root 1704 Jul 30 20:14 ca.key
-rw-r--r-- 1 root root 160 Jul 30 20:18 index.txt
-rw-r--r-- 1 root root 21 Jul 30 20:18 index.txt.attr
-rw-r--r-- 1 root root 0 Jul 30 20:09 index.txt.old
-rw-r--r-- 1 root root 3 Jul 30 20:18 serial
-rw-r--r-- 1 root root 3 Jul 30 20:09 serial.old
-rw-r--r-- 1 root root 5732 Jul 30 20:18 server.crt
-rw-r--r-- 1 root root 1115 Jul 30 20:18 server.csr
-rw------- 1 root root 1704 Jul 30 20:18 server.key
Maintenant vous devez créer un certificat et une clé pour vos clients. Je vous recommande de créer un lot certificat/clé différent pour chaque utilisateur du VPN :
./build-key simon
Cette fois-ci, entrez un mot de passe :
A challenge password []: ChoisirUnmotdePasseSecuritaire123
5- Créer les paramètres Diffie Hellman
Tapez la commande suivante pour créer le fichier .pem :
./build-dh
6- Créer le fichier de configuration OpenVPN
Pour commencer, copiez l’échantillon du fichier de configuration :
# cp /usr/share/doc/openvpn-2.3.2/sample/sample-config-files/server.conf
/etc/openvpn/
Editez le fichier de configuration :
# vi /etc/openvpn/server.conf
Cherchez la ligne suivante :
dh dh1024.pem
Et remplacez la par :
dh /etc/openvpn/easy-rsa/2.0/keys/dh2048.pem
Maintenant cherchez ces lignes :
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
Et remplacez les par :
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
Décommentez la ligne suivante (faire en sorte qu’elle n’apparaisse plus comme commentaire mais comme code) pour acheminer tout le trafic via le serveur VPN :
push "redirect-gateway def1 bypass-dhcp"
Décommentez les lignes suivantes :
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Et ajoutez vos valeurs DNS à la place :
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
Si vous voulez utiliser le service DNS public de Google, vous pouvez utiliser 8.8.8.8 et 8.8.4.4.
Enfin, décommentez ces lignes, sauvegardez le fichier et quittez l’éditeur :
user nobody
group nobody
7- Activation du routage et du transfert d’IP
Editez /etc/sysctl.conf et mettez les paramètres suivant à la valeur 1 :
net.ipv4.ip_forward = 1
Sauvegardez et fermez le fichier de configuration. Activez les nouveaux paramètres en utilisant la commande suivante :
# sysctl -p
Maintenant ajoutons des règles iptables. Entrez ces commandes, une à la fois :
# iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
# iptables -A FORWARD -j REJECT
Si vous utilisez un serveur dédié ou un VPS XEN ou KVM, entrez cette commande:
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
Si vous utilisez un VPS OpenVZ, entrez cette commande (n’oubliez pas d’utiliser l’adresse IP de votre serveur principal) :
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source main.ip.address
Sauvegardez les nouvelles règles iptables et redémarrez le service :
# service iptables save
# service iptables restart
Pour installer iptables-services et ajouter une règle iptables sur CentOS 7
Exécutez ces commandes:
yum install -y iptables-services
systemctl mask firewalld
systemctl enable iptables
systemctl stop firewalld
systemctl start iptables
iptables --flush
Ajoutez cette règle pour autoriser le trafic VPN. Remplacez «venet0» par le nom de votre adaptateur réseau principal. Dans la plupart des cas, il s'agit de venet0 ou eth0.
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
Enregistrer la nouvelle règle de pare-feu:
iptables-save > /etc/sysconfig/iptables
Ensuite, nous devons activer le transfert IP dans sysctl. Ouvrez sysctl.conf:
vi /etc/sysctl.conf
Localisez la ligne avec net.ipv4.ip_forward = 0 et remplacez-la par:
net.ipv4.ip_forward = 1
8- Lancer le serveur VPN
Pour que le OpenVPN se lance automatiquement lorsque vous démarrez le serveur, tapez ces commandes :
# chkconfig --add openvpn
# chkconfig openvpn on
Maintenant démarrez le service OpenVPN :
# service openvpn start
Le serveur VPN attend maintenant que des clients se connectent.
Comment installer le client OpenVPN pour windows
Téléchargez et installez la dernière version de OpenVPN pour Windows ici : https://openvpn.net/index.php/open-source/downloads.html
Ne lancez pas OpenVPN GUI à la fin de l’installation. Vous devez le configurer pour le lancer en tant qu’administrateur d’abord :
Maintenant téléchargez le fichier suivant de votre serveur vers votre ordinateur Windows :
- /etc/openvpn/easy-rsa/2.0/keys/ca.crt
- /etc/openvpn/easy-rsa/2.0/keys/johndoe.crt
- /etc/openvpn/easy-rsa/2.0/keys/johndoe.csr
- /etc/openvpn/easy-rsa/2.0/keys/johndoe.key
- usr/share/doc/openvpn-2.3.2/sample/sample-config-files/client.conf
Copiez ces 5 fichiers dans « C:\Program Files\OpenVPN\config\ » sur votre ordinateur Windows.
Créer le fichier de configuration OpenVPN
Avant d’établir une connexion à un serveur VPN, vous devez créer une configuration client avec l’extension « .ovpn ». Pour faire cela, renommez C:\Program Files\OpenVPN\config\client.conf en client.ovpn. Editez le fichier OVPN et cherchez les lignes suivantes :
remote my-server-1 1194
Remplacez « my-server-1 » par l’adresse IP de votre serveur VPN :
remote 123.123.123.123 1194
Cherchez les paramètres SSL/TLS :
ca ca.crt
cert client.crt
key client.key
Changez-les pour qu’il reflète le nom de fichier de votre certificat et de votre clé :
ca ca.crt
cert johndoe.crt
key johndoe.key
Sauvegardez et fermez le fichier OVPN.
Lancer le service OpenVPN
Si vous utilisez Windows 7 ou 8, vous devez lancer OpenVPN en tant que service sinon vous n’aurez pas les privilèges nécessaires pour modifier la configuration du réseau de votre ordinateur. Pour se faire, allez dans Panneau de Configuration > Système et Sécurité > Outils Administrateur > Services et double-clique sur OpenVPN Service :
Configurez le service pour qu’il démarre automatiquement et cliquez sur le bouton Démarrer (Start) :
Etablir une connexion à un serveur VPN
Vous pouvez maintenant exécuter OpenVPN GUI sur votre bureau Windows. Souvenez-vous de le lancer en tant qu’administrateur pour qu’il marche correctement. Une fois que OpenVPN est lancé sur votre machine, vous devriez voir une icône comme celle la apparaitre dans votre barre des taches:
Si vous faites clic droit sur l’icône OpenVPN de la barre des tâches, une liste des configurations VPN disponibles s’affichera (les fichiers OVPN). Sélectionnez le serveur VPN auquel vous souhaitez vous connecter et cliquez sur « Connect ».
Si vous avez tout fait correctement, OpenVPN GUI devrait afficher l’adresse IP qu’il reçoit du serveur VPN (10.8.0.X).
Diagnostiquer des anomalies de OpenVPN
Si vous avez des soucis pour vous connecter au serveur OpenVPN, vous pouvez essayer de le lancer sur un port commun TCP au lieu d’un port UDP 1194. Certains ISP n’autorisent pas les trafics sur un port 1194. Pour se faire, éditez /etc/openvpn/server.conf et faites les changements suivants :
port 80
proto tcp
; proto udp
Si le port 80 est déjà utilisé sur votre serveur, essayez de trouver un port disponible que votre ISP ne bloquera pas. Lorsque c’est fait, redémarrez OpenVPN :
service openvpn restart
N’oubliez pas de faire aussi les changements dans votre fichier OVPN
Si vous rencontrez encore des problèmes, vous pouvez activer l’enregistrement du débogage dans /etc/openvpn/server.conf :
log openvpn.log
verb 4
Redémarrer le service et regardez le contenu de /etc/openvpn/openvpn.log en même temps que vous essayez de vous connecter au serveur VPN :
tail -f /etc/openvpn/openvpn.log
Une fois le problème résolu, n’oubliez pas de désactiver l’enregistrement du débogage.
Consulter notre comparatif des serveurs dédiés Centos