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.
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.
export EASYRSA=$(pwd) sudo ./easyrsa init-pki sudo ./easyrsa build-ca
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
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.
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".
Changez la ligne tls-auth ... pour lire tls-crypt ta.key. Encore une fois, il peut être nécessaire d'avoir un chemin complet.
(Supprimer ";") de la ligne "user nobody" et "group nobody".
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.
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.
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.
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.