les dernières informations

Créez un réseau privé virtuel (VPN) sous Linux à l'aide d'OpenVPN

Les réseaux privés virtuels (VPN) vous permettent de masquer les transferts de données Internet et d'améliorer la sécurité lorsque vous surfez sur Internet à partir de lieux publics. De nombreux fournisseurs de services en ligne vous proposent des options VPN gratuites et payantes. Cependant, même les plans les mieux payés peuvent parfois être peu fiables ou lents.

Si vous ne pouvez que créer VPN Entre votre ordinateur portable et votre ordinateur personnel.

En fait, ce processus est plus facile que vous ne le pensez. Aujourd'hui, nous allons discuter de la façon dont vous pouvez utiliser OpenVPN pour établir une connexion sécurisée entre le client et le serveur sur une machine Linux.

Créer un réseau privé virtuel (VPN) sous Linux avec OpenVPN - Linux

Gardez à l'esprit que nous allons créer une configuration de routage, pas Outil de connexion , Qui devrait convenir à la plupart des situations d'utilisation. Les utilisateurs Windows peuvent suivre la commande en lisant Documentation OpenVPN , En commençant par la section sur la préparation de l'autorité de certification. Les commandes utilisées dans Windows seront similaires à celles décrites ci-dessous.

De quoi avez-vous besoin

Vous aurez besoin de deux ordinateurs - l'un est le serveur tandis que l'autre est le client. Le périphérique serveur peut être un bureau à domicile ou une instance Linux de DigitalOcean ou Linode. L'ordinateur client est l'ordinateur que vous utilisez régulièrement. Étant donné que ce didacticiel est sous Linux, les deux périphériques doivent également exécuter le système d'exploitation Linux.

Note: Dans ce tutoriel, nous utiliserons Ubuntu comme distribution pour le serveur et le client.

Installez OpenVPN

Pour commencer, vous devez installer OpenVPN et Easy-RSA sur votre serveur. Ensuite, installez OpenVPN sur votre machine client.

Sur Ubuntu, vous devez installer Easy-RSA à partir de Cette page Github. Ubuntu inclut une version Easy-RSA de 2 dans ses dépôts. Le lien Github fournit la version 3 de Easy-RSA, qui suit les commandes que j'utiliserai dans cet article.

sudo apt-get install openvpn
git clone https://github.com/OpenVPN/easy-rsa.git

Dans le répertoire dans lequel vous avez copié le référentiel Github, copiez le répertoire «easyrsa3» qu'il contient dans «/ etc / easy-rsa /».

sudo mkdir /etc/easy-rsa
sudo cp -r ./easyrsa3/* /etc/easy-rsa/

Infrastructure à clé publique (PKI)

OpenVPN utilise l'infrastructure à clé publique (PKI) pour identifier les serveurs et les clients afin que ces entités distinctes puissent communiquer entre elles. PKI utilise une autorité de certification principale (CA) avec des certificats individuels et des clés privées pour chaque serveur et client.

L'autorité de certification doit enregistrer les certificats de serveur et de client. OpenVPN vérifie ensuite que le serveur authentifie l'identité de chaque client et, en même temps, chaque client vérifie l'identité du serveur.

Le paramètre ici est plus complexe que celui que vous pourriez trouver dans les connexions de type PPTP, mais il offre une meilleure sécurité pour vos utilisateurs et donne au serveur plus de liberté pour accepter ou rejeter les connexions client entrantes demandées.

Créer un certificat CA

Afin de renforcer la sécurité, nous recommandons que votre périphérique CA soit différent de votre serveur. Pour résumer, cet article utilisera le même périphérique pour les deux tâches. Vous devez changer les routines de copie de fichiers pour s'adapter à votre position - que ce soit en utilisant scp pour déplacer le réseau ou en utilisant une clé USB pour transférer les fichiers manuellement.

Remarque: Si vous utilisez un ordinateur distinct en tant que CA, vous devez installer Easy-RSA sur cet appareil.

1. Remplacez la preuve par "/ etc / easy-rsa /:"

cd / etc / easy-rsa /

2. Si nécessaire, copiez "/etc/easy-rsa/vars.example" dans "/ etc / easy-rsa / vars", puis ouvrez vars pour éditer son contenu:

sudo cp ./vars.example ./vars

sudo nano ./vars

3. Entrez des informations telles que votre pays, votre province, votre ville, votre établissement et votre adresse e-mail. Supprimez les polices existantes en supprimant "#" au début de chaque.

Créer un réseau privé virtuel (VPN) sous Linux avec OpenVPN - Linux
Une fois l'édition terminée, sauvegardez (Ctrl + O) et quittez (Ctrl + X).
4. Configurez votre nouvelle infrastructure à clé publique et générez la clé principale de référence de certificat que vous utiliserez pour enregistrer les certificats de serveur et de client individuels:
export EASYRSA=$(pwd)

sudo ./easyrsa init-pki

sudo ./easyrsa build-ca
Copiez le fichier ca.crt que vous venez de créer dans le répertoire du serveur OpenVPN. Vous devez également changer son propriétaire et sa collection avec Chown:
sudo cp /etc/easy-rsa/pki/ca.crt /etc/openvpn/server/

sudo chown root:root /etc/openvpn/server/ca.cr

Créer un certificat de serveur et une clé privée

Vous devez revenir au répertoire Easy-RSA et créer le certificat de serveur et sa propre clé:
cd /etc/easy-rsa

sudo ./easyrsa init-pki

sudo ./easyrsa gen-req ServerName nopass

Vous pouvez changer le "ServerName" dans la commande ci-dessus pour n'importe quel nom que vous voulez. Assurez-vous que cette modification est inversée lorsque vous copiez la nouvelle clé dans le répertoire du serveur OpenVPN:

sudo cp /etc/easy-rsa/pki/private/ServerName.key / etc / openvpn / server /

Comment échanger des clés

OpenVPN utilise la méthode d'échange de clés Diffie-Hellman (DH) pour partager en toute sécurité les clés de chiffrement sur le réseau. Vous allez créer un fichier DH Parameters en utilisant la commande suivante:

sudo openssl dhparam -out /etc/openvpn/server/dh.pem 2048

Dans cette commande, le nombre final, 2048, affiche le nombre de bits utilisés pour créer le fichier. Par exemple, vous pouvez utiliser 4096, mais cela prendra plus de temps pour créer le fichier et n'améliorera pas grandement la sécurité. La valeur par défaut est 2048 et cette valeur est suffisante pour la plupart des cas d'utilisation.

Authentification des messages basés sur le hachage

OpenVPN utilise également l'authentification HMAC pour se protéger contre les vulnérabilités d'authentification SSL / TLS. Créez le fichier en utilisant cette commande:

sudo openvpn --genkey --secret /etc/openvpn/server/ta.key

Fichiers clients

À ce stade, vous avez créé un certain nombre de fichiers pour votre serveur. Il est maintenant temps de créer des fichiers pour vos clients. Vous pouvez répéter ce processus plusieurs fois à autant de clients que vous le souhaitez. Vous pouvez créer en toute sécurité des fichiers clients sur n'importe quel ordinateur sur lequel Easy-RSA est installé.

Entrez dans le répertoire Easy-RSA et configurez à nouveau PKI si vous ne l'avez pas déjà fait:

cd /etc/easy-rsa

sudo ./easyrsa init-pki

Créez la clé du client et le certificat. Changez de répertoire si vous passez l'étape précédente.

cd /etc/easy-rsa

sudo ./easyrsa gen-req ClientName nopass

Si vous répétez le processus, vous n'avez pas besoin de configurer une PKI pour chaque nouveau client. Assurez-vous juste de changer "ClientName" pour être unique à chaque fois.

Enregistrement du serveur et certificats clients

CA devrait maintenant enregistrer vos certificats de serveur et de client.

Si vous regardez le fichier "/ etc / easyrsa / pki / req /", vous devriez voir toutes les demandes de fichiers (.req) a été créé dans Easy-RSA commandes précédentes genrc-rech easyrsa.

Créer un réseau privé virtuel (VPN) sous Linux avec OpenVPN - Linux

Dans cette capture d'écran, il n'y a que deux fichiers .req. Votre numéro variera si vous faites plus d'un client à l'étape précédente.

Si vous utilisez un périphérique CA distinct, vous devez maintenant déplacer ces fichiers .req vers l'autorité de certification pour les enregistrer. Une fois cette opération terminée, passez au répertoire Easy-RSA et enregistrez vos fichiers à l'aide des commandes suivantes, en vérifiant que l'emplacement approprié pour chaque adresse .req et le nom de chaque serveur et client sont inversés.

cd /etc/easy-rsa
sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ServerName.req Server1
sudo ./easyrsa import-req /etc/easy-rsa/pki/reqs/ClientName.req Client1
sudo ./easyrsa sign-req server Server1
sudo ./easyrsa sign-req client Client1

Notez que vous devrez fournir à Easy-RSA un nom différent pour vos certificats de serveur et de client. ServerName.req sera utilisé ici, par exemple, pour créer Server1.crt.

Vous devriez maintenant trouver deux fichiers nouveaux - « /etc/easy-rsa/pki/issued/Server1.crt » et « /etc/easy-rsa/pki/issued/Client1.crt » - seront transférés à chacun des deux dispositifs (voir dans la section suivante de cet article). Vous pouvez supprimer tous les fichiers .req restent.

Trafic le long des fichiers .CRT

Maintenant, les certificats signés (tous .crt) sont prêts à travailler pour leurs propriétaires. Déplacez le fichier du serveur sur son site OpenVPN et créez un nouveau répertoire pour les certificats clients:

sudo mv /etc/easy-rsa/pki/issued/Server1.crt /etc/openvpn/server/

sudo chown root:root /etc/openvpn/server/Server1.crt

sudo mkdir /etc/easy-rsa/pki/signed

sudo mv /etc/easy-rsa/pki/issued/Client1.crt /etc/easy-rsa/pki/signed/

Donne la création d'un dossier « ... pki / signé / » sites classés ici pour placer plusieurs certificats pour le client.

Fichiers serveur et client

Maintenant, vous devriez avoir cinq fichiers dans le répertoire « / etc / openvpn / serveur / »: ca.crt et dh.pem et Server1.crt et ServerName.key et ta.key.

Vous aurez besoin de deux de ces mêmes fichiers dans le dossier client OpenVPN sur l'ordinateur client. Vous devez les copier en utilisant un scp ou un disque flash, selon le cas. Copiez tous les "/etc/openvpn/server/ca.crt" et "/etc/openvpn/server/ta.key" à "/ etc / openvpn / / client."

Assurez-vous de copier le certificat client et la clé de ce même endroit. Copiez le "/etc/easy-rsa/pki/signed/Client1.crt" et "/etc/easy-rsa/pki/private/ClientName.key" à votre client "/ etc / openvpn / client /". Répétez cette procédure pour tous les clients supplémentaires peuvent be've créé.

Pour tout client, vous devriez maintenant avoir quatre fichiers dans "/ etc / openvpn / client:" Client1.crt et ClientName.key et ca.crt et ta.key.

Fichiers de configuration du serveur et du client

Votre dernière étape avant de démarrer un VPN consiste à éditer les fichiers de configuration pour votre serveur et votre client. Tout d'abord, localisez les fichiers "server.conf" par défaut et le fichier "client.conf". Ils peuvent être à l'un de ces endroits:

“/usr/share/openvpn/examples”

"/ usr / share / doc / openvpn / examples / sample-config-files /" (توجد إعدادات Ubuntu هنا)

NOTE: Dans Ubuntu, vous devrez décompresser le fichier "server.conf.gz". Utilisez gunzip -d ./server.conf.gz pour obtenir le fichier server.conf du package de CD-ROM.

Copiez chaque fichier de configuration dans le répertoire / etc / openvpn / server / et / etc / openvpn / client.

Dans server.conf, apportez les modifications suivantes. Assurez-vous que les noms et emplacements de ca.crt, Server1.crt, ServerName.key et dh.pem sont répertoriés dans votre fichier d'initialisation. Vous pouvez utiliser des chemins complets, tels que la ligne "cert /etc/openvpn/server/Server1.crt".

Créer un réseau privé virtuel (VPN) sous Linux avec OpenVPN - Linux

Changez la ligne tls-auth ... pour lire tls-crypt ta.key. Encore une fois, il peut être nécessaire d'avoir un chemin complet.

Créer un réseau privé virtuel (VPN) sous Linux avec OpenVPN - Linux

(Supprimer ";") de la ligne "user nobody" et "group nobody".

Créer un réseau privé virtuel (VPN) sous Linux avec OpenVPN - Linux

Pour vos clients, sera des changements similaires. Après avoir créé le fichier de configuration, contrairement aux noms et emplacements ca.crt et Client1.crt et ClientName.key et ta.key (avec la même étape du tls-auth ... à tls-crypt ...), entrez le nom ou l'adresse IP et le port de votre serveur.

Créer un réseau privé virtuel (VPN) sous Linux avec OpenVPN - Linux

Temps de communication

Vous pouvez maintenant démarrer votre serveur et votre client. C'est une question simple si tout va au-dessus comme prévu.

Démarrer le serveur avec:

openvpn /etc/openvpn/server/server.conf

Client avec:

openvpn /etc/openvpn/client/client.conf

Une création VPN réussie apparaît lorsque le client lit "Configuration Sequence Terminé" à la fin de sa sortie. Vous trouverez également un nouveau type de connectivité dans vos interfaces réseau disponibles.

Créer un réseau privé virtuel (VPN) sous Linux avec OpenVPN - Linux

Cette capture d'écran montre l'interface "tun0". C'est ce que le serveur OpenVPN a fait. Vous pouvez voir son adresse comme 10.8.0.1 et envoyer une requête ping à cette adresse du client pour vérifier une connexion réussie.

Créer un réseau privé virtuel (VPN) sous Linux avec OpenVPN - Linux

Acheminer le trafic Internet via le serveur

À ce stade, vous devrez probablement accéder à Internet via votre serveur à partir du client distant. Pour ce faire, vous devez d'abord modifier le fichier de configuration du serveur. Ajoutez la ligne "push-gateway def1" à votre fichier de configuration du serveur.

echo "push \" redirect-gateway def1 \ "" | sudo tee -a /etc/openvpn/server/server.conf

Vous devrez également indiquer à votre serveur d'acheminer correctement les demandes de trafic Internet du client. Cette commande va changer les règles de filtrage de vos paquets Iptables:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Si vous n'avez pas modifié la ligne "serveur 10.8.0.0 255.255.255.0" dans le fichier server.conf, l'adresse IP doit fonctionner dans cette commande. Vous devrez changer "eth0" pour correspondre à l'interface ethernet de votre serveur. Vous pouvez voir sur les captures d'écran précédentes que mon appareil utilise "enp19s0".

Ensuite, vous pouvez envoyer les paramètres DNS au client. Aucune adresse ne peut être payée au client. Vous pouvez utiliser cette commande comme point de départ:

echo "push \"dhcp-option DNS 10.8.0.1\"" | sudo tee -a /etc/openvpn/server/server.conf

Enfin, vous pouvez activer la redirection de paquets sur le serveur comme suit:

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

Vous devriez maintenant être en mesure d'utiliser le client pour accéder à Internet via un VPN.

Conclusion

Je sais que c'était un long chemin. Nous espérons que vous avez réussi à mettre en place un VPN et à vous connecter à Internet de manière sûre.

Si rien d'autre, ce sera une bonne expérience d'apprentissage pour ce dont vous avez besoin pour créer un tunnel numérique sécurisé. Merci de me rejoindre jusqu'à la fin.

source
Aller au bouton supérieur