Tutorial

Comment mettre en place et configurer un serveur OpenVPN sur Ubuntu 20.04

Published on May 28, 2020
Français
Comment mettre en place et configurer un serveur OpenVPN sur Ubuntu 20.04

Introduction

Un réseau privé virtuel (VPN) vous permet de traverser des réseaux non fiables comme si vous étiez sur un réseau privé. Il vous donne la liberté d’accéder à l’internet en toute sécurité depuis votre smartphone ou votre ordinateur portable lorsque vous êtes connecté à un réseau non sécurisé, comme le WiFi d’un hôtel ou d’un café.

Combinée aux connexions HTTPS, cette configuration vous permet de sécuriser vos connexions et transactions sans fil. Vous pouvez contourner les restrictions géographiques et la censure, et protéger votre emplacement et tout trafic HTTP non crypté contre les réseaux non fiables.

OpenVPN est une solution VPN de sécurité de la couche transport (TLS) complète et open-source qui s’adapte à un large éventail de configurations. Dans ce tutoriel, vous allez installer OpenVPN sur un serveur Ubuntu 20.04, puis le configurer pour qu’il soit accessible depuis une machine cliente.

Remarque : si vous prévoyez de configurer un serveur OpenVPN sur une Droplet DigitalOcean, sachez que, comme de nombreux fournisseurs d’hébergement, nous facturons les dépassements de bande passante. Veillez donc à surveiller la quantité de trafic gérée par votre serveur.

Consultez cette page pour plus d’informations.

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin de :

Remarque : Bien qu’il soit techniquement possible d’utiliser votre serveur OpenVPN ou votre machine locale comme autorité de certification, cela n’est pas recommandé car cela ouvre votre VPN à certaines vulnérabilités de sécurité. Selon la documentation officielle d’OpenVPN, vous devez placer votre AC sur une machine autonome qui est dédiée à l’importation et à la signature des demandes de certificats. Pour cette raison, ce guide suppose que votre AC se trouve sur un serveur Ubuntu 20.04 séparé qui a également un utilisateur non root avec des privilèges sudo et un pare-feu de base activé.

En plus de cela, vous aurez besoin d’une machine cliente que vous utiliserez pour vous connecter à votre serveur OpenVPN. Dans ce guide, nous appellerons cela le Client OpenVPN. Pour les besoins de ce tutoriel, il est recommandé d’utiliser votre machine locale comme client OpenVPN.

Une fois ces conditions préalables réunies, vous êtes prêt à commencer à installer et à configurer un serveur OpenVPN sur Ubuntu 20.04.

Remarque : Veuillez noter que si vous désactivez l’authentification par mot de passe lors de la configuration de ces serveurs, vous pourriez rencontrer des difficultés lors du transfert de fichiers entre eux plus loin dans ce guide. Pour résoudre ce problème, vous pourrez réactiver l’authentification par mot de passe sur chaque serveur. Sinon, vous pourrez générer une paire de clés SSH pour chaque serveur, puis ajouter la clé SSH publique du serveur OpenVPN au fichier authorized_keys de la machine AC et vice versa. Consultez Comment configurer des clés SSH sur Ubuntu 20.04 pour obtenir des instructions sur la manière d’exécuter l’une ou l’autre de ces solutions.

Étape 1 - Installation d’OpenVPN et d’Easy-RSA

La première étape de ce tutoriel consiste à installer OpenVPN et Easy-RSA. Easy-RSA est un outil de gestion de l’infrastructure à clé publique (ICP) que vous utiliserez sur le serveur OpenVPN pour générer une demande de certificat que vous vérifierez et signerez ensuite sur le serveur de l’AC.

Pour commencer, mettez à jour l’index des paquets de votre serveur OpenVPN et installez OpenVPN et Easy-RSA. Les deux paquets sont disponibles dans les référentiels par défaut d’Ubuntu. Vous pouvez donc utiliser apt pour l’installation :

  1. sudo apt update
  2. sudo apt install openvpn easy-rsa

Ensuite, vous devrez créer un nouveau répertoire sur le serveur OpenVPN en tant qu’utilisateur non root appelé ~/easy-rsa :

  1. mkdir ~/easy-rsa

Vous devez maintenant créer un lien symbolique à partir du site easyrsa que le paquet a installé dans le répertoire ~/easy-rsa que vous venez de créer :

  1. ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Remarque : alors que d’autres guides peuvent vous demander de copier les fichiers du package easy-rsa dans votre répertoire ICP, ce tutoriel adopte une approche par lien symbolique. Par conséquent, toute mise à jour du paquet easy-rsa sera automatiquement répercutée dans les scripts de votre ICP.

Enfin, assurez-vous que le propriétaire du répertoire est votre utilisateur sudo non root et limitez l’accès à cet utilisateur en utilisant chmod:

  1. sudo chown sammy ~/easy-rsa
  2. chmod 700 ~/easy-rsa

Une fois ces programmes installés et déplacés aux bons endroits sur votre système, l’étape suivante consiste à créer une infrastructure à clé publique (ICP) sur le serveur OpenVPN afin que vous puissiez demander et gérer les certificats TLS pour les clients et les autres serveurs qui se connecteront à votre VPN.

Étape 2 - Création d’une ICP pour OpenVPN

Avant de pouvoir créer la clé privée et le certificat de votre serveur OpenVPN, vous devez créer un répertoire local de l’infrastructure à clé publique sur votre serveur OpenVPN. Vous utiliserez ce répertoire pour gérer les demandes de certificats du serveur et des clients au lieu de les faire directement sur votre serveur AC.

Pour créer un répertoire ICP sur votre serveur OpenVPN, vous devez remplir un fichier appelé vars avec quelques valeurs par défaut. Tout d’abord, vous allez cd dans le répertoire easy-rsa, puis vous allez créer et modifier le fichier vars avec nano ou votre éditeur de texte préféré.

  1. cd ~/easy-rsa
  2. nano vars

Une fois le fichier ouvert, collez les deux lignes suivantes :

~/easy-rsa/vars
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"

Ce sont les deux seules lignes dont vous avez besoin dans ce fichier vars sur votre serveur OpenVPN car il ne sera pas utilisé en tant qu’autorité de certification. Elles garantiront que vos clés privées et vos demandes de certificats sont configurées pour utiliser la cryptographie sur les courbes elliptiques (ECC) afin de générer des clés et des signatures sécurisées pour vos clients et le serveur OpenVPN.

Configurer vos serveurs OpenVPN & AC pour utiliser l’ECC signifie que lorsqu’un client et un serveur tentent d’établir une clé symétrique partagée, ils peuvent utiliser des algorithmes de courbe elliptique pour effectuer leur échange. L’utilisation de l’ECC pour un échange de clés est nettement plus rapide que l’utilisation de la méthode de Diffie-Hellman avec l’algorithme RSA classique, car les nombres sont beaucoup plus petits et les calculs sont plus rapides.

Contexte : Lorsque les clients se connectent à OpenVPN, ils utilisent un cryptage asymétrique (également appelé clé publique/privée) pour effectuer une poignée de main du TLS. Cependant, lors de la transmission de trafic VPN crypté, le serveur et les clients utilisent un cryptage symétrique, également connu sous le nom de cryptage à clé partagée.

Le cryptage symétrique réduit considérablement les coûts de calcul par rapport au cryptage asymétrique : les nombres utilisés sont beaucoup plus petits et les processeurs modernes intègrent des instructions pour effectuer des opérations de cryptage symétriques optimisées. Pour passer d’un cryptage asymétrique à un cryptage symétrique, le serveur et le client OpenVPN utiliseront l’algorithme ECDH (Elliptic Curve Diffie-Hellman) pour se mettre d’accord sur une clé secrète partagée le plus rapidement possible.

Une fois que vous avez rempli le fichier vars, vous pouvez procéder à la création du répertoire ICP. Pour ce faire, utilisez le script easyrsa avec l’option init-pki. Bien que vous ayez déjà exécuté cette commande sur le serveur de l’AC dans le cadre des prérequis, il est nécessaire de l’exécuter ici car votre serveur OpenVPN et votre serveur de l’AC ont des répertoires PKI séparés :

  1. ./easyrsa init-pki

Notez que sur votre serveur OpenVPN, il n’est pas nécessaire de créer une autorité de certification. Votre serveur d’AC est seul responsable de la validation et de la signature des certificats. L’ICP de votre serveur VPN n’est utilisée que comme un emplacement pratique et centralisé de stockage des demandes de certificats et des certificats publics.

Une fois que vous avez initialisé votre ICP sur le serveur OpenVPN, vous êtes prêt à passer à l’étape suivante, qui consiste à créer une demande de certificat de serveur OpenVPN et une clé privée.

Étape 3 - Création d’une demande de certificat de serveur OpenVPN et d’une clé privée

Maintenant que votre serveur OpenVPN a installé toutes les conditions préalables, l’étape suivante consiste à générer une clé privée et une demande de signature de certificat (CSR) sur votre serveur OpenVPN. Ensuite, vous transférez la demande à votre AC pour qu’elle la signe, créant ainsi le certificat requis. Une fois que vous avez un certificat signé, vous le transférez à nouveau sur le serveur OpenVPN et l’installez pour que le serveur puisse l’utiliser.

Pour commencer, naviguez vers le répertoire ~/easy-rsa sur votre serveur OpenVPN en tant qu’utilisateur non root :

  1. cd ~/easy-rsa

Vous allez maintenant appeler l’easyrsa avec l’option gen-req suivie d’un nom commun (CN) pour la machine. Le CN peut être tout ce que vous voulez, mais il peut être utile d’en faire quelque chose de descriptif. Tout au long de ce tutoriel, le CN du serveur OpenVPN sera server. Veillez à inclure également l’option nopass. Si vous ne le faites pas, le fichier de demande sera protégé par un mot de passe, ce qui pourrait entraîner des problèmes d’autorisation par la suite.

Remarque : si vous choisissez un nom autre que « server » ici, vous devrez adapter certaines des instructions ci-dessous. Par exemple, en copiant les fichiers générés dans le répertoire /etc/openvpn, vous devrez substituer les noms corrects. Vous devrez également modifier le fichier /etc/openvpn/server.conf ultérieurement pour pointer vers les fichiers .crt et .key corrects.

  1. ./easyrsa gen-req server nopass
Output
Common Name (eg: your user, host, or server name) [server]: Keypair and certificate request completed. Your files are: req: /home/sammy/easy-rsa/pki/reqs/server.req key: /home/sammy/easy-rsa/pki/private/server.key

Cela permettra de créer une clé privée pour le serveur et un fichier de demande de certificat appelé server.req. Copiez la clé du serveur dans le répertoire /etc/openvpn/server​​​​​​ :

  1. sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/

Après avoir suivi ces étapes, vous avez créé avec succès une clé privée pour votre serveur OpenVPN. Vous avez également généré une demande de signature de certificat pour le serveur OpenVPN. Le CSR est maintenant prêt à être signé par votre AC. Dans la section suivante de ce tutoriel, vous apprendrez comment signer un CSR avec la clé privée de votre serveur CA.

Étape 4 - Signer la demande de certificat du serveur OpenVPN

Dans l’étape précédente, vous avez créé une demande de signature de certificat (CSR) et une clé privée pour le serveur OpenVPN. Maintenant, le serveur de l’AC doit connaître le serveur et le valider. Une fois que l’AC a validé et relayé le certificat vers le serveur OpenVPN, les clients qui font confiance à votre AC pourront également faire confiance au serveur OpenVPN.

Sur le serveur OpenVPN, en tant qu’utilisateur non root, utilisez SCP ou une autre méthode de transfert pour copier la demande de certificat server.req vers le serveur AC pour la signature :

  1. scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp

Si vous avez suivi le tutoriel Comment mettre en place et configurer une autorité de certification (AC) sur Ubuntu 20.04, l’étape suivante consiste à vous connecter au serveur de l’AC en tant qu’utilisateur non root que vous avez créé pour gérer votre AC. Vous allez cd dans le répertoire ~/easy-rsa où vous avez créé votre PK, puis importer la demande de certificat en utilisant le script ~/easy-rsa :

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/server.req server
Output
. . . The request has been successfully imported with a short name of: server You may now use this name to perform signing operations on this request.

Ensuite, signez la demande en exécutant le script easyrsa avec l’option sign-req, suivi du type de demande et du Common Name (Nom commun). Le type de demande peut être soit client, soit serveur. Puisque nous travaillons avec la demande de certificat du serveur OpenVPN, assurez-vous d’utiliser le type de demande du serveur :

  1. ./easyrsa sign-req server server

Dans le résultat, il vous sera demandé de vérifier que la requête provient d’une source fiable. Tapez oui puis appuyez sur ENTER (ENTRÉE) pour confirmer :

Output
You are about to sign the following certificate. Please check over the details shown below for accuracy. Note that this request has not been cryptographically verified. Please be sure it came from a trusted source or that you have verified the request checksum with the sender. Request subject, to be signed as a server certificate for 3650 days: subject= commonName = server Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes . . . Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt

Veuillez noter que si vous avez crypté votre clé privée de l’AC, vous serez invité à saisir votre mot de passe à ce stade.

Une fois ces étapes terminées, vous avez signé la demande de certificat du serveur OpenVPN en utilisant la clé privée du serveur de l’AC. Le fichier server.crt qui en résulte contient la clé de cryptage publique du serveur OpenVPN, ainsi qu’une signature du serveur AC. Le but de la signature est de dire à toute personne qui fait confiance au serveur AC qu’elle peut également faire confiance au serveur OpenVPN lorsqu’elle s’y connecte.

Pour terminer la configuration des certificats, copiez les fichiers server.crt et ca.crt du serveur AC vers le serveur OpenVPN :

  1. scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
  2. scp pki/ca.crt sammy@your_vpn_server_ip:/tmp

De retour sur votre serveur OpenVPN, copiez les fichiers de /tmp à /etc/openvpn/server :

  1. sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server

Maintenant, votre serveur OpenVPN est presque prêt à accepter des connexions. Dans l’étape suivante, vous effectuerez quelques étapes supplémentaires pour augmenter la sécurité du serveur.

Étape 5 - Configuration du matériel cryptographique OpenVPN

Pour un niveau de sécurité supplémentaire, nous ajouterons une clé secrète partagée supplémentaire, que le serveur et tous les clients utiliseront avec la directive OpenVPN tls-crypt. Cette option est utilisée pour obscurcir le certificat TLS qui est utilisé lorsqu’un serveur et un client se connectent l’un à l’autre au départ. Il est également utilisé par le serveur OpenVPN pour effectuer des contrôles rapides sur les paquets entrants : si un paquet est signé en utilisant la clé pré-partagée, alors le serveur le traite ; s’il n’est pas signé, alors le serveur sait qu’il provient d’une source non fiable et peut le rejeter sans avoir à effectuer un travail de décryptage supplémentaire.

Cette option vous permettra de vous assurer que votre serveur OpenVPN est capable de gérer le trafic non authentifié, les scans de ports et les attaques par déni de service qui peuvent accaparer les ressources du serveur. Elle rend également plus difficile l’identification du trafic du réseau OpenVPN.

Pour générer la clé tls-crypt pré-partagée, exécutez les opérations suivantes sur le serveur OpenVPN dans le répertoire ~/easy-rsa :

  1. cd ~/easy-rsa
  2. openvpn --genkey --secret ta.key

Le résultat sera un fichier appelé ta.key. Copiez-le au répertoire /etc/openvpn/server/ :

  1. sudo cp ta.key /etc/openvpn/server

Une fois ces fichiers en place sur le serveur OpenVPN, vous êtes prêt à créer des certificats clients et des fichiers clés pour vos utilisateurs, que vous utiliserez pour vous connecter au VPN.

Étape 6 - Génération d’un certificat de client et d’une paire de clés

Bien que vous puissiez générer une clé privée et une demande de certificat sur votre machine cliente et l’envoyer ensuite à l’AC pour qu’elle la signe, ce guide décrit un processus de génération de la demande de certificat sur le serveur OpenVPN. L’avantage de cette approche est que nous pouvons créer un script qui générera automatiquement des fichiers de configuration du client contenant toutes les clés et tous les certificats requis. Cela vous évite d’avoir à transférer les clés, les certificats et les fichiers de configuration aux clients et rationalise le processus pour rejoindre le VPN.

Nous générerons une seule paire certificat/clé client dans ce guide. Si vous avez plus d’un client, vous pouvez répéter ce processus pour chacun d’entre eux. Veuillez noter, cependant, que vous devrez transmettre une valeur de nom unique au script pour chaque client. Tout au long de ce tutoriel, la première paire certificat/clé est appelée client1.

Commencez par créer une structure de répertoire dans votre répertoire d’origine pour stocker les fichiers du certificat et de la clé client :

  1. mkdir -p ~/client-configs/keys

Étant donné que vous stockerez les paires certificats/clés et les fichiers de configuration de vos clients dans ce répertoire, vous devriez verrouiller ses autorisations dès maintenant par mesure de sécurité :

  1. chmod -R 700 ~/client-configs

Ensuite, retournez dans le répertoire EasyRSA et exécutez le script easyrsa avec les options gen-req et nopass, ainsi que le nom commun du client :

  1. cd ~/easy-rsa
  2. ./easyrsa gen-req client1 nopass

Appuyez sur ENTER pour confirmer le nom commun. Ensuite, copiez le fichier client1.key dans le répertoire ~/client-configs/keys/ que vous avez créé précédemment :

  1. cp pki/private/client1.key ~/client-configs/keys/

Puis transférez le fichier client1.req à votre serveur d’autorité de certification en utilisant une méthode sécurisée :

  1. scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp

Connectez-vous maintenant à votre serveur AC. Naviguez vers le répertoire EasyRSA, et importez la demande de certificat :

  1. cd ~/easy-rsa
  2. ./easyrsa import-req /tmp/client1.req client1

Ensuite, signez la demande de la même manière que vous l’avez fait pour le serveur à l’étape précédente. Cette fois, cependant, veillez à préciser le type de demande client :

  1. ./easyrsa sign-req client client1

Lorsque vous y êtes invité, entrez oui pour confirmer que vous avez l’intention de signer la demande de certificat et qu’elle provient d’une source fiable :

Output
Type the word 'yes' to continue, or any other input to abort. Confirm request details: yes

Encore une fois, si vous avez chiffré votre clé AC, vous serez invité à entrer votre 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 sammy@your_server_ip:/tmp

De retour sur votre serveur OpenVPN, copiez le certificat du client sur le répertoire ~/client-configs/keys/ :

  1. cp /tmp/client1.crt ~/client-configs/keys/

Ensuite, copiez le fichier ca.crt et ta.key aux fichiers ~/client-configs/keys/ et définissez les permissions appropriées pour votre utilisateur sudo :

  1. cp ~/easy-rsa/ta.key ~/client-configs/keys/
  2. sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
  3. sudo chown sammy.sammy ~/client-configs/keys/*

Avec cela, les certificats et les clés de votre serveur et de votre client ont tous été générés et sont stockés dans les répertoires appropriés sur votre serveur OpenVPN. Il reste encore quelques actions à effectuer avec ces fichiers, mais elles interviendront dans une étape ultérieure. Pour l’instant, vous pouvez passer à la configuration d’OpenVPN.

Étape 7 - Configurer OpenVPN

Comme de nombreux autres outils open-source largement utilisés, OpenVPN dispose de nombreuses options de configuration pour personnaliser votre serveur en fonction de vos besoins spécifiques. Dans cette section, nous fournirons des instructions sur la façon de mettre en place une configuration de serveur OpenVPN basée sur un des exemples de fichiers de configuration qui est inclus dans la documentation de ce logiciel.

Tout d’abord, copiez l’échantillon server.conf comme point de départ pour votre propre fichier de configuration :

  1. sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
  2. sudo gunzip /etc/openvpn/server/server.conf.gz

Ouvrez le nouveau fichier pour l’éditer avec l’éditeur de texte de votre choix. Nous utiliserons nano dans notre exemple :

  1. sudo nano /etc/openvpn/server/server.conf

Nous devrons modifier quelques lignes dans ce fichier. Tout d’abord, trouvez la section HMAC de la configuration en recherchant la directive tls-auth. Cette ligne ne doit pas être commentée. Commenter en ajoutant un « ; » au début de la ligne. Ajoutez ensuite une nouvelle ligne contenant uniquement la valeur tls-crypt ta.key :

/etc/openvpn/server/server.conf
;tls-auth ta.key 0 # This file is secret
tls-crypt ta.key

Ensuite, trouvez la section sur le chiffrement cryptographique en recherchant les lignes de cipher.  La valeur par défaut est réglée à AES-256-CBC, cependant, le chiffrement AES-256-GCM offre un meilleur niveau de cryptage, de performance, et est bien pris en charge dans les clients à jour OpenVPN. Nous commenterons la valeur par défaut en ajoutant le symbole « ; » au début de cette ligne, puis nous ajouterons une autre ligne après celle-ci contenant la valeur actualisée de AES-256-GCM :

/etc/openvpn/server/server.conf
;cipher AES-256-CBC
cipher AES-256-GCM

Juste après cette ligne, ajoutez une directive auth pour sélectionner l’algorithme de digestion des messages HMAC. À cette fin, SHA256 est un bon choix :

/etc/openvpn/server/server.conf
auth SHA256

Ensuite, trouvez la ligne contenant une directive dh qui définit les paramètres de Diffie-Hellman. Puisque nous avons configuré tous les certificats pour utiliser la cryptographie à courbe elliptique, il n’est pas nécessaire d’avoir un fichier source Diffie-Hellman. Commenter la ligne existante qui ressemble à dh dh2048.pem ou dh dh.pem. Le nom de fichier pour la clé Diffie-Hellman peut être différent de ce qui est indiqué dans le fichier de configuration du serveur d’exemple. Ensuite, ajoutez une ligne à la suite avec le contenu dh none :

/etc/openvpn/server/server.conf
;dh dh2048.pem
dh none

Ensuite, nous voulons qu’OpenVPN tourne sans privilèges une fois qu’il a démarré, nous devons donc lui dire de tourner avec un utilisateur nobody et un groupe nogroup. Pour cela, trouvez et décommentez les lignes user nobody et group nogroup en supprimant le signe ; au début de chaque ligne :

/etc/openvpn/server/server.conf
user nobody
group nogroup

(Facultatif) Modifiez le DNS pour rediriger tout le trafic par le VPN

Les paramètres ci-dessus créeront la connexion VPN entre votre client et votre serveur mais ne forceront aucune connexion à utiliser le tunnel. Si vous souhaitez utiliser le VPN pour acheminer tout le trafic de vos clients via le VPN, vous voudrez probablement pousser certains paramètres supplémentaires vers les ordinateurs clients.

Pour commencer, trouvez et décommentez la ligne contenant pousser « redirect-gateway def1 bypass-dhcp ». Cela indiquera à votre client de rediriger tout son trafic via votre serveur OpenVPN. Sachez que l’activation de cette fonctionnalité peut entraîner des problèmes de connectivité avec d’autres services de réseau, comme les SSH :

/etc/openvpn/server/server.conf
push "redirect-gateway def1 bypass-dhcp"

Juste en dessous de cette ligne, vous trouverez la section dhcp-option. Encore une fois, enlevez le symbole « ; » devant les deux lignes pour les décommenter :

/etc/openvpn/server/server.conf
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Ces lignes indiqueront à votre client d’utiliser les résolveurs OpenDNS gratuits aux adresses IP indiquées. Si vous préférez d’autres résolveurs DNS, vous pouvez les substituer à la place des IP mis en évidence.

Cela aidera les clients à reconfigurer leurs paramètres DNS pour utiliser le tunnel VPN comme passerelle par défaut.

(Facultatif) Ajustez le port et le protocole

Par défaut, le serveur OpenVPN utilise le port 1194 et le protocole UDP pour accepter les connexions des clients. Si vous devez utiliser un autre port en raison des environnements réseau restrictifs de vos clients, vous pouvez changer l’option port. Si vous n’hébergez pas de contenu web sur votre serveur OpenVPN, le port 443 est un choix populaire car il est généralement autorisé par les règles de pare-feu.

Pour changer OpenVPN afin d’écouter sur le port 443, ouvrez le server.conf et trouver la ligne qui ressemble à ça :

/etc/openvpn/server/server.conf
port 1194

Modifiez-le de manière à ce que le port soit 443 :

/etc/openvpn/server/server.conf
# Optional!
port 443

Souvent, le protocole est également limité à ce port. Si c’est le cas, trouvez la ligne de proto sous la ligne de port et changez le protocole de udp à tcp :

/etc/openvpn/server/server.conf
# Optional!
proto tcp

Si vous modifiez le protocole en TCP, vous devrez changer la valeur de la directive explicit-exit-notify de 1 à 0, car cette directive n’est utilisée que par UDP. Si vous ne le faites pas en utilisant TCP, des erreurs se produiront lorsque vous lancerez le service OpenVPN.

Trouvez explicit-exit-notify à la fin du fichier et changez la valeur en 0 :

/etc/openvpn/server/server.conf
# Optional!
explicit-exit-notify 0

Si vous n’avez pas besoin d’utiliser un port et un protocole différents, il est préférable de laisser ces paramètres inchangés.

(Facultatif) Pointez vers des informations d’identification autres que celles par défaut

Si vous avez choisi un nom différent lors de la commande du serveur gen-req ./easyrsa plus tôt, modifiez les lignes cert et key dans la configuration server.conf afin qu’elles renvoient aux fichiers .crt et .key appropriés. Si vous avez utilisé le nom par défaut, server, celui-ci est déjà correctement configuré :

/etc/openvpn/server/server.conf
cert server.crt
key server.key

Lorsque vous avez terminé, enregistrez et fermez le fichier.

Vous avez maintenant fini de configurer les paramètres généraux de votre OpenVPN. Dans la prochaine étape, nous personnaliserons les options de mise en réseau du serveur.

Étape 8 - Ajustement de la configuration réseau du serveur OpenVPN

Certains aspects de la configuration réseau du serveur doivent être modifiés afin qu’OpenVPN puisse acheminer correctement le trafic à travers le VPN. Le premier d’entre eux est le transfert IP, une méthode permettant de déterminer où le trafic IP doit être acheminé. Ceci est essentiel pour la fonctionnalité VPN que votre serveur fournira.

Pour ajuster le paramètre de transfert IP par défaut de votre serveur OpenVPN, ouvrez le fichier /etc/sysctl.conf en utilisant nano ou votre éditeur de texte préféré :

  1. sudo nano /etc/sysctl.conf

Ajoutez ensuite la ligne suivante en bas du fichier :

/etc/sysctl.conf
net.ipv4.ip_forward = 1

Enregistrez et fermez le fichier lorsque vous avez terminé.

Pour lire le fichier et charger les nouvelles valeurs pour la session en cours, tapez :

  1. sudo sysctl -p
Output
net.ipv4.ip_forward = 1

Désormais, votre serveur OpenVPN sera en mesure de transférer le trafic entrant d’un appareil ethernet à un autre. Ce paramètre garantit que le serveur peut diriger le trafic des clients qui se connectent sur l’interface VPN virtuelle vers ses autres périphériques ethernet physiques. Cette configuration acheminera tout le trafic web de votre client via l’adresse IP de votre serveur, et l’adresse IP publique de votre client sera effectivement cachée.

Dans l’étape suivante, vous devrez configurer certaines règles de pare-feu pour vous assurer que le trafic vers et depuis votre serveur OpenVPN circule correctement.

Étape 9 - Configuration du pare-feu

Jusqu’à présent, vous avez installé OpenVPN sur votre serveur, l’avez configuré et avez généré les clés et les certificats nécessaires pour que votre client puisse accéder au VPN. Cependant, vous n’avez encore fourni à OpenVPN aucune instruction sur l’endroit où envoyer le trafic web entrant des clients. Vous pouvez stipuler comment le serveur doit traiter le trafic des clients en établissant certaines règles de pare-feu et configurations de routage.

En supposant que vous ayez suivi les prérequis au début de ce tutoriel, vous devriez déjà avoir installé et exécuté ufw sur votre serveur. Pour autoriser OpenVPN par le pare-feu, vous devrez activer le masquerading, un concept d’iptables qui fournit une traduction dynamique d’adresse réseau en vol (NAT) pour acheminer correctement les connexions client.

Avant d’ouvrir le fichier de configuration du pare-feu pour ajouter les règles de masquage, vous devez d’abord trouver l’interface de réseau public de votre machine. Pour ce faire, tapez :

  1. ip route list default

Votre interface publique est la chaîne de caractères qui se trouve dans la sortie de cette commande et qui suit le mot « dev ». Par exemple, ce résultat montre l’interface nommée eth0, qui est mise en évidence ci-dessous :

Output
default via 159.65.160.1 dev eth0 proto static

Lorsque l’interface est associée à votre itinéraire par défaut, ouvrez le fichier /etc/ufw/before.rules pour ajouter la configuration appropriée :

  1. sudo nano /etc/ufw/before.rules

Les règles UFW sont généralement ajoutées à l’aide de la commande ufw. Les règles énumérées dans le fichier before.rules sont toutefois lues et mises en place avant le chargement des règles UFW conventionnelles. En haut du fichier, ajoutez les lignes mises en évidence ci-dessous. Cela permettra de définir la politique par défaut pour la chaîne POSTROUTING dans la table nat et de masquer tout trafic provenant du VPN. N’oubliez pas de remplacer eth0 dans la ligne -A POSTROUTING ci-dessous avec l’interface que vous avez trouvée dans la commande ci-dessus :

/etc/ufw/before.rules
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

# Don't delete these required lines, otherwise there will be errors
*filter
. . .

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, vous devez indiquer à UFW d’autoriser également les paquets transmis par défaut. Pour ce faire, ouvrez le fichier /etc/default/ufw :

  1. sudo nano /etc/default/ufw

À l’intérieur, trouvez la directive DEFAULT_FORWARD_POLICY et changez la valeur de DROP à ACCEPT :

/etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ensuite, ajustez le pare-feu lui-même pour permettre 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 au port 1194. Si vous avez modifié le port et/ou le protocole, utilisez ici les valeurs que vous avez sélectionnées.

Au cas où vous auriez oublié d’ajouter le port SSH en suivant le tutoriel préalable, ajoutez-le également ici :

  1. sudo ufw allow 1194/udp
  2. 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 :

  1. sudo ufw disable
  2. sudo ufw enable

Votre serveur est maintenant configuré pour gérer correctement le trafic OpenVPN. Une fois les règles du pare-feu en place, nous pouvons lancer le service OpenVPN sur le serveur.

Étape 10 - Démarrer OpenVPN

OpenVPN fonctionne comme un service systemd, nous pouvons donc utiliser systemctl pour le gérer. Nous configurerons OpenVPN pour qu’il se lance au démarrage afin que vous puissiez vous connecter à votre VPN à tout moment tant que votre serveur tourne. Pour ce faire, activez le service OpenVPN en l’ajoutant à systemctl :

  1. sudo systemctl -f enable openvpn-server@server.service

Ensuite, lancez le service OpenVPN :

  1. sudo systemctl start openvpn-server@server.service

Vérifiez que le service OpenVPN est actif avec la commande suivante. Vous devriez voir active (en cours) dans le résultat :

  1. sudo systemctl status openvpn-server@server.service
Output
● openvpn-server@server.service - OpenVPN service for server Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Main PID: 16872 (openvpn) Status: "Initialization Sequence Completed" Tasks: 1 (limit: 1137) Memory: 1.0M CGroup: /system.slice/system-openvpn\x2dserver.slice/openvpn-server@server.service └─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c> . . . . . . Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed

Nous avons maintenant terminé la configuration côté serveur pour OpenVPN. Ensuite, vous allez configurer votre machine cliente et vous connecter au serveur OpenVPN.

Étape 11 - Créer l’infrastructure de configuration du client

La création de fichiers de configuration pour les clients OpenVPN peut être quelque peu compliquée, car chaque client doit avoir sa propre configuration et chacun doit s’aligner sur les paramètres décrits dans le fichier de configuration du serveur. Plutôt que d’écrire un seul fichier de configuration qui ne peut être utilisé que sur un seul client, cette étape décrit un processus de construction d’une infrastructure de configuration client que vous pouvez utiliser pour générer des fichiers de configuration à la volée. Vous créerez d’abord un fichier de configuration « de base », puis un script qui vous permettra de générer des fichiers de configuration client, des certificats et des clés uniques selon les besoins.

Commencez par créer un nouveau répertoire dans lequel vous stockerez les fichiers de configuration du client dans le répertoire client-configs que vous avez créé précédemment :

  1. mkdir -p ~/client-configs/files

Ensuite, copiez un exemple de fichier de configuration client dans le répertoire client-configs pour l’utiliser comme configuration de base :

  1. cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

Ouvrez ce nouveau dossier en utilisant nano ou votre éditeur de texte préféré :

  1. nano ~/client-configs/base.conf

Dans celui-ci, localisez la directive remote. Le client est alors dirigé vers l’adresse de votre serveur OpenVPN - l’adresse IP publique de votre serveur OpenVPN. Si vous avez décidé de modifier le port sur lequel le serveur OpenVPN écoute, vous devrez également changer 1194 pour le port que vous avez sélectionné :

~/client-configs/base.conf
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 1194
. . .

Assurez-vous que le protocole correspond à la valeur que vous utilisez dans la configuration du serveur :

~/client-configs/base.conf
proto udp

Ensuite, décommentez les directives user et group en supprimant le symbole « ; » au début de chaque ligne :

~/client-configs/base.conf
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Trouvez les directives qui fixent ca, cert et key. Commentez ces directives, car vous ajouterez bientôt les certificats et les clés dans le dossier lui-même :

~/client-configs/base.conf
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
;ca ca.crt
;cert client.crt
;key client.key

De même, commentez la directive tls-auth, car vous ajouterezta.key directement dans le fichier de configuration client (et le serveur est configuré pour utiliser tls-crypt):

~/client-configs/base.conf
# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1

Refléter les paramètres de chiffrement et auth que vous avez définis dans le fichier /etc/openvpn/server/server.conf :

~/client-configs/base.conf
cipher AES-256-GCM
auth SHA256

Ensuite, ajoutez la directive key-direction quelque part dans le fichier. Vous devez régler ce paramètre sur « 1 » pour que le VPN fonctionne correctement sur la machine cliente :

~/client-configs/base.conf
key-direction 1

Enfin, ajoutez quelques lignes commentées pour traiter les différentes méthodes que les clients VPN basés sur Linux utiliseront pour la résolution DNS. Vous allez ajouter deux ensembles similaires, mais distincts des lignes commentées. Le premier ensemble est celui des clients qui n’utilisent pas systemd-resolved pour gérer le DNS. Ces clients reposent sur l’utilitaire resolvconf pour mettre à jour les informations DNS pour les clients Linux.

~/client-configs/base.conf
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf

Ajoutez maintenant un autre ensemble de lignes pour les clients qui utilisent systemd-resolved pour la résolution DNS :

~/client-configs/base.conf
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .

Enregistrez et fermez le fichier lorsque vous avez terminé.

Plus tard dans l’Étape 13 – Installation de l’étape de configuration du client de ce tutoriel, vous apprendrez comment déterminer le fonctionnement de la résolution DNS sur les clients Linux et quelle section doit être décommentée.

Ensuite, nous créerons un script qui compilera votre configuration de base avec les fichiers de certificat, de clé et de cryptage pertinents, puis nous placerons la configuration générée dans le répertoire~/client-configs/files. Ouvrez un nouveau fichier appelé make_config.sh dans le répertoire ~/client-configs :

  1. nano ~/client-configs/make_config.sh

Dans ce fichier, ajoutez le contenu suivant :

~/client-configs/make_config.sh
#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-crypt>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-crypt>') \
    > ${OUTPUT_DIR}/${1}.ovpn

Enregistrez et fermez le fichier lorsque vous avez terminé.

Avant de poursuivre, veillez à marquer ce fichier comme exécutable en tapant :

  1. chmod 700 ~/client-configs/make_config.sh

Ce script fera une copie du fichier base.conf que vous avez créé, rassemblera tous les fichiers de certificats et de clés que vous avez créés pour votre client, extraira leur contenu, les ajoutera à la copie du fichier de configuration de la base et exportera tout ce contenu dans un nouveau fichier de configuration du client. Cela signifie que, plutôt que de devoir gérer séparément les fichiers de configuration, de certificat et de clé du client, toutes les informations requises sont stockées en un seul endroit. L’avantage de cette méthode est que si jamais vous devez ajouter un client à l’avenir, vous pouvez exécuter ce script pour créer rapidement un nouveau fichier de configuration et vous assurer que toutes les informations importantes sont stockées dans un seul endroit facile d’accès.

Veuillez noter qu’à chaque fois que vous ajouterez un nouveau client, vous devrez générer de nouvelles clés et de nouveaux certificats pour lui avant de pouvoir exécuter ce script et générer son fichier de configuration. Vous vous entraînerez à utiliser ce script dans la prochaine étape.

Étape 12 - Générer les configurations client

Si vous avez suivi le guide, vous avez créé un certificat de client et une clé nommés client1.crt et client1.keyrespectivement à l’étape 6. Vous pouvez générer un fichier de configuration pour ces informations d’identification en allant dans votre ~/client-configs et exécuter le script que vous avez fait à la fin de l’étape précédente :

  1. cd ~/client-configs
  2. ./make_config.sh client1

Cela créera un fichier nommé client1.ovpn dans votre répertoire ~/client-configs/files :

  1. ls ~/client-configs/files
Output
client1.ovpn

Vous devez transférer ce fichier sur l’appareil que vous prévoyez d’utiliser en tant que client. Il peut s’agir, par exemple, de votre ordinateur local ou d’un appareil mobile.

Bien que les applications exactes utilisées pour effectuer ce transfert dépendent du système d’exploitation de votre appareil et de vos préférences personnelles, utiliser le SFTP (protocole de transfert de fichiers SSH) ou le SCP (Secure Copy) en back-end constitue une méthode fiable et sûre. Cela permettra de transporter les fichiers d’authentification VPN de votre client sur une connexion chiffrée.

Voici un exemple de commande SFTP que vous pouvez exécuter depuis votre ordinateur local (macOS ou Linux). Cela permettra de copier le client1.ovpn que nous avons créé dans la dernière étape vers votre répertoire d’origine :

  1. sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

Voici plusieurs outils et tutoriels qui permettent de transférer en toute sécurité des fichiers du serveur OpenVPN vers un ordinateur local :

Étape 13 - Installer la configuration client

Cette section explique comment installer un profil VPN client sur Windows, macOS, Linux, iOS et Android. Aucune de ces instructions du client ne dépend d’une autre, alors n’hésitez pas à passer à celle qui s’applique à votre appareil.

La connexion OpenVPN portera le même nom que celui du fichier .ovpn. Pour ce tutoriel, cela signifie que la connexion est nommée client1.ovpn, s’alignant sur le premier fichier client que vous avez généré.

Windows

Installation

Téléchargez l’application client OpenVPN pour Windows depuis la page de téléchargement d’OpenVPN. Choisissez la version d’installation appropriée pour votre version de Windows.

Remarque : OpenVPN a besoin de privilèges administratifs pour s’installer.

Après avoir installé OpenVPN, copiez le fichier .ovpn dans :

C:\Program Files\OpenVPN\config

Lorsque vous lancez OpenVPN, il localisera automatiquement le profil et le rendra disponible.

Vous devez exécuter OpenVPN en tant qu’administrateur à chaque fois qu’il est utilisé, même par des comptes administratifs. Pour effectuer cette action sans avoir à cliquer sur le bouton droit de la souris et à sélectionner Exécuter en tant qu’administrateur chaque fois que vous utilisez le VPN, vous devez le pré-régler à partir d’un compte administratif. Cela signifie également que les utilisateurs standard devront entrer le mot de passe de l’administrateur pour utiliser OpenVPN. Les utilisateurs standard ne peuvent pas se connecter correctement au serveur à moins que l’application OpenVPN sur le client n’ait des droits d’administrateur, les privilèges élevés sont donc nécessaires.

Pour que l’application OpenVPN s’exécute toujours en tant qu’administrateur, cliquez avec le bouton droit de la souris sur son icône de raccourci et allez dans Propriétés. En bas de l’onglet Compatibilité, cliquez sur le bouton Modifier les paramètres pour tous les utilisateurs. Dans la nouvelle fenêtre, cochez Exécuter ce programme en tant qu’administrateur.

Connexion

À chaque fois que vous lancez l’interface graphique d’OpenVPN, Windows vous demande si vous souhaitez autoriser le programme à apporter des modifications à votre ordinateur. Cliquez sur Oui. Le lancement de l’application client OpenVPN ne fait que placer l’applet dans la barre d’état système afin que vous puissiez connecter et déconnecter le VPN selon vos besoins : il n’établit pas réellement la connexion VPN.

Une fois qu’OpenVPN est lancé, initiez une connexion en vous rendant dans l’applet de la barre d’état système et en cliquant avec le bouton droit de la souris sur l’icône de l’applet OpenVPN. Cela ouvre le menu contextuel. Sélectionnez client1 en haut du menu (c’est votre profil client1.ovpn) et choisissez Connecter.

Une fenêtre d’état s’ouvrira, montrant la sortie du journal pendant que la connexion est établie, et un message s’affichera une fois que le client sera connecté.

Déconnectez-vous du VPN de la même manière : allez dans l’applet de la barre d’état système, cliquez avec le bouton droit de la souris sur l’icône de l’applet OpenVPN, sélectionnez le profil du client et cliquez sur Déconnecter.

macOS

Installation

Tunnelblick est un client OpenVPN gratuit et open source pour macOS. Vous pouvez télécharger la dernière image disque à partir de la page de téléchargement de Tunnelblick. Double-cliquez sur le fichier .dmg téléchargé et suivez les instructions pour l’installer.

Vers la fin du processus d’installation, Tunnelblick vous demandera si vous avez des fichiers de configuration. Répondez J’ai des fichiers de configuration et laissez Tunnelblick finir. Ouvrez une fenêtre du Finder et double-cliquez sur client1.ovpn. Tunnelblick installera le profil du client. Des privilèges administratifs sont requis.

Connexion

Lancez Tunnelblick en double-cliquant sur l’icône de Tunnelblick dans le dossier Applications. Lorsque Tunnelblick est lancé, une icône Tunnelblick apparaît dans la barre de menu en haut à droite de l’écran pour contrôler les connexions. Cliquez sur l’icône, puis sur l’élément de menu Connecter client1 pour lancer la connexion VPN.

Linux

Installation

Si vous utilisez Linux, vous pouvez utiliser plusieurs outils en fonction de votre distribution. Votre environnement de bureau ou votre gestionnaire de fenêtres peut également inclure des utilitaires de connexion.

La façon la plus universelle de se connecter, cependant, est d’utiliser simplement le logiciel OpenVPN.

Sur Ubuntu ou Debian, vous pouvez l’installer comme vous l’avez fait sur le serveur en tapant :

  1. sudo apt update
  2. sudo apt install openvpn

Sur CentOS, vous pouvez activer les référentiels EPEL et les installer ensuite en tapant :

  1. sudo dnf install epel-release
  2. sudo dnf install openvpn

Configuration des clients qui utilisent systemd-resolved

Vérifiez d’abord si votre système utilise systemd-resolved pour traiter la résolution DNS en vérifiant le fichier /etc/resolv.conf :

  1. cat /etc/resolv.conf
Output
# This file is managed by man:systemd-resolved(8). Do not edit. . . . nameserver 127.0.0.53 options edns0

Si votre système est configuré pour utiliser systemd-resolved pour la résolution DNS, l’adresse IP après l’option nameserver sera 127.0.0.53. Il devrait également y avoir des commentaires dans le fichier, comme le résultat qui est montré, qui expliquent comment systemd-resolved gère le fichier. Si vous avez une adresse IP différente de 127.0.0.53, il y a de fortes chances que votre système n’utilise pas systemd-resolved et vous pouvez passer à la section suivante sur la configuration des clients Linux qui ont un script update-resolv-conf.

Pour prendre ces clients en chage, installez d’abord le package openvpn-systemd-resolved Il fournit des scripts qui forceront systemd-resolved à utiliser le serveur VPN pour la résolution DNS.

  1. sudo apt install openvpn-systemd-resolved

Une fois le package installé, configurez le client pour l’utiliser et pour envoyer toutes les requêtes DNS sur l’interface VPN. Ouvrez le fichier VPN du client :

  1. nano client1.ovpn

Décommentez maintenant les lignes suivantes que vous avez ajoutées précédemment :

client1.ovpn
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .

Configuration des clients qui utilisent update-resolv-conf​​​

Si votre système n’utilise pas systemd-resolved pour gérer les DNS, vérifiez si votre distribution comprend un script /etc/openvpn/update-resolv-conf :

  1. ls /etc/openvpn
Output
update-resolv-conf

Si votre client inclut le fichier update-resolv-conf, alors modifiez le fichier de configuration du client OpenVPN que vous avez transféré précédemment :

  1. nano client1.ovpn

Décommentez les trois lignes que vous avez ajoutées pour ajuster les paramètres DNS :

client1.ovpn
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Si vous utilisez CentOS, changez la directive group de nogroup à nobody pour qu’elle corresponde aux groupes disponibles de la distribution :

client1.ovpn
group nobody

Enregistrez et fermez le fichier.

Connexion

Maintenant, vous pouvez vous connecter au VPN en pointant simplement la commande openvpn sur le fichier de configuration client :

  1. sudo openvpn --config client1.ovpn

Cela devrait vous connecter à votre VPN.

Remarque : si votre client utilise systemd-resolved pour gérer les DNS, vérifiez que les paramètres sont appliqués correctement en exécutant systemd-resolve --statt comme ceci :

  1. systemd-resolve --status tun0

Vous devriez voir une sortie similaire à la suivante :

Output
Link 22 (tun0) . . . DNS Servers: 208.67.222.222 208.67.220.220 DNS Domain: ~.

Si vous voyez les adresses IP des serveurs DNS que vous avez configurés sur le serveur OpenVPN, avec le paramètre ~. pour DNS Domain​​ dans la sortie, alors vous avez correctement configuré votre client pour utiliser le résolveur DNS du serveur VPN. Vous pouvez également vérifier que vous envoyez des requêtes DNS sur le VPN en utilisant un site comme DNS leak test.com.

iOS

Installation

Depuis l’App Store d’iTunes, recherchez et installez OpenVPN Connect, l’application client OpenVPN officielle pour iOS. Pour transférer la configuration de votre client iOS sur l’appareil, connectez-le directement à un ordinateur.

La procédure à suivre pour effectuer le transfert avec iTunes est décrite ici. Ouvrez iTunes sur l’ordinateur et cliquez sur iPhone > apps. Faites défiler vers le bas jusqu’à la section Partage de fichiers et cliquez sur l’application OpenVPN. La fenêtre vide à droite, Documents OpenVPN, est destinée au partage de fichiers. Faites glisser le fichier .ovpn vers la fenêtre OpenVPN Documents (Documents OpenVPN). iTunes montrant le profil VPN prêt à être chargé sur l'iPhone

Lancez maintenant l’application OpenVPN sur l’iPhone. Vous recevrez une notification vous informant qu’un nouveau profil est prêt à être importé. Appuyez sur le signe + vert pour l’importer.

L'appli OpenVPN iOS présentant un nouveau profil prêt à être importé Connexion

OpenVPN est maintenant prêt à être utilisé avec le nouveau profil. Démarrez la connexion en faisant glisser le bouton Connect sur la position On. Déconnectez-vous en faisant glisser le même bouton sur Off.

Remarque : Le commutateur VPN sous Paramètres ne peut pas être utilisé pour se connecter au VPN. Si vous essayez, vous recevrez un avis vous invitant à vous connecter uniquement à l’aide de l’application OpenVPN.

The OpenVPN iOS app connected to the VPN

Android

Installation

Ouvrez le Google Play Store. Recherchez et installez Android OpenVPN Connect, l’application client officielle d’OpenVPN sur Android.

Vous pouvez transférer le profil .ovpn en connectant l’appareil Android à votre ordinateur par USB et en copiant le fichier dessus. Sinon, si vous disposez d’un lecteur de carte SD, vous pouvez retirer la carte SD de l’appareil, y copier le profil, puis réinsérer la carte dans l’appareil Android.

Lancez l’application OpenVPN et appuyez sur le menu FILE (FICHIER) pour importer le profil.

The OpenVPN Android app profile import menu selection

Ensuite, naviguez jusqu’à l’emplacement du profil enregistré (la capture d’écran utilise /storage/emulated/0/openvpn) et sélectionnez votre fichier .ovpn. Appuyez sur le bouton IMPORT (IMPORTER) pour terminer l’importation de ce profil.

The OpenVPN Android app selecting VPN profile to import

le profil Connecting Once (Connexion Une fois) est ajouté, vous verrez un écran comme celui-ci :

L'application Android d'OpenVPN avec un nouveau profil ajouté 

Pour vous connecter, appuyez sur le bouton de commutation situé à proximité du profil que vous souhaitez utiliser. Vous verrez les statistiques en temps réel de votre connexion et du trafic acheminé par votre serveur OpenVPN : L'appli OpenVPN Android connectée au VPN 

Pour vous déconnecter, il suffit d’appuyer une nouvelle fois sur le bouton de commutation en haut à gauche. Vous serez invité à confirmer que vous souhaitez vous déconnecter de votre VPN.

Étape 14 - Tester votre connexion VPN (facultatif)

Remarque : Cette méthode pour tester votre connexion VPN ne fonctionnera que si vous avez choisi de faire passer tout votre trafic par le VPN à l’étape 7 lorsque vous avez modifié le fichier server.conf pour OpenVPN.

Une fois que tout est installé, une simple vérification confirme que tout fonctionne correctement. Sans avoir activé de connexion VPN, ouvrez un navigateur et allez sur DNSLeakTest.

Le site renvoie l’adresse IP attribuée par votre fournisseur d’accès à Internet et telle que vous apparaissez au reste du monde. Pour vérifier vos paramètres DNS sur le même site web, cliquez sur Extended Test et il vous indiquera quels serveurs DNS vous utilisez.

Connectez maintenant le client OpenVPN au VPN de votre Droplet et rafraîchissez le navigateur. Une adresse IP complètement différente (celle de votre serveur VPN) devrait maintenant apparaître, et c’est ainsi que vous apparaissez au monde. Encore une fois, le test Extended Test de DNSLeakTest vérifiera vos paramètres DNS et confirmera que vous utilisez maintenant les résolveurs DNS poussés par votre VPN.

Étape 15 - Révoquer les certificats clients

Il peut arriver que vous deviez révoquer le certificat d’un client pour empêcher tout accès ultérieur au serveur OpenVPN.

Pour ce faire, suivez l’exemple du tutoriel sur les conditions préalables Comment mettre en place et configurer une autorité de certification sur Ubuntu 20.04 dans la section Révoquer un certificat.

Une fois que vous avez révoqué un certificat pour un client en suivant ces instructions, vous devez copier le fichiercrl.pem vers votre serveur OpenVPN dans le répertoire /etc/openvpn/server :

  1. sudo cp /tmp/crl.pem /etc/openvpn/server/

Ensuite, ouvrez le fichier de configuration du serveur OpenVPN :

  1. sudo nano /etc/openvpn/server/server.conf

Au bas du fichier, ajoutez l’option crl-verify, qui demandera au serveur OpenVPN de vérifier la liste de révocation de certificats que nous avons créée à chaque tentative de connexion :

/etc/openvpn/server/server.conf
crl-verify crl.pem

Enregistrez et fermez le fichier.

Enfin, redémarrez OpenVPN pour implémenter la révocation du certificat :

  1. sudo systemctl restart openvpn-server@server.service

Le client ne devrait plus être en mesure de se connecter au serveur en utilisant les anciennes informations d’identification.

Pour révoquer d’autres clients, procédez comme suit :

  1. Révoquez le certificat avec la commande ./easyrsa revoke client-name
  2. Générez un nouveau fichier CRL
  3. Transférer le nouveau fichier crl.pem vers votre serveur OpenVPN et copiez le fichier /etc/openvpn/server/ pour se substituer à l’ancienne liste.
  4. Redémarrez le service OpenVPN.

Vous pouvez utiliser cette méthode processus pour révoquer tout certificat que vous avez précédemment émis pour votre serveur.

Conclusion

Vous devriez maintenant disposer d’un réseau privé virtuel pleinement opérationnel fonctionnant sur votre serveur OpenVPN. Vous pouvez naviguer sur le web et télécharger du contenu sans craindre que des utilisateurs malveillants ne suivent votre activité.

Vous pouvez prendre plusieurs mesures pour personnaliser davantage votre installation OpenVPN, par exemple en configurant votre client pour qu’il se connecte automatiquement au VPN ou en configurant des règles et des politiques d’accès spécifiques au client. Pour ces personnalisations et d’autres personnalisations d’OpenVPN, vous devez consulter la documentation officielle d’OpenVPN.

Pour configurer plus de clients, il suffit de suivre les étapes 6 et 11-13 pour chaque dispositif supplémentaire. Pour révoquer l’accès aux clients, suivez l’étape 15.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
1 Comments


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Bonjour

Merci pour ce tuto très précis.

Joel

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.