GNU/Linux >> Tutoriels Linux >  >> Debian

Comment installer et configurer OpenVPN Server sur Debian 10

OpenVPN est un logiciel open source qui peut être utilisé pour accéder à Internet en toute sécurité lorsqu'il est connecté à un réseau non fiable. OpenVPN vous permet de protéger vos données en ligne en les canalisant via des serveurs cryptés. OpenVPN utilise SSL/TLS pour l'échange de clés et est capable de traverser les traducteurs d'adresses réseau. Il existe de nombreux logiciels VPN disponibles sur le marché, mais tous sont coûteux et/ou difficiles à configurer et à gérer. Bien qu'OpenVPN soit gratuit, simple à installer, à configurer et à gérer.

Dans ce tutoriel, nous expliquerons comment configurer le serveur OpenVPN sur le serveur Debian 10.

Exigences

  • Deux serveurs exécutant Debian 10.
  • Une adresse IP statique 192.168.0.103 est configurée sur le serveur VPN et 192.168.0.102 est configurée sur le client VPN.
  • Un mot de passe root est configuré sur les deux serveurs.

Installer OpenVPN

Tout d'abord, vous devrez activer le transfert IP pour transférer correctement les paquets réseau. Vous pouvez le faire en éditant le fichier /etc/sysctl.conf :

nano /etc/sysctl.conf

Modifiez la ligne suivante :

net.ipv4.ip_forward=1

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, appliquez les nouveaux paramètres en exécutant la commande suivante :

sysctl -p

Ensuite, installez le package OpenVPN en exécutant simplement la commande suivante :

apt-get install openvpn -y

Une fois l'installation terminée, vous pouvez passer à l'étape suivante.

Générer un certificat et une clé de serveur

Tout d'abord, vous devrez copier le répertoire EasyRSA dans /etc/openvpn/. Vous pouvez le faire avec la commande suivante :

cp -r /usr/share/easy-rsa /etc/openvpn/

Ensuite, changez le répertoire en easy-rsa et renommez le fichier vars.example :

cd /etc/openvpn/easy-rsa
mv vars.example vars

Ensuite, ouvrez le fichier vars :

nano vars

Ajoutez les lignes suivantes :

export KEY_COUNTRY="INDIA"
export KEY_PROVINCE="CA"
export KEY_CITY="Junagadh"
export KEY_ORG="Howtoforge"
export KEY_EMAIL="[email protected]"
export KEY_OU="OpenVPN"

Enregistrez et fermez le fichier lorsque vous avez terminé. Ensuite, initialisez PKI avec la commande suivante :

./easyrsa init-pki

Vous devriez voir le résultat suivant :

Note: using Easy-RSA configuration from: ./vars

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easy-rsa/pki

Ensuite, créez l'autorité de certification sans mot de passe comme indiqué ci-dessous :

./easyrsa build-ca nopass

Vous devriez voir le résultat suivant :

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019
Generating RSA private key, 2048 bit long modulus (2 primes)
...................................+++++
..............+++++
e is 65537 (0x010001)
Can't load /etc/openvpn/easy-rsa/pki/.rnd into RNG
140449484268672:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:98:Filename=/etc/openvpn/easy-rsa/pki/.rnd
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]:server

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

Ensuite, générez la clé du serveur avec la commande suivante :

./easyrsa gen-req server nopass

Vous devriez voir le résultat suivant :

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019
Generating a RSA private key
...+++++
................................................................................................................+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/server.key.uQ7rqU8ryK'
-----
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) [server]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/server.req
key: /etc/openvpn/easy-rsa/pki/private/server.key

Ensuite, signez le certificat du serveur avec la commande suivante :

./easyrsa sign-req server server

Vous devriez voir le résultat suivant :

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019


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 1080 days:

subject=
    commonName                = server


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'server'
Certificate is to be certified until Sep  5 15:43:29 2022 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/server.crt

Ensuite, créez un échange de clés Diffie-Hellman avec la commande suivante :

./easyrsa gen-dh

Vous devriez voir le résultat suivant :

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
...................+.............................................+..........................................................................................................................................................................................................................................................+.......+................................................................................+................+....................................+..........................+........................................+............................................................................................+.......................................................+............................+......................................................................................................+...................................................................................+.................+............+.+............................+...............................................................................................................................................+............+...............................................+................................................................................................................................................................................+.....................................................................................................................+...................................................................................................................................................................................................+.............................................+..................................................................................................................................+......................................................................................................................................+....................................+..................................................................................................................................................................................+................................................................................................+..............................................................................................+............................................................................................................................................................................................+...........+.................+.....+..........................................................................................................+..........................................................+............+......................................+............................................................................................................................................................................................................................................................................................................+..................................+.................................................................................+.............................+.....................................................................................................................................................................................................................+..........................+.......................................................+......................+.................................+..............................................................+.............................................................................................................................................................+........................................................................+...............................+...............................................................................................................+..............................................+......................................................+.......................+......................................................................................................................................................................................................................+............................................................................................................................+..........................+......................................................................................................................................................................+..........................................................................................+..........................................................++*++*++*++*

DH parameters of size 2048 created at /etc/openvpn/easy-rsa/pki/dh.pem

Ensuite, générez une signature HMAC avec la commande suivante :

openvpn --genkey --secret ta.key

Enfin, copiez tout le certificat et la clé dans le répertoire /etc/openvpn :

cp ta.key /etc/openvpn/
cp pki/ca.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/dh.pem /etc/openvpn/

Générer un certificat client et une clé

Ensuite, générez le certificat client avec la commande suivante :

./easyrsa gen-req client nopass

Vous devriez voir le résultat suivant :

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019
Generating a RSA private key
..........................................+++++
...............+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/client.key.wU45j6E0Dt'
-----
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) [client]:

Keypair and certificate request completed. Your files are:
req: /etc/openvpn/easy-rsa/pki/reqs/client.req
key: /etc/openvpn/easy-rsa/pki/private/client.key

Ensuite, signez le certificat client avec la commande suivante :

./easyrsa sign-req client client

Vous devriez voir le résultat suivant :

Note: using Easy-RSA configuration from: ./vars

Using SSL: openssl OpenSSL 1.1.1c  28 May 2019


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 client certificate for 1080 days:

subject=
    commonName                = client


Type the word 'yes' to continue, or any other input to abort.
  Confirm request details: yes
Using configuration from /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnf
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'client'
Certificate is to be certified until Sep  5 12:28:25 2022 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Certificate created at: /etc/openvpn/easy-rsa/pki/issued/client.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/client.crt /etc/openvpn/client/
cp pki/private/client.key /etc/openvpn/client/

Configurer le serveur OpenVPN

Tous les certificats et clés requis pour le serveur et le client sont maintenant générés. Ensuite, vous devrez créer un fichier de configuration OpenVPN. Vous pouvez le créer avec la commande suivante :

nano /etc/openvpn/server.conf

Ajoutez le contenu suivant :

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log         /var/log/openvpn/openvpn.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1

Enregistrez et fermez le fichier. Ensuite, démarrez le service OpenVPN avec la commande suivante :

systemctl start [email protected]

Ensuite, vérifiez le serveur OpenVPN à l'aide de la commande suivante :

systemctl status [email protected]

Sortie :

? [email protected] - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-09-21 08:46:47 EDT; 6s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
 Main PID: 5040 (openvpn)
   Status: "Initialization Sequence Completed"
    Tasks: 1 (limit: 1138)
   Memory: 1.7M
   CGroup: /system.slice/system-openvpn.slice/[email protected]
           ??5040 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --config /etc/openvpn/server.

Sep 21 08:46:47 debian systemd[1]: Starting OpenVPN connection to server...
Sep 21 08:46:47 debian systemd[1]: Started OpenVPN connection to server.

Installer et configurer le client OpenVPN

Ensuite, connectez-vous au système client OpenVPN et installez le package OpenVPN avec la commande suivante :

apt-get install openvpn -y

Une fois installé, créez un nouveau fichier de configuration pour OpenVPN Client :

nano /etc/openvpn/client.conf

Définissez l'adresse IP de votre serveur et le fichier de certificat client comme indiqué ci-dessous :

client
dev tun
proto udp
remote 192.168.0.103 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-CBC
verb 3

Enregistrez et fermez le fichier. Ensuite, copiez tout le certificat client et le fichier de clé du serveur OpenVPN vers le système client OpenVPN avec la commande suivante :

scp [email protected]:/etc/openvpn/client/ca.crt /etc/openvpn/
scp [email protected]:/etc/openvpn/client/client.crt /etc/openvpn/
scp [email protected]:/etc/openvpn/client/client.key /etc/openvpn/
scp [email protected]:/etc/openvpn/ta.key /etc/openvpn/

Ensuite, démarrez le service client OpenVPN avec la commande suivante :

systemctl start [email protected]

Maintenant, vous pouvez voir la nouvelle adresse IP attribuée par le serveur OpenVPN avec la commande suivante :

ifconfig

Vous devriez voir le résultat suivant :

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.102  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::a00:27ff:fe99:dc40  prefixlen 64  scopeid 0x20
        ether 08:00:27:99:dc:40  txqueuelen 1000  (Ethernet)
        RX packets 447  bytes 42864 (41.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 334  bytes 47502 (46.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 57  bytes 9754 (9.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 57  bytes 9754 (9.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.0.6  netmask 255.255.255.255  destination 10.8.0.5
        inet6 fe80::52b5:a1d2:fa23:f51e  prefixlen 64  scopeid 0x20
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9  bytes 472 (472.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Ensuite, accédez au système de serveur OpenVPN et vérifiez le journal OpenVPN avec la commande suivante :

tail -f /var/log/openvpn/openvpn.log

Vous devriez obtenir le résultat suivant :

Sun Sep 22 19:46:08 2019 192.168.0.103:45700 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 2048 bit RSA
Sun Sep 22 19:46:08 2019 192.168.0.103:45700 [_] Peer Connection Initiated with [AF_INET]192.168.0.103:45700
Sun Sep 22 19:46:08 2019 _/192.168.0.103:45700 MULTI_sva: pool returned IPv4=10.8.0.6, IPv6=(Not enabled)
Sun Sep 22 19:46:08 2019 _/192.168.0.103:45700 MULTI: Learn: 10.8.0.6 -> _/192.168.0.103:45700
Sun Sep 22 19:46:08 2019 _/192.168.0.103:45700 MULTI: primary virtual IP for _/192.168.0.103:45700: 10.8.0.6
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 PUSH: Received control message: 'PUSH_REQUEST'
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 SENT CONTROL [_]: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM' (status=1)
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 Data Channel: using negotiated cipher 'AES-256-GCM'
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 Outgoing Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
Sun Sep 22 19:46:09 2019 _/192.168.0.103:45700 Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key

Toutes nos félicitations! vous avez installé et configuré avec succès le serveur et le client OpenVPN sur Debian 10.


Debian
  1. Comment installer et configurer Redis 6.0 sur Debian 11

  2. Comment installer et configurer le serveur VNC sur Debian 10

  3. Comment installer et configurer Mariadb 10 dans Debian 11

  4. Comment installer et configurer MongoDB 5 sur Debian 11

  5. Comment installer et configurer Redis 6 sur Debian 11

Comment installer et configurer le serveur Web OpenLiteSpeed ​​sur Debian 10

Comment installer et configurer RabbitMQ sur Debian 11

Comment installer et configurer Memcached sur Debian 11

Comment installer et configurer le serveur NFS sur Debian 11

Comment installer et configurer le serveur Web Apache sur Debian 11

Comment installer et configurer Git dans Debian 11