Comment configurer un serveur OpenVPN sur Ubuntu 16.04

introduction

Vous souhaitez accéder à Internet en toute sécurité depuis votre smartphone ou votre ordinateur portable lorsque vous êtes connecté à un réseau non fiable, tel que le WiFi d'un hôtel ou d'un café? UnVirtual Private Network (VPN) vous permet de traverser des réseaux non approuvés en privé et en toute sécurité comme si vous étiez sur un réseau privé. Le trafic sort du serveur VPN et continue son chemin vers la destination.

Lorsqu'elle est combinée avecHTTPS connections, 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 chiffré du réseau non approuvé.

OpenVPN est une solution VPN SSL (Secure Socket Layer) open source complète qui prend en charge un large éventail de configurations. Dans ce didacticiel, nous allons configurer un serveur OpenVPN sur un droplet, puis en configurer l’accès depuis Windows, OS X, iOS et Android. Ce tutoriel va simplifier autant que possible les étapes d'installation et de configuration pour ces configurations.

[.Remarque]##

Note: Si vous prévoyez de configurer un serveur OpenVPN sur un Droplet DigitalOcean, sachez que nous, comme de nombreux hébergeurs, facturons les surcharges de bande passante. Pour cette raison, veuillez tenir compte du trafic que votre serveur gère.

Voirthis page pour plus d'informations.

Conditions préalables

Pour compléter ce didacticiel, vous devez avoir accès à un serveur Ubuntu 16.04.

Vous devrez configurer un utilisateur non root avec les privilègessudo avant de commencer ce guide. Vous pouvez suivre nosUbuntu 16.04 initial server setup guide pour configurer un utilisateur avec les autorisations appropriées. Le didacticiel lié mettra également en place unfirewall, que nous supposerons est en place pendant ce guide.

Lorsque vous êtes prêt à commencer, connectez-vous à votre serveur Ubuntu en tant qu'utilisateur desudo et continuez ci-dessous.

Étape 1: Installez OpenVPN

Pour commencer, nous allons installer OpenVPN sur notre serveur. OpenVPN est disponible dans les référentiels par défaut d'Ubuntu, nous pouvons donc utiliserapt pour l'installation. Nous installerons également le packageeasy-rsa, qui nous aidera à mettre en place une CA interne (autorité de certification) à utiliser avec notre VPN.

Pour mettre à jour l’index de paquet de votre serveur et installer le type de paquet nécessaire:

sudo apt-get update
sudo apt-get install openvpn easy-rsa

Le logiciel nécessaire est maintenant sur le serveur, prêt à être configuré.

Étape 2: Configuration du répertoire de l'autorité de certification

OpenVPN est un VPN TLS / SSL. Cela signifie qu'il utilise des certificats pour chiffrer le trafic entre le serveur et les clients. Pour émettre des certificats de confiance, nous devrons configurer notre propre autorité de certification simple.

Pour commencer, nous pouvons copier le répertoire des modèleseasy-rsa dans notre répertoire personnel avec la commandemake-cadir:

make-cadir ~/openvpn-ca

Déplacez-vous dans le répertoire nouvellement créé pour commencer à configurer l'autorité de certification:

cd ~/openvpn-ca

Étape 3: configuration des variables de l'autorité de certification

Pour configurer les valeurs que notre autorité de certification utilisera, nous devons éditer le fichiervars dans le répertoire. Ouvrez ce fichier maintenant dans votre éditeur de texte:

nano vars

À l'intérieur, vous trouverez des variables qui peuvent être ajustées pour déterminer comment vos certificats seront créés. Nous n'avons qu'à nous préoccuper de quelques-uns d'entre eux.

Vers le bas du fichier, recherchez les paramètres qui définissent les valeurs par défaut des champs pour les nouveaux certificats. Ça devrait ressembler a quelque chose comme ca:

~/openvpn-ca/vars

. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
export KEY_OU="MyOrganizationalUnit"

. . .

Modifiez les valeurs en rouge selon vos préférences, mais ne les laissez pas vides:

~/openvpn-ca/vars

. . .

export KEY_COUNTRY="US"
export KEY_PROVINCE="NY"
export KEY_CITY="New York City"
export KEY_ORG="DigitalOcean"
export KEY_EMAIL="[email protected]"
export KEY_OU="Community"

. . .

Pendant que nous sommes ici, nous modifierons également la valeur deKEY_NAME juste en dessous de cette section, qui remplit le champ sujet. Pour faire simple, nous l'appelleronsserver dans ce guide:

~/openvpn-ca/vars

export KEY_NAME="server"

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

Étape 4: Construire l'autorité de certification

Maintenant, nous pouvons utiliser les variables que nous avons définies et les utilitaireseasy-rsa pour construire notre autorité de certification.

Assurez-vous que vous êtes dans votre répertoire CA, puis source le fichiervars que vous venez de modifier:

cd ~/openvpn-ca
source vars

Vous devriez voir ce qui suit si la source a été correctement obtenue:

OutputNOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

Assurez-vous que nous fonctionnons dans un environnement propre en tapant:

./clean-all

Maintenant, nous pouvons construire notre autorité de certification racine en tapant:

./build-ca

Cela initiera le processus de création de la clé et du certificat de l'autorité de certification racine. Puisque nous avons rempli le fichiervars, toutes les valeurs devraient être remplies automatiquement. Appuyez simplement surENTER à travers les invites pour confirmer les sélections:

OutputGenerating a 2048 bit RSA private key
..........................................................................................+++
...............................+++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [NY]:
Locality Name (eg, city) [New York City]:
Organization Name (eg, company) [DigitalOcean]:
Organizational Unit Name (eg, section) [Community]:
Common Name (eg, your name or your server's hostname) [DigitalOcean CA]:
Name [server]:
Email Address [[email protected]]:

Nous avons maintenant une autorité de certification qui peut être utilisée pour créer le reste des fichiers dont nous avons besoin.

Étape 5: Créez le certificat de serveur, la clé et les fichiers de chiffrement

Ensuite, nous allons générer notre certificat de serveur et notre paire de clés, ainsi que certains fichiers supplémentaires utilisés pendant le processus de cryptage.

Commencez par générer le certificat de serveur OpenVPN et la paire de clés. Nous pouvons le faire en tapant:

[.note] #Note: Si vous choisissez un nom autre queserver ici, vous devrez ajuster certaines des instructions ci-dessous. Par exemple, lors de la copie des fichiers générés dans le répertoire/etc/openvpn, vous devrez remplacer les noms corrects. Vous devrez également modifier le fichier/etc/openvpn/server.conf plus tard pour pointer vers les fichiers.crt et.key corrects.
#

./build-key-server server

Encore une fois, les invites auront des valeurs par défaut basées sur l'argument que nous venons de passer (server) et le contenu de notre fichiervars que nous avons obtenu.

N'hésitez pas à accepter les valeurs par défaut en appuyant surENTER. Faitesnot entrer un mot de passe de vérification pour cette configuration. Vers la fin, vous devrez entrery à deux questions pour signer et valider le certificat:

Output. . .

Certificate is to be certified until May  1 17:51:16 2026 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Ensuite, nous allons générer quelques autres éléments. Nous pouvons générer une clé Diffie-Hellman puissante à utiliser lors de l'échange de clé en tapant:

./build-dh

Cela peut prendre quelques minutes à compléter.

Ensuite, nous pouvons générer une signature HMAC pour renforcer les capacités de vérification de l’intégrité TLS du serveur:

openvpn --genkey --secret keys/ta.key

Étape 6: générer un certificat client et une paire de clés

Ensuite, nous pouvons générer un certificat client et une paire de clés. Bien que cela puisse être fait sur la machine cliente, puis signé par le serveur / l'autorité de certification à des fins de sécurité, nous allons générer pour ce guide la clé signée sur le serveur, dans un souci de simplicité.

Nous générerons une clé / certificat client unique pour ce guide, mais si vous avez plusieurs clients, vous pouvez répéter ce processus autant de fois que vous le souhaitez. Transmettez une valeur unique au script pour chaque client.

Étant donné que vous pourrez revenir sur cette étape ultérieurement, nous allons ressourcer le fichiervars. Nous utiliseronsclient1 comme valeur pour notre premier certificat / paire de clés pour ce guide.

Pour produire des informations d'identification sans mot de passe, pour faciliter les connexions automatisées, utilisez la commandebuild-key comme ceci:

cd ~/openvpn-ca
source vars
./build-key client1

Si à la place, vous souhaitez créer un ensemble d'informations d'identification protégé par mot de passe, utilisez la commandebuild-key-pass:

cd ~/openvpn-ca
source vars
./build-key-pass client1

Encore une fois, les valeurs par défaut doivent être renseignées, vous pouvez donc simplement appuyer surENTER pour continuer. Laissez le mot de passe de vérification vide et assurez-vous de saisiry pour les invites qui vous demandent de signer et de valider le certificat.

Étape 7: Configurez le service OpenVPN

Ensuite, nous pouvons commencer à configurer le service OpenVPN en utilisant les informations d’identification et les fichiers que nous avons générés.

Copier les fichiers dans le répertoire OpenVPN

Pour commencer, nous devons copier les fichiers dont nous avons besoin dans le répertoire de configuration de/etc/openvpn.

Nous pouvons commencer avec tous les fichiers que nous venons de générer. Ceux-ci ont été placés dans le répertoire~/openvpn-ca/keys lors de leur création. Nous devons déplacer notre certificat de certification, notre certificat et notre clé de serveur, la signature HMAC et le fichier Diffie-Hellman:

cd ~/openvpn-ca/keys
sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn

Ensuite, nous devons copier et décompresser un exemple de fichier de configuration OpenVPN dans le répertoire de configuration afin de pouvoir l'utiliser comme base pour notre configuration:

gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

Ajuster la configuration OpenVPN

Maintenant que nos fichiers sont en place, nous pouvons modifier le fichier de configuration du serveur:

sudo nano /etc/openvpn/server.conf

Configuration de base

Tout d'abord, recherchez la section HMAC en recherchant la directivetls-auth. Supprimez les «;» pour décommenter la lignetls-auth:

/etc/openvpn/server.conf

tls-auth ta.key 0 # This file is secret

Ensuite, recherchez la section sur les chiffrements cryptographiques en recherchant les lignescipher commentées. Le chiffrementAES-128-CBC offre un bon niveau de chiffrement et est bien pris en charge. Supprimez les «;» pour décommenter la lignecipher AES-128-CBC:

/etc/openvpn/server.conf

cipher AES-128-CBC

En dessous, ajoutez une ligneauth pour sélectionner l'algorithme de résumé de message HMAC. Pour cela,SHA256 est un bon choix:

/etc/openvpn/server.conf

auth SHA256

Enfin, recherchez les paramètresuser etgroup et supprimez les «;» au début de pour décommenter ces lignes:

/etc/openvpn/server.conf

user nobody
group nogroup

(Facultatif) Modifiez les modifications DNS pour rediriger tout le trafic via le VPN.

Les paramètres ci-dessus créeront une connexion VPN entre les deux ordinateurs, mais ne forceront aucune connexion à utiliser le tunnel. Si vous souhaitez utiliser le VPN pour acheminer tout votre trafic, vous souhaiterez probablement appliquer les paramètres DNS aux ordinateurs clients.

Vous pouvez le faire en supprimant les commentaires de quelques directives qui vont configurer les ordinateurs clients pour qu'ils redirigent tout le trafic Web via le VPN. Recherchez la sectionredirect-gateway et supprimez le point-virgule «;» du début de la ligneredirect-gateway pour la décommenter:

/etc/openvpn/server.conf

push "redirect-gateway def1 bypass-dhcp"

Juste en dessous, trouvez la sectiondhcp-option. Encore une fois, supprimez les «;» devant les deux lignes pour les décommenter:

/etc/openvpn/server.conf

push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"

Cela devrait aider 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 client. Si vous devez utiliser un port différent en raison d'environnements réseau restrictifs dans lesquels vos clients peuvent se trouver, vous pouvez modifier l'optionport. Si vous n'hébergez pas de contenu Web sur votre serveur OpenVPN, le port 443 est un choix courant, car cela est généralement autorisé par le biais de règles de pare-feu.

/etc/openvpn/server.conf

# Optional!
port 443

Souvent, le protocole sera également limité à ce port. Si tel est le cas, remplacezproto d'UDP par TCP:

/etc/openvpn/server.conf

# Optional!
proto tcp

Si vous n'avez pas besoin d'utiliser un autre port, il est préférable de laisser ces deux paramètres par défaut.

(Facultatif) Pointez sur les informations d'identification non par défaut.

Si vous avez sélectionné un nom différent lors de la commande./build-key-server plus tôt, modifiez les lignescert etkey que vous voyez pour pointer vers les fichiers.crt et.key appropriés . Si vous avez utilisé lesserver par défaut, cela devrait déjà être défini correctement:

/etc/openvpn/server.conf

cert server.crt
key server.key

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

Étape 8: Ajustez la configuration du réseau du serveur

Ensuite, nous devons ajuster certains aspects de la mise en réseau du serveur afin qu’OpenVPN puisse correctement router le trafic.

Autoriser le transfert IP

Premièrement, nous devons autoriser le serveur à transférer le trafic. Ceci est assez essentiel pour les fonctionnalités que nous voulons que notre serveur VPN fournisse.

Nous pouvons ajuster ce paramètre en modifiant le fichier/etc/sysctl.conf:

sudo nano /etc/sysctl.conf

À l'intérieur, recherchez la ligne qui définitnet.ipv4.ip_forward. Supprimez le caractère «#» du début de la ligne pour supprimer les commentaires de ce paramètre:

/etc/sysctl.conf

net.ipv4.ip_forward=1

Enregistrez et fermez le fichier lorsque vous avez terminé.

Pour lire le fichier et ajuster les valeurs de la session en cours, tapez:

sudo sysctl -p

Ajuster les règles UFW pour masquerade les connexions client

Si vous avez suivi le guide de configuration initiale du serveur Ubuntu 16.04 dans les conditions préalables, vous devez avoir le pare-feu UFW en place. Que vous utilisiez ou non le pare-feu pour bloquer le trafic indésirable (ce que vous devriez presque toujours faire), nous avons besoin du pare-feu de ce guide pour manipuler une partie du trafic entrant sur le serveur. Nous devons modifier le fichier de règles pour configurer le masquage, un conceptiptables qui fournit un NAT dynamique à la volée pour acheminer correctement les connexions client.

Avant d'ouvrir le fichier de configuration du pare-feu pour ajouter du masquerading, nous devons trouver l'interface réseau publique de notre machine. Pour ce faire, tapez:

ip route | grep default

Votre interface publique devrait suivre le mot «dev». Par exemple, ce résultat montre l'interface nomméewlp11s0, qui est mise en évidence ci-dessous:

Outputdefault via 203.0.113.1 dev wlp11s0  proto static  metric 600

Une fois l'interface associée à votre route par défaut, ouvrez le fichier/etc/ufw/before.rules pour ajouter la configuration appropriée:

sudo nano /etc/ufw/before.rules

Ce fichier gère la configuration qui doit être mise en place avant le chargement des règles UFW conventionnelles. Vers le haut du fichier, ajoutez les lignes en surbrillance ci-dessous. Cela définira la stratégie par défaut pour la chaînePOSTROUTING dans la tablenat et masquera tout trafic provenant du VPN:

[.note] #Note: N'oubliez pas de remplacerwlp11s0 dans la ligne-A POSTROUTING ci-dessous par 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 wlp11s0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -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é.

Nous devons également indiquer à UFW d'autoriser les paquets transférés par défaut. Pour ce faire, nous allons ouvrir le fichier/etc/default/ufw:

sudo nano /etc/default/ufw

À l'intérieur, recherchez la directiveDEFAULT_FORWARD_POLICY. Nous allons changer la valeur deDROP àACCEPT:

/etc/default/ufw

DEFAULT_FORWARD_POLICY="ACCEPT"

Enregistrez et fermez le fichier lorsque vous avez terminé.

Ouvrez le port OpenVPN et activez les modifications

Ensuite, nous allons ajuster le pare-feu lui-même 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 sur le port 1194. Si vous avez modifié le port et / ou le protocole, remplacez les valeurs sélectionnées ici.

Nous ajouterons également le port SSH au cas où vous auriez oublié de l’ajouter en suivant le didacticiel préalable:

sudo ufw allow 1194/udp
sudo ufw allow OpenSSH

Maintenant, nous pouvons désactiver et réactiver UFW pour charger les modifications à partir de tous les fichiers que nous avons modifiés:

sudo ufw disable
sudo ufw enable

Notre serveur est maintenant configuré pour gérer correctement le trafic OpenVPN.

Étape 9: Démarrer et activer le service OpenVPN

Nous sommes enfin prêts à démarrer le service OpenVPN sur notre serveur. Nous pouvons le faire en utilisant systemd.

Nous devons démarrer le serveur OpenVPN en spécifiant notre nom de fichier de configuration en tant que variable d'instance après le nom de fichier de l'unité systemd. Notre fichier de configuration pour notre serveur s'appelle/etc/openvpn/server.conf, donc nous ajouterons@server à la fin de notre fichier unité lors de son appel:

sudo systemctl start openvpn@server

Vérifiez que le service a bien démarré en tapant:

sudo systemctl status openvpn@server

Si tout s'est bien passé, votre sortie devrait ressembler à ceci:

Output● [email protected] - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta
 Main PID: 5856 (openvpn)
    Tasks: 1 (limit: 512)
   CGroup: /system.slice/system-openvpn.slice/[email protected]
           └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid

May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2
May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup
May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef]
May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST
May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed

Vous pouvez également vérifier que l'interface OpenVPNtun0 est disponible en tapant:

ip addr show tun0

Vous devriez voir une interface configurée:

Output4: tun0:  mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
    link/none
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever

Si tout s'est bien passé, activez le service pour qu'il démarre automatiquement au démarrage:

sudo systemctl enable openvpn@server

Étape 10: Créer une infrastructure de configuration client

Ensuite, nous devons mettre en place un système nous permettant de créer facilement des fichiers de configuration client.

Création de la structure du répertoire de configuration du client

Créez une structure de répertoires dans votre répertoire de base pour stocker les fichiers:

mkdir -p ~/client-configs/files

Puisque les clés de client de nos fichiers de configuration client seront incorporées, nous devrions verrouiller les autorisations sur notre répertoire interne:

chmod 700 ~/client-configs/files

Création d'une configuration de base

Ensuite, copions un exemple de configuration client dans notre répertoire à utiliser comme configuration de base:

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

Ouvrez ce nouveau fichier dans votre éditeur de texte:

nano ~/client-configs/base.conf

À l'intérieur, nous devons faire quelques ajustements.

Tout d'abord, recherchez la directiveremote. Cela pointe le client vers notre adresse de serveur OpenVPN. Cela devrait être l'adresse IP publique de votre serveur OpenVPN. Si vous avez changé le port sur lequel le serveur OpenVPN écoute, remplacez1194 par 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 server_IP_address 1194
. . .

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

~/client-configs/base.conf

proto udp

Ensuite, supprimez les commentaires des directivesuser etgroup en supprimant les «;»:

~/client-configs/base.conf

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

Trouvez les directives qui définissent lesca,cert etkey. Mettez en commentaire ces directives car nous allons ajouter les certs et les clés dans le fichier 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

Mettez en miroir les paramètrescipher etauth que nous avons définis dans le fichier/etc/openvpn/server.conf:

~/client-configs/base.conf

cipher AES-128-CBC
auth SHA256

Ensuite, ajoutez la directivekey-direction quelque part dans le fichier. Cemust doit être réglé sur «1» pour fonctionner avec le serveur:

~/client-configs/base.conf

key-direction 1

Enfin, ajoutez quelques lignescommented out. Nous voulons les inclure dans chaque configuration, mais nous ne devrions les activer que pour les clients Linux livrés avec un fichier/etc/openvpn/update-resolv-conf. Ce script utilise l'utilitaireresolvconf pour mettre à jour les informations DNS des clients Linux.

~/client-configs/base.conf

# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Si votre client exécute Linux et possède un fichier/etc/openvpn/update-resolv-conf, vous devez décommenter ces lignes du fichier de configuration du client OpenVPN généré.

Enregistrez le fichier lorsque vous avez terminé.

Création d'un script de génération de configuration

Ensuite, nous allons créer un script simple pour compiler notre configuration de base avec les fichiers de certificat, de clé et de cryptage appropriés. Cela placera la configuration générée dans le répertoire~/client-configs/files.

Créez et ouvrez un fichier appelémake_config.sh dans le répertoire~/client-configs:

nano ~/client-configs/make_config.sh

À l'intérieur, collez le script suivant:

~/client-configs/make_config.sh

#!/bin/bash

# First argument: Client identifier

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

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

Enregistrez et fermez le fichier lorsque vous avez terminé.

Marquez le fichier comme exécutable en tapant:

chmod 700 ~/client-configs/make_config.sh

Étape 11: générer des configurations client

Nous pouvons maintenant générer facilement des fichiers de configuration client.

Si vous avez suivi le guide, vous avez créé un certificat client et une clé appelés respectivementclient1.crt etclient1.key en exécutant la commande./build-key client1 à l'étape 6. Nous pouvons générer une configuration pour ces informations d'identification en nous déplaçant dans notre répertoire~/client-configs et en utilisant le script que nous avons créé:

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

Si tout s'est bien passé, nous devrions avoir un fichierclient1.ovpn dans notre répertoire~/client-configs/files:

ls ~/client-configs/files
Outputclient1.ovpn

Transfert de la configuration vers des périphériques clients

Nous devons transférer le fichier de configuration du client sur le périphérique concerné. Par exemple, cela pourrait être votre ordinateur local ou un appareil mobile.

Bien que les applications exactes utilisées pour effectuer ce transfert dépendent de votre choix et du système d’exploitation du périphérique, vous souhaitez que l’application utilise le protocole SFTP (protocole de transfert de fichiers SSH) ou SCP (Copie sécurisée) sur le backend. Cela transportera les fichiers d’authentification VPN de votre client via une connexion chiffrée.

Voici un exemple de commande SFTP utilisant notre exempleclient1.ovpn. Cette commande peut être exécutée à partir de votre ordinateur local (OS X ou Linux). Il place le fichier.ovpn dans votre répertoire personnel:

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

Voici plusieurs outils et didacticiels permettant de transférer en toute sécurité des fichiers du serveur vers un ordinateur local:

Étape 12: Installez la configuration du client

Nous allons maintenant expliquer comment installer un profil VPN client sous Windows, OS X, iOS et Android. Aucune de ces instructions du client ne dépend l'une de l'autre, alors n'hésitez pas à choisir celle qui vous convient le mieux.

La connexion OpenVPN sera appelée quel que soit le nom du fichier.ovpn. Dans notre exemple, cela signifie que la connexion sera appeléeclient1.ovpn pour le premier fichier client que nous avons généré.

les fenêtres

L'installation

L'application client OpenVPN pour Windows se trouve surOpenVPN’s Downloads page. Choisissez la version du programme d’installation appropriée à votre version de Windows.

Note

[.note] # OpenVPN a besoin de privilèges administratifs pour être installé.
#

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

C:\Program Files\OpenVPN\config

Lorsque vous lancez OpenVPN, celui-ci voit automatiquement le profil et le rend disponible.

OpenVPN doit être exécuté en tant qu’administrateur chaque fois qu’il est utilisé, même par des comptes administratifs. Pour ce faire sans avoir à cliquer avec le bouton droit de la souris et sélectionnerRun as administrator chaque fois que vous utilisez le VPN, vous pouvez le prérégler, mais cela doit être fait à partir d'un compte administratif. Cela signifie également que les utilisateurs standard devront saisir le mot de passe de l'administrateur pour utiliser OpenVPN. D’autre part, les utilisateurs standard ne peuvent pas se connecter correctement au serveur à moins que l’application OpenVPN sur le client dispose des droits d’administrateur. Les privilèges élevés sont donc nécessaires.

Pour configurer l'application OpenVPN pour qu'elle s'exécute toujours en tant qu'administrateur, cliquez avec le bouton droit sur son icône de raccourci et accédez àProperties. Au bas de l'ongletCompatibility, cliquez sur le bouton pourChange settings for all users. Dans la nouvelle fenêtre, vérifiezRun this program as an administrator.

De liaison

Chaque fois que vous lancez l'interface graphique OpenVPN, Windows vous demande si vous souhaitez autoriser le programme à modifier votre ordinateur. Cliquez surYes. Le lancement de l'application client OpenVPN place uniquement l'applet dans la barre d'état système de sorte que le VPN puisse être connecté et déconnecté si nécessaire. la connexion VPN n’est pas réellement établie.

Une fois OpenVPN démarré, établissez une connexion en accédant à 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électionnezclient1 en haut du menu (c'est notre profilclient1.ovpn) et choisissezConnect.

Une fenêtre d'état s'ouvre et affiche la sortie du journal lorsque la connexion est établie. Un message s'affiche une fois le client 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 sur l'icône de l'applet OpenVPN, sélectionnez le profil client et cliquez surDisconnect.

OS X

L'installation

Tunnelblick est un client OpenVPN gratuit et open source pour Mac OS X. Vous pouvez télécharger la dernière image disque à partir desTunnelblick Downloads page. Double-cliquez sur le fichier.dmg téléchargé et suivez les invites d'installation.

Vers la fin du processus d'installation, Tunnelblick vous demandera si vous avez des fichiers de configuration. Il peut être plus facile de répondre àNo et de laisser Tunnelblick terminer. Ouvrez une fenêtre du Finder et double-cliquez surclient1.ovpn. Tunnelblick installera le profil du client. Des privilèges administratifs sont requis.

De liaison

Lancez Tunnelblick en double-cliquant sur Tunnelblick dans le dossierApplications. Une fois Tunnelblick lancé, une icône Tunnelblick apparaîtra dans la barre de menus en haut à droite de l'écran pour contrôler les connexions. Cliquez sur l'icône, puis sur l'élément de menuConnect pour lancer la connexion VPN. Sélectionnez la connexionclient1.

Linux

L'installation

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

La manière la plus universelle de se connecter consiste toutefois à utiliser le logiciel OpenVPN.

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

sudo apt-get update
sudo apt-get install openvpn

Sur CentOS, vous pouvez activer les référentiels EPEL puis l’installer en tapant:

sudo yum install epel-release
sudo yum install openvpn

Configuration

Vérifiez si votre distribution inclut un script/etc/openvpn/update-resolv-conf:

ls /etc/openvpn
Outputupdate-resolve-conf

Ensuite, éditez le fichier de configuration du client OpenVPN que vous avez transféré:

nano client1.ovpn

Décommentez les trois lignes que nous avons placées pour ajuster les paramètres DNS si vous pouviez trouver un fichierupdate-resolv-conf:

client1.ovpn

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

Si vous utilisez CentOS, modifiez lesgroup denogroup ànobody pour correspondre aux groupes disponibles de la distribution:

client1.ovpn

group nobody

Enregistrez et fermez le fichier.

Maintenant, vous pouvez vous connecter au VPN en pointant simplement la commandeopenvpn vers le fichier de configuration client:

sudo openvpn --config client1.ovpn

Cela devrait vous connecter à votre serveur.

iOS

L'installation

Depuis l'iTunes App Store, recherchez et installezOpenVPN Connect, l'application client officielle iOS OpenVPN. Pour transférer la configuration de votre client iOS sur le périphérique, connectez-le directement à un ordinateur.

La réalisation du transfert avec iTunes sera décrite ici. Ouvrez iTunes sur l'ordinateur et cliquez suriPhone>apps. Faites défiler vers le bas jusqu'à la sectionFile Sharing et cliquez sur l'application OpenVPN. La fenêtre vide à droite,OpenVPN Documents, sert au partage de fichiers. Faites glisser le fichier.ovpn vers la fenêtre Documents OpenVPN.

iTunes showing the VPN profile ready to load on the iPhone

Lancez maintenant l'application OpenVPN sur l'iPhone. Il y aura une notification qu'un nouveau profil est prêt à importer. Appuyez sur le signe plus vert pour l'importer.

The OpenVPN iOS app showing new profile ready to import

De liaison

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

Note

[.note] # Le commutateur VPN sousSettings ne peut pas être utilisé pour se connecter au VPN. Si vous essayez, vous recevrez un avis vous demandant de vous connecter uniquement à l'aide de l'application OpenVPN.
#

The OpenVPN iOS app connected to the VPN

Android

L'installation

Ouvrez le Google Play Store. Recherchez et installezAndroid OpenVPN Connect, l'application client officielle Android OpenVPN.

Le profil.ovpn peut être transféré en connectant le périphérique Android à votre ordinateur par USB et en copiant le fichier. Si vous disposez d’un lecteur de carte SD, vous pouvez également retirer la carte SD de l’appareil, y copier le profil, puis réinsérer la carte dans l’appareil Android.

Démarrez l'application OpenVPN et appuyez sur le menu pour importer le profil.

The OpenVPN Android app profile import menu selection

Accédez ensuite à l'emplacement du profil enregistré (la capture d'écran utilise/sdcard/Download/) et sélectionnez le fichier. L'application notera que le profil a été importé.

The OpenVPN Android app selecting VPN profile to import

De liaison

Pour vous connecter, appuyez simplement sur le boutonConnect. On vous demandera si vous faites confiance à l’application OpenVPN. ChoisissezOK pour lancer la connexion. Pour vous déconnecter du VPN, revenez à l'application OpenVPN et choisissezDisconnect.

The OpenVPN Android app ready to connect to the VPN

Étape 13: Testez votre connexion VPN

Une fois que tout est installé, une simple vérification confirme que tout fonctionne correctement. Sans avoir une connexion VPN activée, ouvrez un navigateur et accédez àDNSLeakTest.

Le site renverra l'adresse IP attribuée par votre fournisseur de services Internet et tel que vous apparaissez dans le monde entier. Pour vérifier vos paramètres DNS via le même site Web, cliquez surExtended Test et il vous indiquera quels serveurs DNS vous utilisez.

Connectez maintenant le client OpenVPN au VPN de votre Droplet et actualisez le navigateur. L'adresse IP complètement différente de votre serveur VPN devrait maintenant apparaître. C'est ainsi que tu apparais au monde. Encore une fois,DNSLeakTest’sExtended Test vérifiera vos paramètres DNS et confirmera que vous utilisez maintenant les résolveurs DNS poussés par votre VPN.

Étape 14: révocation des certificats clients

Il peut parfois être nécessaire de révoquer un certificat client pour empêcher tout accès ultérieur au serveur OpenVPN.

Pour ce faire, entrez votre répertoire CA et re-sourcez le fichiervars:

cd ~/openvpn-ca
source vars

Ensuite, appelez la commanderevoke-full en utilisant le nom du client que vous souhaitez révoquer:

./revoke-full client3

Cela affichera une sortie, se terminant parerror 23. Ceci est normal et le processus doit avoir généré avec succès les informations de révocation nécessaires, qui sont stockées dans un fichier appelécrl.pem dans le sous-répertoirekeys.

Transférez ce fichier dans le répertoire de configuration de/etc/openvpn:

sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn

Ensuite, ouvrez le fichier de configuration du serveur OpenVPN:

sudo nano /etc/openvpn/server.conf

Au bas du fichier, ajoutez l'optioncrl-verify, afin que le serveur OpenVPN vérifie la liste de révocation de certificats que nous avons créée à chaque fois qu'une tentative de connexion est effectuée:

/etc/openvpn/server.conf

crl-verify crl.pem

Enregistrez et fermez le fichier.

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

sudo systemctl restart openvpn@server

Le client devrait désormais pouvoir plus se connecter au serveur avec les anciennes informations d'identification.

Pour révoquer des clients supplémentaires, procédez comme suit:

  1. Générez une nouvelle liste de révocation de certificats en recherchant le fichiervars dans le répertoire~/openvpn-ca, puis en appelant le scriptrevoke-full sur le nom du client.

  2. Copiez la nouvelle liste de révocation de certificats dans le répertoire/etc/openvpn pour écraser l'ancienne liste.

  3. Redémarrez le service OpenVPN.

Ce processus peut être utilisé pour révoquer tous les certificats que vous avez déjà émis pour votre serveur.

Conclusion

Toutes nos félicitations! Vous naviguez maintenant en toute sécurité sur Internet, protégeant ainsi votre identité, votre emplacement et le trafic des fouineurs et des censeurs.

Pour configurer plus de clients, il vous suffit de suivre les étapes6 et11-13 pour chaque périphérique supplémentaire. Pour révoquer l'accès aux clients, suivez l'étape14.