GNU/Linux >> Tutoriels Linux >  >> Debian

Comment configurer un serveur OpenVPN sur Debian 10

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.


Debian
  1. Comment configurer un serveur Samba sur Debian 10 Buster

  2. Comment configurer un serveur LAMP sur Debian 10 Buster

  3. Comment installer et configurer OpenVPN Server sur Debian 10

  4. Définir une IP Statique sur Debian 11 - Comment faire ?

  5. Comment configurer un serveur SFTP sur le serveur Debian 11

Comment configurer un serveur de messagerie avec PostfixAdmin sur Debian 11

Comment configurer un serveur de messagerie avec Modoboa sur Debian 10

Comment définir une adresse IP statique sur Debian 11

Comment configurer le serveur Rsyslog Debian 10/11

Comment configurer le serveur et le client NTP sur Debian 11

Comment installer le serveur OpenVPN sur Debian 11