Retour au blog

Configuration d'OpenVPN sur Ubuntu 18.04

Configuration d'OpenVPN sur Ubuntu 18.04

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 :

É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 :

Ensuite, extrayez l’archive tar :

 OpenVPN EasyRSA software

À 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 :

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 :

Utilisez votre éditeur de texte préféré pour ouvrir ce nouveau fichier :

Ensuite, trouvez les paramètres qui définissent les valeurs par défaut des champs pour les nouveaux certificats. Cela ressemblera à ceci :

Mettez à jour ces variables comme vous le souhaitez, comme indiqué ci-dessous :

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 :

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 :

Dans la sortie, il vous sera demandé de confirmer le nom commun de votre CA :

 OpenVPN build-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 :

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 :

Appelez ensuite à nouveau le script easyrsa, cette fois avec l'option gen-req, suivie du nom générique de l’ordinateur :

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/ :

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) :

Ensuite, accédez au répertoire EasyRSA sur votre machine CA :

Utilisez à nouveau le script easyrsa pour importer le fichier server.req et ajoutez son nom commun après le chemin du fichier :

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 :

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 :

 OpenVPN sign certificate for server

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 :

Transférez le fichier ca.rt vers le serveur avant de vous déconnecter de l'ordinateur de l'AC :

Ensuite, connectez-vous à nouveau à votre serveur OpenVPN et copiez les fichiers server.crt et ca.crt dans votre répertoire /etc/openvpn/ :

Ensuite, accédez à votre répertoire EasyRSA :

Saisissez le code suivant pour créer une clé Diffie-Hellman forte que vous pourrez utiliser lors de l'échange de clés :

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 :

Une fois la commande terminée, copiez les deux nouveaux fichiers dans le répertoire / 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 :

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 :

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 :

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éé :

Ensuite, utilisez une méthode sécurisée pour transférer le fichier client1.req vers votre ordinateur de l'AC :

Connectez-vous à votre ordinateur de l'AC, accédez au répertoire EasyRSA et importez la demande de certificat :

import client.req

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 :

À 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 :

sign certificate

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 :

Connectez-vous à nouveau en SSH à votre serveur OpenVPN et copiez le certificat client dans le répertoire / client-configs / keys / :

Ensuite, copiez les fichiers ca.crt et ta.key dans le répertoire / 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 :

Ouvrez le fichier de configuration du serveur dans votre éditeur de texte préféré :

Ensuite, trouvez la partie HMAC en recherchant la commande tls-auth :

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 :

En dessous, ajoutez une commande Auth pour sélectionner l'algorithme de hachage d'empreinte HMAC. SHA256 est un bon choix pour cela :

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 :

Enfin, trouvez les paramètres d'utilisateur (user) et de groupe (group) et supprimez le “;” au début de chaque ligne :

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 :

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 :

Enregistrez le fichier et fermez-le une fois terminé. Pour lire le fichier et ajuster les valeurs pour la session en cours, tapez :

sysctl -p

Ensuite, ajoutez l'interface réseau publique de votre machine :

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.

default ip route

Ouvrez le fichier /etc/ufw/before.rules pour ajouter la configuration correspondante :

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 :

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 :

À l'intérieur, recherchez la directive DEFAULT_FORWARD_POLICY et remplacez la valeur DROP par 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 :

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 :

ufw commands

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 !

 

 

author

Akshay Nagpal

Auteur · CloudSigma

Preslav Dobrev est un designer créatif chez CloudSigma, axé sur une identité commerciale cohérente à travers des canaux marketing traditionnels et innovants. Il excelle à fusionner la vision artistique avec le marketing stratégique pour créer des récits de marque percutants.

Commentaires

Aucun commentaire pour l'instant. Soyez le premier.