Introduction
Souhaitez-vous accéder à Internet en toute sécurité depuis votre smartphone ou votre ordinateur portable lorsque vous vous connectez à un réseau non fiable (par exemple, le Wi-Fi d’un hôtel ou d’un café) ? Heureusement, il existe un moyen de réaliser vos souhaits. Vous pouvez vous connecter en toute sécurité à un réseau non fiable comme si vous étiez sur un réseau privé en utilisant un Réseau Privé Virtuel (VPN).
Qu’est-ce qu’un VPN ?
VPN signifie Virtual Private Network (Réseau Privé Virtuel). Il offre la possibilité d’ouvrir un tunnel sécurisé vers un serveur de confiance. Toutes les requêtes sont ensuite envoyées et reçues via ce serveur. L’avantage est de sécuriser vos accès et vos transactions lors de l’utilisation de réseaux publics tels que le Wi-Fi gratuit d’un hôtel.
Grâce au VPN, toutes les données sont chiffrées et traitées via le serveur. Les appareils intermédiaires, tels que les routeurs tiers et autres, n’ont aucun moyen de rediriger le trafic vers des destinations indésirables. De plus, une fois la connexion établie avec succès, vous faites partie du réseau du serveur. D’autres serveurs, ordinateurs ou appareils tels que des imprimantes qui ne seraient normalement accessibles que dans le réseau local du serveur peuvent désormais également être atteints via le tunnel VPN. Cependant, comme toutes les données ne doivent pas nécessairement être envoyées via un tunnel chiffré, il est possible de configurer le client VPN pour que seule une partie définie des requêtes soit envoyée via le tunnel VPN. Le reste du trafic est traité normalement sur Internet.
Dans ce tutoriel, nous vous guiderons à travers les étapes de configuration d’un serveur OpenVPN sur Ubuntu 18.04.
Prérequis
Vous devez avoir accès à un serveur Ubuntu 18.04 pour héberger votre OpenVPN service afin de compléter ce tutoriel. Avant de commencer ce guide, vous devez également configurer un utilisateur non-root avec des privilèges sudo. Vous pouvez facilement installer votre serveur en suivant notre tutoriel sur la configuration d’un serveur Ubuntu.
De plus, vous aurez besoin d’un ordinateur distinct pour faire office d’une autorité de certification (CA). Techniquement, vous pouvez utiliser votre serveur OpenVPN ou votre ordinateur local comme autorité de certification. Cependant, nous ne le recommandons pas car cela exposerait votre VPN à des failles de sécurité. Selon la documentation officielle d’OpenVPN, vous devriez placer l’autorité de certification sur un ordinateur séparé dédié à l’importation et à la signature des demandes de certificat. Ainsi, nous supposons que votre autorité de certification se trouve sur un serveur Ubuntu 18.04 distinct qui dispose également d’un utilisateur non-root avec des privilèges sudo et d’un pare-feu de base. Tout au long de ce guide, toutes les étapes d’installation et de configuration seront aussi simples que possible pour chacune des installations. Vous pouvez également jeter un œil à notre tutoriel sur la configuration d’un serveur OpenVPN sous Docker.
Étape 1 – Installer OpenVPN et EasyRSA
Tout d’abord, mettez à jour l’index des paquets de votre serveur VPN et installez OpenVPN. Vous pouvez installer OpenVPN en utilisant apt car il est disponible dans les dépôts par défaut d’Ubuntu :
|
1 2 |
sudo apt update sudo apt install openvpn |
Étape 2 : Créer une autorité de certification
Créez une autorité de certification (CA) simple pour émettre des certificats de confiance pour le serveur OpenVPN. Pour ce faire, téléchargez la dernière version d’EasyRSA sur votre machine CA et votre serveur OpenVPN à l’aide de wget. Pour obtenir la dernière version, accédez à la page Releases du projet officiel projet GitHub EasyRSA, copiez le lien de téléchargement pour le fichier se terminant par .tgz et collez-le dans la commande suivante :
|
1 |
wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz <span class="s1">--no-check-certificate</span> |
Ensuite, extrayez l’archive tar :
|
1 2 |
cd ~ tar xvf EasyRSA-3.0.4.tgz |

À ce stade, tous les logiciels requis ont été installés avec succès sur votre ordinateur CA et votre serveur.
Étape 3 – Configurer les variables EasyRSA et créer la CA
EasyRSA est fourni avec un fichier de configuration que vous pouvez modifier pour définir un certain nombre de variables pour votre CA à l’aide de cette commande :
|
1 |
cd ~/EasyRSA-3.0.4/ |
Il existe un fichier dans le répertoire nommé vars.example. Faites une copie de ce fichier et nommez la copie vars sans extension de fichier :
|
1 |
cp vars.example vars |
Utilisez votre éditeur de texte préféré pour ouvrir ce nouveau fichier :
|
1 |
nano vars |
Ensuite, trouvez les paramètres qui définissent les valeurs par défaut des champs pour les nouveaux certificats. Cela ressemblera à ceci :
|
1 2 3 4 5 6 |
#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 "me@example.net" #set_var EASYRSA_REQ_OU "My Organizational Unit" |
Mettez à jour ces variables comme vous le souhaitez, comme indiqué ci-dessous :
|
1 2 3 4 5 6 |
set_var EASYRSA_REQ_COUNTRY "SL" set_var EASYRSA_REQ_PROVINCE "Zurich" set_var EASYRSA_REQ_CITY "Zurich City" set_var EASYRSA_REQ_ORG "CloudSigma" set_var EASYRSA_REQ_EMAIL "admin@example.com" set_var EASYRSA_REQ_OU "Community" |
Enregistrez et fermez le fichier une fois que vous êtes prêt. L'étape suivante consiste à appeler le script easyrsa et à l'exécuter avec l'option init-pki pour initialiser l'infrastructure à clés publiques sur le serveur CA :
|
1 |
./easyrsa init-pki |

Ensuite, exécutez la commande build-ca avec l'option nopass afin de ne pas être invité à saisir un mot de passe à chaque fois que vous interagissez avec votre CA :
|
1 |
./easyrsa build-ca nopass |
Dans la sortie, il vous sera demandé de confirmer le nom commun de votre CA :

Avec cela, votre CA est en place et elle est prête à commencer à signer les demandes de certificat.
Étape 4 – Générer le certificat du serveur, la clé et les fichiers de chiffrement
Une fois la CA prête, vous pouvez générer la clé privée et la demande de certificat depuis le serveur, puis l'envoyer à la CA pour signature en créant le certificat requis. Tout d'abord, accédez au répertoire EasyRSA sur le serveur OpenVPN :
|
1 |
cd EasyRSA-3.0.4 |
De là, exécutez le script easyrsa avec l'option init-pki. Bien que vous ayez déjà exécuté cette commande sur la machine CA, cette commande doit également être exécutée ici. C'est parce que les répertoires PKI du serveur et de la CA sont différents :
|
1 |
./easyrsa init-pki |
Appelez ensuite à nouveau le script easyrsa, cette fois avec l'option gen-req, suivie du nom générique de l’ordinateur :
|
1 |
./easyrsa gen-req server nopass |
Cela créera une clé privée pour le serveur et un fichier de demande de certificat nommé server.req. Copiez la clé du serveur dans le répertoire /etc/openvpn/ :
|
1 |
sudo cp ~/EasyRSA-3.0.4/pki/private/server.key /etc/openvpn/ |
Transférez le fichier server.req vers votre machine CA à l'aide d'une méthode sécurisée (comme SCP dans l'exemple suivant) :
|
1 |
scp ~/EasyRSA-3.0.4/pki/reqs/server.req cloudsigma@your_CA_ip:/tmp |
Ensuite, accédez au répertoire EasyRSA sur votre machine CA :
|
1 |
cd EasyRSA-3.0.4/ |
Utilisez à nouveau le script easyrsa pour importer le fichier server.req et ajoutez son nom commun après le chemin du fichier :
|
1 |
./easyrsa import-req /tmp/server.req server |
Ensuite, signez la demande en exécutant le script easyrsa avec l'option sign-req suivie du type de demande et du nom commun. Pour la demande de certificat du serveur OpenVPN, assurez-vous d'utiliser le type de demande server :
|
1 |
./easyrsa sign-req server server |
La sortie vous invite à vérifier que la demande provient d'une source fiable. Saisissez yes et appuyez sur Entrée pour confirmer. Veuillez vérifier les détails affichés ci-dessous pour vous assurer de leur exactitude. Veuillez noter que cette demande n'a pas encore été vérifiée par mot de passe.
Demandez le sujet et signez-le en tant que certificat de serveur pour 3650 jours :

Si vous avez chiffré la clé de l'AC, le mot de passe vous sera demandé à ce stade. Ensuite, utilisez une méthode sécurisée pour transférer le certificat signé vers votre serveur VPN :
|
1 |
scp pki/issued/server.crt siigma@your_server_ip:/tmp |
Transférez le fichier ca.rt vers le serveur avant de vous déconnecter de l'ordinateur de l'AC :
|
1 |
scp pki/ca.crt siigma@our_server_ip:/tmp |
Ensuite, connectez-vous à nouveau à votre serveur OpenVPN et copiez les fichiers server.crt et ca.crt dans votre répertoire /etc/openvpn/ :
|
1 |
sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/ |
Ensuite, accédez à votre répertoire EasyRSA :
|
1 |
cd ~/EasyRSA-3.0.4/ |
Saisissez le code suivant pour créer une clé Diffie-Hellman forte que vous pourrez utiliser lors de l'échange de clés :
|
1 |
./easyrsa gen-dh |
Une fois terminé, générez une signature HMAC pour améliorer la fonctionnalité de contrôle de l’état de santé TLS du serveur :
|
1 |
openvpn --genkey --secret ta.key |
Une fois la commande terminée, copiez les deux nouveaux fichiers dans le répertoire / etc / openvpn / :
|
1 2 |
sudo cp ~/EasyRSA-3.0.4/ta.key /etc/openvpn/ sudo cp ~/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/ |
De cette manière, tous les certificats et fichiers de clés requis par le serveur sont générés. Maintenant, vous pouvez créer le certificat et la clé appropriés que l'ordinateur client utilisera pour accéder au serveur OpenVPN.
Étape 4 – Générer le certificat client et la paire de clés
Ensuite, nous allons créer une clé client et plusieurs certificats. Si vous avez plusieurs clients, vous pouvez répéter ce processus pour chaque client. Notez cependant que vous devez transmettre une valeur de nom unique au script pour chaque client. Dans ce tutoriel, nous nommerons la première paire certificat/clé client1. Tout d'abord, créez une structure de répertoires dans votre répertoire personnel pour stocker les certificats clients et les fichiers de clés :
|
1 |
mkdir -p ~/client-configs/keys |
Puisque vous enregistrez la paire certificat/clé et le fichier de configuration du client dans ce répertoire pour des raisons de sécurité, vous devez maintenant révoquer les autorisations :
|
1 |
chmod -R 700 ~/client-configs |
Ensuite, revenez au répertoire EasyRSA et exécutez le script easyrsa avec les options gen-req et nopass ainsi que le nom générique du client :
|
1 2 |
cd ~/EasyRSA-3.0.4/ ./easyrsa gen-req client1 nopass |
Appuyez sur Entrée pour confirmer le nom commun. Après cela, copiez le fichier client1.key dans le répertoire / client-configs / keys / précédemment créé :
|
1 |
cp pki/private/client1.key ~/client-configs/keys/ |
Ensuite, utilisez une méthode sécurisée pour transférer le fichier client1.req vers votre ordinateur de l'AC :
|
1 |
scp pki/reqs/client1.req sigma@your_CA_ip:/tmp |
Connectez-vous à votre ordinateur de l'AC, accédez au répertoire EasyRSA et importez la demande de certificat :
|
1 2 3 |
ssh siigma@your_CA_ip cd EasyRSA-3.0.4/ ./easyrsa import-req /tmp/client1.req client1 |

Ensuite, comme à l'étape précédente, signez la demande sur le serveur. Mais cette fois, vous devez spécifier le type de demande client :
|
1 |
./easyrsa sign-req client client1 |
À l'invite, saisissez yes pour confirmer que vous souhaitez signer la demande de certificat et que celle-ci provient d'une source fiable. Veuillez saisir le mot “yes” pour continuer ou saisir n'importe quoi d'autre pour l'annuler :
|
1 |
Confirm Request Details: Yes |

Si vous avez chiffré la clé de l'AC, il vous sera également demandé de saisir le mot de passe ici. Cela créera un fichier de certificat client nommé client1.crt. Transférez ce fichier vers le serveur :
|
1 |
scp pki/issued/client1.crt siigma@your_server_ip:/tmp |
Connectez-vous à nouveau en SSH à votre serveur OpenVPN et copiez le certificat client dans le répertoire / client-configs / keys / :
|
1 |
cp /tmp/client1.crt ~/client-configs/keys/ |
Ensuite, copiez les fichiers ca.crt et ta.key dans le répertoire / client-configs / keys / :
|
1 2 |
cp ~/EasyRSA-3.0.4/ta.key ~/client-configs/keys/ sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/ |
En même temps, tous les certificats et clés du serveur et du client ont été générés et enregistrés dans les répertoires correspondants sur le serveur. Vous pouvez maintenant continuer à configurer OpenVPN sur le serveur.
Étape 5 – Configuration du service OpenVPN
Après avoir généré les certificats client et serveur, vous pouvez configurer le service OpenVPN pour utiliser ces identifiants. Tout d'abord, copiez l'exemple de fichier de configuration OpenVPN dans votre répertoire de configuration, puis extrayez-le pour l'utiliser comme base de configuration :
|
1 2 |
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ sudo gzip -d /etc/openvpn/server.conf.gz |
Ouvrez le fichier de configuration du serveur dans votre éditeur de texte préféré :
|
1 |
sudo nano /etc/openvpn/server.conf |
Ensuite, trouvez la partie HMAC en recherchant la commande tls-auth :
|
1 |
tls-auth ta.key 0 # Ce fichier est secret |
Trouvez la partie mot de passe en recherchant la ligne de mot de passe commentée. Le chiffrement AES-256-CBC offre un bon niveau de chiffrement et est bien pris en charge. La ligne ne devrait pas être commentée, mais si elle ne l'est pas, supprimez le “;” devant :
|
1 |
cipher AES-256-CBC |
En dessous, ajoutez une commande Auth pour sélectionner l'algorithme de hachage d'empreinte HMAC. SHA256 est un bon choix pour cela :
|
1 |
auth SHA256 |
Ensuite, trouvez la ligne contenant l'instruction dh qui définit les paramètres Diffie-Hellman. En raison de modifications récentes apportées à EasyRSA, le nom du fichier de clé Diffie-Hellman peut être différent de celui indiqué dans l'exemple de fichier de configuration du serveur. Si nécessaire, modifiez le nom de fichier indiqué ici en supprimant 2048 pour l'aligner avec la clé de l'étape précédente :
|
1 |
dh dh.pem |
Enfin, trouvez les paramètres d'utilisateur (user) et de groupe (group) et supprimez le “;” au début de chaque ligne :
|
1 2 |
user nobody group nogroup |
Jusqu'à présent, les modifications que vous avez apportées à l'exemple de fichier server.conf devraient permettre à OpenVPN de fonctionner.
Étape 6 – Configuration réseau du serveur
Configurez le transfert IP pour acheminer correctement le trafic via le VPN. C'est essentiel pour la fonctionnalité VPN fournie par votre serveur :
|
1 |
sudo nano /etc/sysctl.conf |
Recherchez la ligne commentée qui définit net.ipv4.ip_forward. Supprimez le caractère “#” au début de la ligne pour décommenter ce paramètre :
|
1 |
net.ipv4.ip_forward=1 |
Enregistrez le fichier et fermez-le une fois terminé. Pour lire le fichier et ajuster les valeurs pour la session en cours, tapez :
|
1 |
sudo sysctl -p |

Ensuite, ajoutez l'interface réseau publique de votre machine :
|
1 |
ip route | grep default |
Votre interface publique est la chaîne de caractères dans la sortie de cette commande qui suit le mot “dev”. Par exemple, ce résultat montre l'interface nommée ens3.

Ouvrez le fichier /etc/ufw/before.rules pour ajouter la configuration correspondante :
|
1 |
$ sudo nano /etc/ufw/before.rules |
Vers le haut du fichier, ajoutez les lignes surbrillantes ci-dessous pour définir la politique par défaut pour la chaîne POSTROUTING dans la table nat et masquer tout le trafic provenant du VPN. Remplacez ens3 dans la ligne -A POSTROUTING ci-dessous par l'interface que vous avez trouvée dans la commande ci-dessus :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# rules.before # Règles qui doivent être exécutées avant les règles ajoutées par la ligne de commande ufw. Les règles # personnalisées doivent être ajoutées à l'une de ces chaînes : # ufw-before-input # ufw-before-output # ufw-before-forward # DÉBUT DES RÈGLES OPENVPN # Règles de la table NAT *nat :POSTROUTING ACCEPT [0:0] # Autoriser le trafic du client OpenVPN vers wlp11s0 (remplacez par l'interface que vous avez découverte !) -A POSTROUTING -s 10.8.0.0/8 -o ens3 -j MASQUERADE COMMIT # FIN DES RÈGLES OPENVPN # Ne supprimez pas ces lignes requises, sinon il y aura des erreurs . . . |
Sauvegardez le fichier et fermez-le une fois terminé. Ensuite, vous devez également configurer UFW pour autoriser les paquets transférés par défaut. Pour ce faire, ouvrez le fichier /etc/default/ufw :
|
1 |
sudo nano /etc/default/ufw |
À l'intérieur, recherchez la directive DEFAULT_FORWARD_POLICY et remplacez la valeur DROP par ACCEPT :
|
1 |
DEFAULT_FORWARD_POLICY="ACCEPT" |
Sauvegardez et fermez le fichier lorsque vous avez terminé. Ensuite, ajustez le pare-feu pour autoriser le trafic vers OpenVPN. Si vous n'avez pas modifié le port et le protocole dans le fichier /etc/openvpn/server.conf, vous devrez ouvrir le trafic UDP vers le port 1194. Si vous avez modifié le port et/ou le protocole, remplacez-les par les valeurs que vous avez choisies ici. Si vous avez oublié d'ajouter le port SSH lors du tutoriel prérequis, ajoutez-le également ici :
|
1 2 |
sudo ufw allow 1194/udp sudo ufw allow OpenSSH |
Après avoir ajouté ces règles, désactivez et réactivez UFW pour le redémarrer et charger les modifications de tous les fichiers que vous avez modifiés :
|
1 2 |
sudo ufw disable sudo ufw enable |

Félicitations, votre serveur est maintenant configuré pour gérer correctement le trafic OpenVPN !
Conclusion
Si vous avez suivi ce tutoriel jusqu'au bout, vous êtes désormais en mesure de naviguer sur Internet en toute sécurité. Vous pourrez garder votre identité, votre emplacement et votre trafic à l'abri des regards indiscrets.
Bonne informatique !
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.