GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer le serveur et le client VPN Linux à l'aide d'OpenVPN

VPN signifie réseau privé virtuel.

Un réseau privé virtuel permet à un ordinateur d'envoyer et de recevoir des données d'un réseau privé vers un autre réseau privé connecté via un réseau public (Internet).

Ceci est utile pour ceux qui sont en dehors de l'intranet de l'entreprise et qui aiment se connecter au réseau du bureau en toute sécurité pour accéder aux serveurs internes. Le VPN est également utile lorsque vous connectez plusieurs succursales ensemble.

Même lorsque vous ne connectez pas plusieurs succursales ensemble, vous pouvez toujours utiliser la configuration VPN pour permettre à vos employés de se connecter à distance depuis leur ordinateur portable au centre de données et accéder aux systèmes.

Parfois, l'entreprise achète des lignes louées pour former un WAN (Wide Area Network) et communique avec ses succursales. Bien que la ligne louée soit sécurisée et fiable, elle coûte cher.

Le VPN comble le vide en fournissant une connexion virtuelle point à point via un réseau public. Un VPN peut se développer pour accueillir facilement plus d'utilisateurs dans différentes zones géographiques.

Types de VPN

De manière générale, voici deux types de VPN :

  • Accès à distance
  • Site à site

L'accès à distance consiste à connecter un ordinateur individuel à un réseau via VPN. "Site to Site" connecte deux réseaux ensemble via VPN.

Qu'est-ce qu'OpenVPN

De l'homme OpenVPN :

OpenVPN est un démon VPN open source de James Yonan. OpenVPN est un démon VPN robuste et très flexible. OpenVPN prend en charge la sécurité SSL/TLS, le pont Ethernet, le transport par tunnel TCP ou UDP via des proxies ou NAT, la prise en charge des adresses IP dynamiques et du DHCP, l'évolutivité à des centaines ou des milliers d'utilisateurs et la portabilité vers la plupart des principales plates-formes de système d'exploitation.

Ce didacticiel explique le processus d'installation et de configuration du serveur et du client OpenVPN pour l'accès à distance.

Je. Configuration d'OpenVPN - Côté serveur

1. Installer OpenVPN

Installez le package openvpn à la fois sur le serveur et sur la machine cliente.

$ sudo apt-get install openvpn

Utilisez le gestionnaire de packages respectif de la distribution sur laquelle vous travaillez. Si vous utilisez yum, procédez comme suit

$ yum install openvpn

2. Créer des répertoires et définir des variables d'environnement

Créez un répertoire dans /etc/openvpn et copiez le easy-rsa contenu à celui-ci. Ceci est fait pour s'assurer que les modifications apportées aux scripts ne seront pas perdues lors de la mise à niveau du package. Modifiez le propriétaire en tant qu'utilisateur actuel afin que l'utilisateur actuel ait l'autorisation de créer des fichiers.

$ sudo mkdir /etc/openvpn/easy-rsa

$ sudo cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa

$ sudo chown -R $USER /etc/openvpn/easy-rsa/

Ensuite, modifiez le /etc/openvpn/easy-rsa/vars pour s'adapter à votre environnement.

export KEY_COUNTRY="IN"
export KEY_PROVINCE="TN"
export KEY_CITY="CHN"
export KEY_ORG="tgs"
export KEY_EMAIL="[email protected]"

3. Création de l'AC - Autorité de Certification (Certificat Racine)

La prochaine étape dans la construction d'un serveur openvpn consiste à établir une infrastructure à clé publique afin que le serveur et les clients puissent s'authentifier mutuellement.

$ cd /etc/openvpn/easy-rsa/

$ source vars

$ ./clean-all

$ ln -s openssl-1.0.0.cnf openssl.cnf

$ ./build-ca

Generating a 1024 bit RSA private key
........++++++
......++++++
unable to write 'random state'
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) [IN]:
State or Province Name (full name) [TN]:
Locality Name (eg, city) [CHN]:
Organization Name (eg, company) [tgs]:
Organizational Unit Name (eg, section) [changeme]:
Common Name (eg, your name or your server's hostname) [changeme]:
Name [changeme]:lakshmanan
Email Address [[email protected]]:[email protected]

Une fois ./build-ca est terminée, vous verrez un fichier nommé "ca.key ” et “ca.crt ” dans /etc/openvpn/easy-rsa/keys/

N'oubliez pas que le ".key ” les fichiers doivent rester confidentiels.

4. Création d'un certificat pour le serveur

L'étape suivante consiste à créer un certificat pour notre serveur Openvpn.

$ /etc/openvpn/easy-rsa/build-key-server vpnserver
...
...

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Notez que vpnserver est le HOSTNAME du serveur. Cette commande prendra une entrée de l'utilisateur similaire à la précédente. Cette commande créera le certificat et les fichiers de clé pour le serveur.

5. Création d'un certificat pour le client

Le client VPN aura également besoin d'un certificat pour s'authentifier auprès du serveur. Si vous souhaitez configurer plusieurs clients, vous devez créer un certificat pour chaque client séparément.

$ ./build-key vpnclient1
...
...

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

vpnclient1 est le nom d'hôte du client. Cette commande créera le certificat et les fichiers de clé pour le client.

6. Créer des paramètres Diffie Hellman

$ ./build-dh

Une fois toutes les étapes ci-dessus terminées avec succès, vous aurez de nombreux fichiers de clés et de certificats dans /etc/openvpn/easy-rsa/keys .

7. Copiez les certificats aux emplacements respectifs

Nous avons créé un certificat racine, un certificat serveur et un certificat client. Nous devons les copier aux emplacements appropriés.

$ cd /etc/openvpn/easy-rsa/keys/

$ sudo cp ca.crt vpnserver.crt vpnserver.key dh1024.pem /etc/openvpn/

$ scp ca.crt vpnclient1.key  vpnclient1.crt root@vpnclient1:/etc/openvpn

Nous avons maintenant copié le certificat client et la clé sur la machine cliente. N'oubliez pas d'utiliser un support sécurisé tel que scp lors de la copie des fichiers clés.

8. Configuration du serveur

OpenVPN fournit un server.conf par défaut. Vous pouvez le modifier selon vos besoins.

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

$ sudo gzip -d /etc/openvpn/server.conf.gz

Modifiez le "/etc/openvpn/server.conf ".

...
ca ca.crt
cert vpnserver.crt
key vpnserver.key
dh dh1024.pem
...

Démarrez maintenant le serveur OpenVPN :

$ sudo /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)... 
 * Autostarting VPN 'server'

$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255

Par défaut, openVPN consignera les erreurs dans le fichier syslog.

II. Configuration d'OpenVPN - Côté client

9. Configurer les fichiers de configuration du client

Nous allons maintenant configurer openVPN pour qu'il fonctionne en tant que client. N'oubliez pas que nous avons déjà installé le package openvpn dans le client et que nous avons "ca.crt", "vpnclient1.key", vpnclient1.crt" dans /etc/openvpn/

Copiez l'exemple client.conf dans /etc/openvpn .

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/

Modifiez le fichier /etc/openvpn/client.conf .

...
# Specify that this is openvpn client
client

remote vpnserver 1194

ca ca.crt

cert vpnclient1.crt

key vpnclient1.key
...

Démarrez maintenant OpenVPN dans le client

$ /etc/init.d/openvpn start
 * Starting virtual private network daemon(s)... 
 * Autostarting VPN 'client'

$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255

10. Testez la configuration VPN

Envoyez un ping au vpnserver depuis la machine cliente pour voir si le VPN fonctionne ou non.

$ ping 10.8.0.1

PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_req=1 ttl=64 time=2.14 ms

Si vous pouvez envoyer un ping, vous avez fait la bonne configuration.

Veuillez garder à l'esprit ce qui suit :

  1. Assurez-vous que le client et le serveur utilisent le même protocole et le même numéro de port.
  2. Le client et le serveur doivent utiliser la même configuration concernant certains paramètres tels que la taille de clé, la compression, etc.
  3. En cas de problème, augmentez la verbosité du journal dans la configuration et consultez le fichier syslog pour le dépannage.

Linux
  1. Comment configurer le serveur et le client NTP sur Debian 9 Stretch Linux

  2. Comment configurer le serveur et le client NFS sur Rocky/Alma Linux 8

  3. Comment installer et configurer cPanel sur un serveur Linux

  4. Comment configurer SSH sans mot de passe sous Linux

  5. Comment installer et configurer le serveur et le client NIS YPServ Linux

Comment configurer un serveur VPN à l'aide de Pritunl sur Ubuntu 18.04 LTS

Comment configurer le serveur de sauvegarde à l'aide de Rsnapshot sous Linux

Comment configurer un serveur multimédia en streaming à l'aide de Jellyfin sous Linux

Comment configurer le client et le serveur NFS sous Linux

Comment configurer le serveur et le client NTP sur Ubuntu 20.04 LTS

Comment se connecter à un VPN avec OpenVPN