Un réseau privé virtuel (VPN) est une connexion sécurisée et cryptée entre deux réseaux et des utilisateurs individuels qui protège votre connexion Internet et votre confidentialité en ligne. OpenVPN est un protocole VPN gratuit et open source qui met en œuvre des techniques pour créer un point à point sécurisé dans des configurations routées. Il est multiplateforme et compatible avec tous les principaux systèmes d'exploitation.
Dans ce tutoriel, nous allons vous montrer comment installer et configurer OpenVPN sur le serveur Debian 10.
Prérequis
- VPS Debian 10 (nous utiliserons notre plan VPS NVMe 2)
- Accès au compte utilisateur root (ou accès à un compte administrateur avec privilèges root)
Étape 1 :Connectez-vous au serveur et mettez à jour les packages du système d'exploitation du serveur
Tout d'abord, connectez-vous à votre serveur Debian 10 via SSH en tant qu'utilisateur root :
ssh root@IP_Address -p Port_number
Vous devrez remplacer "IP_Address" et "Port_number" par l'adresse IP et le numéro de port SSH respectifs de votre serveur. De plus, remplacez "root" par le nom d'utilisateur du compte administrateur si nécessaire.
Avant de commencer, vous devez vous assurer que tous les packages du système d'exploitation Debian installés sur le serveur sont à jour. Vous pouvez le faire en exécutant les commandes suivantes :
apt-get update -y apt-get upgrade -y
Étape 2 :Installez OpenVPN et EasyRSA
Par défaut, OpenVPN est inclus dans le référentiel par défaut de Debian. Vous pouvez l'installer avec la commande suivante :
apt-get install openvpn -y
Une fois le package OpenVPN installé, vous devrez télécharger EasyRSA sur votre système.
EasyRSA est un utilitaire de ligne de commande pour créer et gérer une autorité de certification PKI. Il vous permet de générer plusieurs types de certificats.
Il est utilisé pour créer une autorité de certification racine, et demander et signer des certificats pour OpenVPN.
Vous pouvez télécharger la dernière version d'EasyRSA à partir du référentiel Git à l'aide de la commande suivante :
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.8/EasyRSA-3.0.8.tgz
Une fois le téléchargement terminé, extrayez le fichier téléchargé à l'aide de la commande suivante :
tar -xvzf EasyRSA-3.0.8.tgz
Ensuite, copiez le répertoire extrait dans le répertoire OpenVPN :
cp -r EasyRSA-3.0.8 /etc/openvpn/easy-rsa
À ce stade, OpenVPN et EasyRSA sont installés sur votre serveur.
Étape 3 :Créer l'autorité de certification
Ensuite, vous devrez créer l'autorité de certification (CA) pour OpenVPN.
Tout d'abord, changez le répertoire en EasyRSA avec la commande suivante :
cd /etc/openvpn/easy-rsa
Ensuite, vous devrez créer un fichier vars à l'intérieur de celui-ci. Un fichier vars est un fichier simple qu'Easy-RSA utilisera pour la configuration.
Vous pouvez le créer avec la commande suivante :
nano vars
Ajoutez les lignes suivantes selon vos besoins :
set_var EASYRSA "$PWD" set_var EASYRSA_PKI "$EASYRSA/pki" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "USA" set_var EASYRSA_REQ_PROVINCE "Newyork" set_var EASYRSA_REQ_CITY "Newyork" set_var EASYRSA_REQ_ORG "ROSE CERTIFICATE AUTHORITY" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "ROSE EASY CA" set_var EASYRSA_KEY_SIZE 2048 set_var EASYRSA_ALGO rsa set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 365 set_var EASYRSA_NS_SUPPORT "no" set_var EASYRSA_NS_COMMENT "ROSE CERTIFICATE AUTHORITY" set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types" set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-easyrsa.cnf" set_var EASYRSA_DIGEST "sha256"
Enregistrez et fermez le fichier lorsque vous avez terminé.
Ensuite, lancez l'infrastructure à clé publique avec la commande suivante :
./easyrsa init-pki
Vous devriez obtenir le résultat suivant :
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki
Ensuite, vous devrez exécuter la commande build-ca pour créer les fichiers ca.crt et ca.key. Vous pouvez l'exécuter avec la commande suivante :
./easyrsa build-ca nopass
Plusieurs questions vous seront posées, comme indiqué ci-dessous :
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase: Generating RSA private key, 2048 bit long modulus (2 primes) ...+++++ ......................................................................+++++ e is 65537 (0x010001) 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. ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:vpnserver CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/openvpn/easy-rsa/pki/ca.crt
Étape 4 :Générer un certificat de serveur et des fichiers de clé
Ensuite, vous devrez utiliser la commande gen-req suivie du nom commun pour générer la clé du serveur.
./easyrsa gen-req vpnserver nopass
Vous devriez voir le résultat suivant :
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Generating a RSA private key .......................................................+++++ ....+++++ writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1428.Angtmh/tmp.C9prw4' ----- 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. ----- Common Name (eg: your user, host, or server name) [vpnserver]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/pki/reqs/vpnserver.req key: /etc/openvpn/easy-rsa/pki/private/vpnserver.key
Ensuite, vous devrez signer la clé vpnserver à l'aide de votre certificat CA. Vous pouvez le faire avec la commande suivante :
./easyrsa sign-req server vpnserver
Vous devriez obtenir le résultat suivant :
Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'vpnserver' Certificate is to be certified until Feb 6 14:38:52 2022 GMT (365 days) Write out database with 1 new entries Data Base Updated Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnserver.crt
Ensuite, vous devrez générer une clé Diffie-Hellman forte à utiliser pour l'échange de clés. Vous pouvez le générer avec la commande suivante :
./easyrsa gen-dh
Étape 5 :Copier tous les certificats et fichiers de clé
Ensuite, vous devrez copier tous les certificats et fichiers de clés dans le répertoire /etc/openvpn/server/. Vous pouvez copier le à l'aide de la commande suivante :
cp pki/ca.crt /etc/openvpn/server/ cp pki/dh.pem /etc/openvpn/server/ cp pki/private/vpnserver.key /etc/openvpn/server/ cp pki/issued/vpnserver.crt /etc/openvpn/server/
Étape 6 :Créer un certificat client et un fichier de clé
Ensuite, vous devrez générer un certificat et un fichier de clé pour le système client.
Vous pouvez le créer avec la commande suivante :
./easyrsa gen-req vpnclient nopass
Vous devriez obtenir le résultat suivant :
Note: using Easy-RSA configuration from: /etc/openvpn/easy-rsa/vars Using SSL: openssl OpenSSL 1.1.1f 31 Mar 2020 Generating a RSA private key ....+++++ .................................+++++ writing new private key to '/etc/openvpn/easy-rsa/pki/easy-rsa-1563.TeOf5v/tmp.i4YxLz' ----- 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. ----- Common Name (eg: your user, host, or server name) [vpnclient]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/pki/reqs/vpnclient.req key: /etc/openvpn/easy-rsa/pki/private/vpnclient.key
Ensuite, signez la clé client avec la commande suivante :
./easyrsa sign-req client vpnclient
Vous devriez obtenir le résultat suivant :
Signature ok The Subject's Distinguished Name is as follows commonName :ASN.1 12:'vpnclient' Certificate is to be certified until Feb 6 14:43:18 2022 GMT (365 days) Write out database with 1 new entries Data Base Updated Certificate created at: /etc/openvpn/easy-rsa/pki/issued/vpnclient.crt
Ensuite, copiez tous les certificats et clés du client dans le répertoire /etc/openvpn/client/.
cp pki/ca.crt /etc/openvpn/client/ cp pki/issued/vpnclient.crt /etc/openvpn/client/ cp pki/private/vpnclient.key /etc/openvpn/client/
Étape 7 :Configurer le serveur OpenVPN
À ce stade, le certificat et la clé du serveur et du client sont prêts. Maintenant, vous devrez créer un fichier de configuration OpenVPN et définir tous les certificats et clés.
nano /etc/openvpn/server.conf
Ajoutez les lignes suivantes :
port 1194 proto udp dev tun ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/vpnserver.crt key /etc/openvpn/server/vpnserver.key dh /etc/openvpn/server/dh.pem server 10.8.0.0 255.255.255.0 push "redirect-gateway def1" push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" duplicate-cn cipher AES-256-CBC tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 auth SHA512 auth-nocache keepalive 20 60 persist-key persist-tun compress lz4 daemon user nobody group nogroup log-append /var/log/openvpn.log verb 3
Enregistrez et fermez le fichier, puis démarrez le service OpenVPN et activez-le pour qu'il démarre au redémarrage du système :
systemctl start openvpn@server systemctl enable openvpn@server
Si tout va bien, une nouvelle interface sera créée. Vous pouvez le vérifier à l'aide de la commande suivante :
ip a show tun0
Vous devriez obtenir le résultat suivant :
4: tun0: mtu 1500 qdisc fq_codel 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 inet6 fe80::153d:f29:39a2:571a/64 scope link stable-privacy valid_lft forever preferred_lft forever
Étape 8 :Activer le transfert IP
Le transfert IP permet à votre système d'exploitation d'accepter les paquets réseau entrants et de les transférer vers l'autre réseau. Vous pouvez l'activer avec la commande suivante :
nano /etc/sysctl.conf
Décommentez ou ajoutez la ligne suivante :
net.ipv4.ip_forward = 1
Enregistrez le fichier puis appliquez les changements de configuration avec la commande suivante :
sysctl -p
Étape 9 :Installer et configurer le client OpenVPN
Ensuite, vous devrez installer le client OpenVPN sur un autre système et vous connecter au serveur OpenVPN.
Tout d'abord, installez OpenVPN avec la commande suivante :
apt-get install openvpn -y
Une fois installé, copiez tous les certificats et clés client du serveur OpenVPN vers la machine client. Vous pouvez le faire avec la commande suivante :
scp -r root@vpn-server-ip:/etc/openvpn/client .
Ensuite, changez le répertoire en client et créez un fichier de configuration client :
cd client nano client.ovpn
Ajoutez les lignes suivantes :
client dev tun proto udp remote vpn-server-ip 1194 ca ca.crt cert vpnclient.crt key vpnclient.key cipher AES-256-CBC auth SHA512 auth-nocache tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 resolv-retry infinite compress lz4 nobind persist-key persist-tun mute-replay-warnings verb 3
Enregistrez et fermez le fichier puis connectez-vous à votre serveur OpenVPN avec la commande suivante :
openvpn --config client.ovpn
Une fois la connexion établie, vous devriez obtenir le résultat suivant :
Sat Feb 6 14:53:50 2021 SENT CONTROL [vpnserver]: 'PUSH_REQUEST' (status=1) Sat Feb 6 14:53:50 2021 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 20,ping-restart 60,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM' Sat Feb 6 14:53:50 2021 OPTIONS IMPORT: timers and/or timeouts modified Sat Feb 6 14:53:50 2021 OPTIONS IMPORT: --ifconfig/up options modified Sat Feb 6 14:53:50 2021 OPTIONS IMPORT: route options modified
Vous pouvez vérifier l'interface OpenVPN sur la machine cliente avec la commande suivante :
ip a show tun0
Vous devriez obtenir le résultat suivant :
4: tun0: mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.8.0.6 peer 10.8.0.5/32 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::9206:94d7:8fb2:6b21/64 scope link stable-privacy valid_lft forever preferred_lft forever
Bien sûr, vous n'avez pas besoin d'installer OpenVPN si vous utilisez l'un de nos services d'hébergement OpenVPN géré, auquel cas vous pouvez simplement demander à nos administrateurs Linux experts de l'installer pour vous. Ils sont disponibles 24h/24 et 7j/7 et prendront immédiatement en charge votre demande.
PS . Si vous avez aimé cet article sur la façon d'installer OpenVPN sur Ubuntu, partagez-le avec vos amis sur les réseaux sociaux en utilisant les boutons à gauche ou laissez simplement une réponse ci-dessous. Merci.