Présentation
Un réseau privé virtuel (VPN) crypte tout le trafic réseau, masquant les utilisateurs et les protégeant des réseaux non fiables. Il peut fournir une connexion sécurisée à un réseau d'entreprise, contourner les restrictions géographiques et vous permettre de surfer sur le Web à l'aide de réseaux Wi-Fi publics tout en préservant la confidentialité de vos données.
OpenVPN est une solution VPN SSL (Secure Socket Layer) open-source et complète.
Dans ce didacticiel, vous apprendrez à configurer OpenVPN sur un serveur CentOS 7 et à vous connecter à OpenVPN à partir d'un ordinateur client.
Prérequis
- Un serveur CentOS 7 ou CentOS 8
- Un compte utilisateur avec un accès root (sudo)
- Accès à la ligne de commande/fenêtre du terminal
- Un domaine ou un sous-domaine qui correspond à votre serveur
- Une machine cliente à partir de laquelle vous vous connecterez au serveur OpenVPN
Étape 1 :Installez OpenVPN
1. Mettez à jour les référentiels et packages CentOS en exécutant :
yum update -y
2. Vous ne pouvez pas télécharger le package OpenVPN à partir des référentiels CentOS par défaut. Cependant, OpenVPN est disponible dans le référentiel Extra Packages for Enterprise Linux (EPEL). Pour activer le référentiel EPEL, exécutez la commande :
yum install epel-release -y
3. Mettez à nouveau à jour les référentiels :
yum update -y
4. Vous pouvez maintenant installer OpenVPN avec la commande :
yum install -y openvpn
Étape 2 :Installer Easy RSA
L'étape suivante consiste à construire une infrastructure à clé publique (PKI). Pour ce faire, vous devez installer easy RSA , un utilitaire CLI pour créer et gérer une autorité de certification PKI (CA).
Easy RSA vous aide à configurer une autorité de certification (CA) interne et à générer des paires de clés SSL pour sécuriser les connexions VPN.
1. Pour télécharger le package RSA facile, utilisez le wget
commande. Si vous n'avez pas wget sur votre système CenOS, installez-le en exécutant :
yum install -y wget
2. Au moment de la rédaction, la dernière version de l'utilitaire CLI est la 3.0.8, que nous allons télécharger. Pour utiliser une autre version, consultez la page de publication d'easy RSA sur GitHub.
wget https://github.com/OpenVPN/easy-rsa/archive/v3.0.8.tar.gz
3. Ensuite, extrayez l'archive téléchargée :
tar -xf v3.0.8.tar.gz
4. Créez et déplacez-vous vers un nouveau openvpn répertoire :
cd /etc/openvpn/
5. Ensuite, créez un sous-répertoire easy-rsa
sous le chemin /etc/openvpn
:
mkdir /etc/openvpn/easy-rsa
6. Déplacez le répertoire extrait dans /etc/openvpn/easy-rsa :
mv /root/easy-rsa-3.0.8 /etc/openvpn/easy-rsa
Pour vérifier si vous avez réussi à tout déplacer depuis easy-rsa-3.0.8 répertoire, déplacez-vous dans easy-rsa avec cd /etc/openvpn/easy-rsa
et listez le contenu avec ls
. Vous devriez voir une liste de fichiers et de dossiers, comme dans l'image ci-dessous.
Étape 3 :Configurer OpenVPN
Une fois que vous avez installé OpenVPN et Easy RSA, vous pouvez passer à la configuration du serveur OpenVPN.
Les instructions de cette section vous aident à configurer la configuration de base. Vous pouvez le modifier selon vos besoins.
Avant d'exécuter l'une des commandes, assurez-vous de revenir au répertoire racine. Pour ce faire, tapez cd
dans la fenêtre du terminal et appuyez sur Entrée .
1. La première étape consiste à copier l'exemple server.conf fichier du répertoire de documentation d'OpenVPN :
cp /usr/share/doc/openvpn-2.4.9/sample/sample-config-files/server.conf /etc/openvpn
Si vous ne trouvez pas l'exemple de fichier de configuration OpenVPN, recherchez son emplacement à l'aide de find
commande :
find / -name server.conf
2. Ensuite, ouvrez le fichier de configuration copié avec un éditeur de texte de votre choix :
vi etc/openvpn/server.conf
La commande ouvre l'exemple de fichier de configuration OpenVPN. Les commentaires dans le fichier commencent par un hashtag # ou un point-virgule ;
.
3. Pour mettre en place la configuration de base, vous devez décommenter les lignes suivantes en supprimant les points-virgules.
topology subnet
(fait fonctionner l'installation d'OpenVPN comme un sous-réseau)push "redirect-gateway def1 bypass-dhcp"
(ordonne au client de rediriger le trafic via le serveur OpenVPN)push "dhcp-option DNS 208.67.222.222"
(utilise un résolveur OpenDNS pour se connecter à OpenVPN)push "dhcp-option DNS 208.67.220.220"
(utilise un résolveur OpenDNS pour se connecter à OpenVPN)user nobody
(exécute OpenVPN sans privilèges)group nobody
(exécute OpenVPN sans privilèges)
4. Ensuite, générez une clé de chiffrement statique pour activer l'authentification TLS. Pour ce faire, localisez la ligne tls-auth ta.key 0
et commentez-le en ajoutant ;
devant elle. Ensuite, ajoutez une nouvelle ligne en dessous :
tls-crypt myvpn.tlsauth
5. Enregistrez et quittez le fichier de configuration.
6. Enfin, générez la clé de chiffrement statique spécifiée dans le fichier avec la commande :
openvpn --genkey --secret /etc/openvpn/myvpn.tlsauth
Étape 4 :Générer des clés et des certificats
1. Créez une vars fichier de configuration en utilisant vars.example stocké dans /easy-rsa/easyrsa3 annuaire. Déplacez-vous dans le répertoire mentionné avec :
cd /etc/openvpn/easy-rsa/easyrsa3
2. Vous pouvez lister le contenu en utilisant le ls
commande pour vérifier si vous avez le vars.example fichier.
3. Copiez le fichier d'exemple vars.example sous le nom vars :
cp vars.example vars
Si vous listez à nouveau les fichiers dans le répertoire, vous devriez avoir un vars séparé fichier que vous pouvez utiliser pour configurer Easy RSA.
4. Ouvrez les vars fichier dans un éditeur de texte de votre choix :
vi vars
5. Faites défiler le fichier et recherchez les lignes répertoriées ci-dessous.
#set_var EASYRSA_REQ_COUNTRY "US"
#set_var EASYRSA_REQ_PROVINCE "California"
#set_var EASYRSA_REQ_CITY "San Francisco"
#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"
#set_var EASYRSA_REQ_EMAIL "[email protected]"
#set_var EASYRSA_REQ_OU "My Organizational Unit"
6. Décommentez les lignes en supprimant #
et remplacez les valeurs par défaut par vos informations.
7. Ensuite, recherchez la ligne spécifiant le KEY_NAME et changez-le en "server"
:
export KEY_NAME="server"
8. Enfin, modifiez KEY_CN au domaine ou au sous-domaine qui résout votre serveur.
export KEY_CN=openvpn.yourdomain.com
9. Enregistrez et fermez le fichier.
10. Nettoyez toutes les clés précédentes et générez l'autorité de certification :
./easyrsa clean-all
11. Maintenant, vous pouvez passer à la construction de l'autorité de certification avec le build-ca
scénario. Exécutez la commande :
./easyrsa build-ca
Il vous sera demandé de définir une phrase de passe de clé d'autorité de certification et un nom commun pour votre autorité de certification.
12. Créez une clé et un certificat pour le serveur :
./easyrsa build-server-full server
13. Ensuite, générez un fichier d'échange de clés Diffie-Hellman en exécutant :
./easyrsa gen-dh
14. Vous avez également besoin d'un certificat pour chaque client. Générez-les sur le serveur puis copiez-les sur la machine cliente.
Avec la commande suivante, nous créons un certificat et une clé pour client1 . Vous pouvez modifier la commande en utilisant un nom de votre choix.
./easyrsa build-client-full client1
15. Une fois que vous avez généré les clés et les certificats, copiez-les depuis pki dans openvpn annuaire. Pour ce faire, accédez au pki répertoire en exécutant :
cd /etc/openvpn/easy-rsa/easyrsa3/pki
Vous devez copier quatre fichiers au total :
- ca.crt
- dh.pem
- ca.key
- server.key
Les deux premiers fichiers (ca.crt et dh.pem ) sont stockés dans le pki répertoire, tandis que ca.key et server.key sont dans un sous-répertoire pki/private .
Par conséquent, copiez ca.crt et dh.pem dans openvpn répertoire en premier :
cp ca.crt dh.pem /etc/openvpn
Ensuite, déplacez-vous dans le sous-répertoire private , et copiez ca.key et server.key en lançant :
cd private
cp ca.key server.key/etc/openvpn
Étape 5 :Configuration du pare-feu et du routage
Définir des règles de pare-feu
1. Commencez par vérifier votre zone de pare-feu active :
firewall-cmd --get-active-zones
La sortie affichera votre zone pare-feu. Dans l'exemple ci-dessous, il est public .
2. Ajoutez le openvpn service à la liste des services que firewalld autorise dans la zone active. La zone active dans notre exemple est public . Si votre zone active est approuvée, modifiez la commande en conséquence.
firewall-cmd --zone=public --add-service openvpn
3. Ensuite, rendez les paramètres ci-dessus permanents en exécutant la commande :
firewall-cmd --zone=public --add-service openvpn --permanent
4. Pour vérifier si le service openvpn a été ajouté, utilisez :
firewall-cmd --list-services --zone=public
5. Ensuite, ajoutez un mascarade à l'instance d'exécution :
firewall-cmd --add-masquerade
6. Et rendez-le permanent :
firewall-cmd --add-masquerade --permanent
7. Vérifiez que le mascarade a été ajouté en exécutant :
firewall-cmd --query-masquerade
La sortie doit répondre par yes
.
Routage de la configuration
Une fois que vous avez terminé les étapes ci-dessus, passez au routage vers votre sous-réseau OpenVPN.
1. Créez une variable qui représente l'interface réseau principale utilisée par votre serveur. Dans la commande ci-dessous, la variable est nommée VAR
. Cependant, vous pouvez créer une variable sous le nom de votre choix.
VAR=$(ip route get 208.67.222.222 | awk 'NR==1 {print $(NF-2)}')
2. Ensuite, ajoutez définitivement la règle de routage à l'aide de la variable créée ci-dessus :
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $VAR -j MASQUERADE
3. Rechargez firewalld pour que les modifications aient lieu :
firewall-cmd --reload
4. Passez au routage de tout le trafic Web du client vers l'adresse IP du serveur en activant le transfert IP. Ouvrez le fichier sysctl.conf fichier :
vi /etc/sysctl.conf
5. Ajoutez la ligne suivante en haut du fichier :
net.ipv4.ip_forward = 1
6. Enfin, redémarrez le service :
systemctl restart network.service
Étape 6 :Démarrer OpenVPN
1. Pour démarrer le service OpenVPN, exécutez la commande :
systemctl -f start [email protected]
2. Ensuite, activez-le pour qu'il démarre au démarrage en exécutant :
systemctl -f enable [email protected]
3. Vérifiez que le service est actif avec :
systemctl status [email protected]
La sortie doit répondre que le service OpenVPN pour le serveur est actif (en cours d'exécution) .
Étape 7 :Configurer un client OpenVPN
Avec tout configuré sur le serveur OpenVPN, vous pouvez configurer votre machine cliente et la connecter au serveur.
Comme mentionné à l'étape 4, chaque ordinateur client doit disposer de copies locales du certificat CA, de la clé client, du certificat SSL et de la clé de chiffrement.
1. Recherchez et copiez les fichiers suivants du serveur vers l'ordinateur client :
- /etc/openvpn/easy-rsa/easyrsa3/pki/ca.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/client.crt
- /etc/openvpn/easy-rsa/easyrsa3/pki/private/client.key
- /etc/openvpn/myvpn.tlsauth
2. Ensuite, créez un fichier de configuration pour le client OpenVPN sous le nom client.ovpn sur la machine client :
vi client.ovpn
3. Ajoutez le contenu suivant au fichier :
client
tls-client
ca /path/to/ca.crt
cert /path/to/client.crt
key /path/to/client.key
tls-crypt /path/to/myvpn.tlsauth
remote-cert-eku "TLS Web Client Authentication"
proto udp
remote your_server_ip 1194 udp
dev tun
topology subnet
pull
user nobody
group nobody
Assurez-vous de remplacer les parties en gras par vos valeurs respectées.
4. Enregistrez et fermez le fichier.
Étape 8 :Connecter un client à OpenVPN
Les instructions sur la façon de se connecter à OpenVPN diffèrent selon le système d'exploitation de votre ordinateur client.
Pour les utilisateurs de Linux
Pour vous connecter à OpenVPN, exécutez la commande :
openvpn --config /path/to/client.ovpn
Pour les utilisateurs de Windows
1. Tout d'abord, copiez le client.ovpn fichier de configuration dans C:Program FilesOpenVPNconfig répertoire.
2. Téléchargez et installez l'application OpenVPN. Vous pouvez trouver la dernière version sur la page Téléchargements de la communauté OpenVPN. Une fois l'application installée, lancez OpenVPN.
3. Cliquez avec le bouton droit sur l'icône de la barre d'état système OpenVPN et sélectionnez Se connecter . Pour effectuer cette tâche, vous avez besoin de privilèges administratifs.
Pour les utilisateurs de macOS
Vous pouvez vous connecter à OpenVPN à partir d'un système macOS à l'aide de Tunnelblick (une interface utilisateur graphique open source pour OpenVPN sur OS X et macOS).
Avant de lancer Tunnelblick, assurez-vous de stocker le client.ovpn fichier de configuration dans le répertoire ~/Library/Application Support/Tunnelblick/Configurations .