Un VPN est également connu sous le nom de «réseau privé virtuel», une technologie qui vous permet de créer un réseau privé sécurisé sur l'Internet public. Cela vous aidera à chiffrer votre trafic Internet et à protéger votre identité en ligne. Il est principalement utilisé pour connecter deux réseaux professionnels en toute sécurité sur Internet et vous permet de connecter un réseau professionnel depuis votre domicile.
En termes simples, un VPN connecte votre mobile, ordinateur et tablette à un autre ordinateur (serveur) sur Internet et vous permet d'accéder à Internet en utilisant l'Internet de cet ordinateur et également d'accéder à la ressource du réseau local en contournant à distance la censure d'Internet.
Dans ce tutoriel, nous allons vous montrer comment installer et configurer le serveur OpenVPN sur CentOS 8.
Étape 1 - Désactiver SELinux
Avant de commencer, c'est une bonne idée de désactiver SELinux dans votre système.
Pour désactiver SELinux, ouvrez le fichier /etc/selinux/config :
nano /etc/selinux/config
Modifiez la ligne suivante :
SELINUX=désactivé
Enregistrez le fichier lorsque vous avez terminé. Ensuite, redémarrez votre système pour appliquer les modifications SELinux.
Étape 2 - Activer le transfert IP
Ensuite, vous devrez activer le transfert IP dans votre système. 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 si la destination se trouve sur un autre réseau.
Pour activer le transfert IP, éditez le fichier /etc/sysctl.conf :
nano /etc/sysctl.conf
Ajoutez la ligne suivante :
net.ipv4.ip_forward =1
Enregistrez le fichier lorsque vous avez terminé. Ensuite, exécutez la commande suivante pour appliquer les modifications :
sysctl -p
Étape 3 - Installer le serveur OpenVPN
Par défaut, vous devrez installer le référentiel EPEL sur votre système afin d'installer la dernière version d'OpenVPN.
Exécutez la commande suivante pour installer le référentiel ELEP :
dnf install epel-release -y
Une fois installé, exécutez la commande suivante pour installer la dernière version d'OpenVPN :
dnf install openvpn -y
Une fois l'installation terminée, vous devrez également télécharger easy-rsa pour la gestion des certificats SSL.
Exécutez la commande suivante pour télécharger easy-rsa dans le répertoire /etc/openvpn.
cd /etc/openvpn wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz Ensuite, exécutez la commande suivante pour extraire le fichier téléchargé :
tar -xvzf EasyRSA-unix-v3.0.6.tgz Ensuite, renommez le répertoire extrait en easy-rsa :
mv EasyRSA-v3.0.6 easy-rsa Étape 4 - Configurer l'autorité de certification
Easy RSA utilise un ensemble de scripts pour générer des clés et des certificats. Tout d'abord, vous devrez configurer l'autorité de certification sur votre système.
Pour ce faire, changez le répertoire en /etc/openvpn/easy-rsa et créez un nouveau fichier de configuration Easy RSA :
cd /etc/openvpn/easy-rsa variables nano Ajoutez les lignes suivantes, y compris votre pays, votre ville et votre adresse e-mail préférée :
set_var EASYRSA "$ PWD" set_var EASYRSA_PKI "EASYRSA $ / pki" set_var EASYRSA_DN "cn_only" EASYRSA_REQ_COUNTRY set_var "INDE" EASYRSA_REQ_PROVINCE set_var "Gujrat" EASYRSA_REQ_CITY set_var "Ahmedabad" set_var EASYRSA_REQ_ORG "Tecadmin Autorité chargée" set_var EASYRSA_REQ_EMAIL « [email protected ] "set_var EASYRSA_REQ_OU "Tecadmin FACILE CA" set_var EASYRSA_KEY_SIZE 2048set_var EASYRSA_ALGO rsaset_var EASYRSA_CA_EXPIRE 7500set_var EASYRSA_CERT_EXPIRE 365set_var EASYRSA_NS_SUPPORT "non" set_var EASYRSA_NS_COMMENT "Tecadmin Autorité chargée" set_var EASYRSA_EXT_DIR "EASYRSA $ / x509-types" set_var EASYRSA_SSL_CONF" EASYRSA $ / OpenSSL-easyrsa.cnf "set_var EASYRSA_DIGEST "sha256"Enregistrez le fichier lorsque vous avez terminé.
Ensuite, exécutez la commande suivante pour lancer le répertoire PKI.
./easyrsa init-pki Sortie :
Remarque :utilisation de la configuration Easy-RSA à partir de :./varsinit-pki complete ; vous pouvez maintenant créer une autorité de certification ou des requêtes.Votre répertoire PKI nouvellement créé est :/etc/openvpn/easy-rsa/pkiEnsuite, créez les certificats CA avec la commande suivante :
./easyrsa build-ca Vous devriez obtenir le résultat suivant :
Remarque :lors de l'utilisation de la configuration Easy-RSA à partir de :./varsUtilisation de SSL :openssl OpenSSL 1.1.1c FIPS 28 mai 2019 Entrez la nouvelle phrase secrète de la clé CA :Saisissez à nouveau la phrase secrète de la nouvelle clé CA :Génération de la clé privée RSA, module long de 2 048 bits (2 nombres premiers) .................................................. .......................++++++................................ .................................................. .................................................. .............++++++e est 65537 (0x010001) Impossible de charger /etc/openvpn/easy-rsa/pki/.rnd dans RNG140218549745472 :erreur :2406F079 :nombre aléatoire generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:98:Filename=/etc/openvpn/easy-rsa/pki/.rndVous êtes sur le point d'être invité à entrer des informations qui seront incorporées dans votre demande de certificat. vous êtes sur le point d'entrer est ce qu'on appelle un nom distinctif ou un DN. .-----Commo n Nom (par exemple :votre nom d'utilisateur, d'hôte ou de serveur) [Easy-RSA CA] :la création de l'AC est terminée et vous pouvez maintenant importer et signer les demandes de certificat. Votre nouveau fichier de certificat d'AC pour la publication se trouve à :/etc/openvpn/easy -rsa/pki/ca.crtLa commande ci-dessus générera deux fichiers nommés ca.key et ca.crt. Ces certificats seront utilisés pour signer les certificats de votre serveur et de vos clients.
Étape 5 - Générer des fichiers de certificat de serveur
Ensuite, vous devrez générer une paire de clés et une demande de certificat pour votre serveur.
Exécutez la commande suivante pour générer la clé de serveur nommée tecadmin-server :
./easyrsa gen-req tecadmin-server nopass Vous devriez obtenir le résultat suivant :
Remarque :utilisation de la configuration Easy-RSA à partir de :./varsUtilisation de SSL :openssl OpenSSL 1.1.1c FIPS 28 mai 2019Génération d'une clé privée RSA.......... .......++++++...................................................... .................................................. .................................................. .................................................. .................................................. ..................................................+ ++++écrire une nouvelle clé privée dans '/etc/openvpn/easy-rsa/pki/private/tecadmin-server.key.kOlBTwtY6a'-----Vous êtes sur le point d'être invité à entrer des informations qui seront incorporées dans votre demande de certificat.Ce que vous êtes sur le point d'entrer est ce qu'on appelle un nom distinctif ou un DN. sera laissé vide.-----Nom commun (par exemple :votre nom d'utilisateur, d'hôte ou de serveur) [tecadmin-server] :la paire de clés et la demande de certificat sont terminées. Vos fichiers sont :req :/etc/openvpn/easy-rsa/pki/reqs/tecadmin-server.reqkey :/etc/openvpn/easy-rsa/pki/private/tecadmin-server.keyÉtape 6 – Signer la clé du serveur à l'aide de l'autorité de certification
Ensuite, vous devrez signer la clé tecadmin-server à l'aide de votre certificat CA :
Exécutez la commande suivante pour signer la clé du serveur :
./easyrsa sign-req server tecadmin-server Vous devriez obtenir le résultat suivant :
Remarque :utilisation de la configuration Easy-RSA à partir de :./varsUtilisation de SSL :openssl OpenSSL 1.1.1c FIPS 28 mai 2019Vous êtes sur le point de signer le certificat suivant.Veuillez vérifier l'exactitude des informations ci-dessous. Notez que cette demande n'a pas été vérifiée cryptographiquement. Veuillez vous assurer qu'il provient d'une source fiable ou que vous avez vérifié la somme de contrôle de la demande auprès de l'expéditeur. Objet de la demande, à signer en tant que certificat de serveur pendant 365 jours : subject=commonName =tecadmin-server Tapez le mot « oui » pour continuer, ou toute autre entrée pour abandonner. Confirmer les détails de la demande :ouiUtilisation de la configuration depuis /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnfEntrez la phrase de passe pour /etc/openvpn/easy-rsa/pki/private/ca.key :Vérifiez que la demande correspond à la signatureSignature okLe nom distinctif du sujet est le suivantNom commun :ASN.1 12 : 'tecadmin-server'Le certificat doit être certifié jusqu'au 16 février 05:00:50 2021 GMT (365 jours) etc/openvpn/easy-rsa/pki/issued/tecadmin-server.crtEnsuite, vérifiez le fichier de certificat généré avec la commande suivante :
openssl verify -CAfile pki/ca.crt pki/issued/tecadmin-server.crt Si tout va bien, vous devriez obtenir le résultat suivant :
pki/issued/tecadmin-server.crt :OKEnsuite, exécutez la commande suivante pour générer une clé Diffie-Hellman forte à utiliser pour l'échange de clés :
./easyrsa gen-dh Vous devriez obtenir le résultat suivant :
Remarque :utilisation de la configuration Easy-RSA à partir de :./varsUtilisation de SSL :openssl OpenSSL 1.1.1c FIPS 28 mai 2019Génération des paramètres DH, amorce sécurisée de 2048 bits, générateur 2Cela va prendre beaucoup de temps...+. ...............................+.................. ......................+.....++*++*++*****Paramètres DH de taille 2048 créés dans /etc/ openvpn/easy-rsa/pki/dh.pemAprès avoir créé tous les fichiers de certificat, copiez-les dans le répertoire /etc/openvpn/server/ :
cp pki/ca.crt /etc/openvpn/server/ cp pki/dh.pem /etc/openvpn/server/ cp pki/private/tecadmin-server. clé /etc/openvpn/server/ cp pki/issued/tecadmin-server.crt /etc/openvpn/server/ Étape 7 - Générer un certificat client et un fichier clé
Ensuite, vous devrez générer la clé et le fichier de certificat pour le client.
Tout d'abord, exécutez la commande suivante pour créer le fichier de clé client :
./easyrsa gen-req client nopass Vous devriez voir le résultat suivant :
Remarque :utilisation de la configuration Easy-RSA à partir de :./varsUtilisation de SSL :openssl OpenSSL 1.1.1c FIPS 28 mai 2019Génération d'une clé privée RSA.......... ..................................+++++...+++++écrire un nouveau message privé key to '/etc/openvpn/easy-rsa/pki/private/client.key.e38GUtzHie'-----Vous êtes sur le point d'être invité à entrer des informations qui seront incorporées dans votre demande de certificat.Ce que vous êtes sur le point d'entrer est ce qu'on appelle un nom distinctif ou un DN. Il y a pas mal de champs mais vous pouvez en laisser quelques-uns vides. -Nom commun (par exemple :votre nom d'utilisateur, d'hôte ou de serveur) [client] :la paire de clés et la demande de certificat sont terminées. Vos fichiers sont :req :/etc/openvpn/easy-rsa/pki/reqs/client.reqkey :/etc/openvpn/easy-rsa/pki/private/client.keyEnsuite, signez la clé client à l'aide de votre certificat CA :
./easyrsa sign-req client client Vous devriez obtenir le résultat suivant :
Remarque :utilisation de la configuration Easy-RSA à partir de :./varsUtilisation de SSL :openssl OpenSSL 1.1.1c FIPS 28 mai 2019Vous êtes sur le point de signer le certificat suivant.Veuillez vérifier l'exactitude des informations ci-dessous. Notez que cette demande n'a pas été vérifiée cryptographiquement. Veuillez vous assurer qu'il provient d'une source fiable ou que vous avez vérifié la somme de contrôle de la demande auprès de l'expéditeur. Objet de la demande, à signer en tant que certificat client pendant 365 jours : subject=commonName =client Tapez le mot " oui " pour continuer, ou tout autre entrée pour abandonner. Confirmer les détails de la demande :ouiUtilisation de la configuration depuis /etc/openvpn/easy-rsa/pki/safessl-easyrsa.cnfEntrez la phrase de passe pour /etc/openvpn/easy-rsa/pki/private/ca.key :Vérifiez que la demande correspond à la signatureSignature okLe nom distinctif du sujet est le suivantNom commun :ASN.1 12 : 'client' openvpn/easy-rsa/pki/issued/client.crtEnsuite, copiez tous les certificats clients et les fichiers de clés 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. clé /etc/openvpn/client/ Étape 8 - Configurer le serveur OpenVPN
Ensuite, créez un nouveau fichier de configuration OpenVPN dans le répertoire /etc/openvpn/client/ :
nano /etc/openvpn/server/server.conf Ajoutez les lignes suivantes :
port 1194proto udpdev tunca /etc/openvpn/server/ca.crtcert /etc/openvpn/server/tecadmin-server.crtkey /etc/openvpn/server/tecadmin-server.keydh /etc/openvpn/server/dh. pemserver 10.8.0.0 255.255.255.0push "redirect-gateway def1" push "dhcp-option DNS 208.67.222.222"push "dhcp-option DNS 208.67.220.220"duplicata-cncipher AES-256-CBCtls-version-min 1.2tls-cipher TLS-DHE-RSA-AVEC-AES-256-GCM-SHA384 :TLS-DHE-RSA-AVEC-AES-256-CBC-SHA256 :TLS-DHE-RSA-AVEC-AES-128-GCM-SHA256 :TLS- DHE-RSA-WITH-AES-128-CBC-SHA256auth SHA512auth-nocachekeepalive 20 60persist-keypersist-tuncompress lz4daemonuser nobodygroup personslog-append /var/log/openvpn.logverb 3Enregistrez le fichier lorsque vous avez terminé.
Étape 9 - Démarrer le service OpenVPN
OpenVPN est maintenant installé et configuré. Vous pouvez maintenant démarrer le service OpenVPN et lui permettre de démarrer après le redémarrage du système à l'aide de la commande suivante :
systemctl start [email protected] systemctl enable [email protected] Exécutez la commande suivante pour vérifier l'état du service OpenVPN :
statut systemctl [protégé par e-mail] Vous devriez obtenir le résultat suivant :
● [email protected] - Service OpenVPN pour le serveur Chargé :chargé (/usr/lib/systemd/system/[email protected] ; activé ; fournisseur prédéfini :désactivé) Actif :actif (en cours d'exécution) depuis le lundi 2020-02- 17 00:29:26 HNE ; Il y a 39min Docs :man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage https://community.openvpn.net/openvpn/wiki/HOWTO PID principal :32405 (openvpn) Statut :" Séquence d'initialisation terminée" Tâches : 1 (limite :12 552) Mémoire :1,9 Mo openvpn-server/status-server.log --status-version 2 --suppress-timestamps --cipher AES-256->Feb 17 00:29:26 centos8 systemd[1] :Démarrage du service OpenVPN pour le serveur...Feb 17 00:29:26 centos8 systemd[1] :Démarrage du service OpenVPN pour le serveur.Une fois le service OpenVPN démarré avec succès, il créera une nouvelle interface réseau nommée tun0. Vous pouvez le vérifier avec la commande suivante :
ifconfig Vous devriez obtenir la nouvelle interface tun0 dans la sortie suivante :
eth0:flags=4163mtu 1500 inet 104.245.36.127 netmask 255.255.255.0 broadcast 104.245.36.255 inet6 fe80::200:68ff:fef5:247f prefixlen 64 scopeid 0x200 ether 00:200 ether :68:f5:24:7f txqueuelen 1000 (Ethernet) Paquets RX 1926738 octets 314886412 (300,2 Mio) Erreurs RX 0 abandonnées 0 dépassements 0 trame 0 paquets TX 174907 octets 29557250 (28,1 Mio) Erreurs TX 0 abandonnées 0 dépassements 0 porteuse 0 collisions 0lo :flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 boucle txqueuelen 1000 (Local Loopback) Paquets RX 216 octets 40041 (39,1 Kio) Erreurs RX 0 abandonnées 0 dépassements 0 trame 0 Paquets TX 216 octets 40041 (39,1 Kio) Erreurs TX 0 abandonnées 0 dépassements 0 porteuse 0 collisions 0tun0 :drapeaux =4305 mtu 1500 inet 10.8.0.1 netmask 255.255.255.255 destination 10.8.0.2 inet6 fe80::4152:a673:b260:d9e6 prefixlen 64 scopeid 0x20 unspec 00-00-00-00 -00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (UNSPEC) Paquets RX 0 octets 0 (0.0 B) Erreurs RX 0 abandonnées 0 dépassements 0 trame 0 paquets TX 4 octets 304 (304.0 B) Erreurs TX 0 abandonnées 0 dépassements 0 porteuse 0 collisions 0 Étape 10 - Générer le fichier de configuration client
Ensuite, créez un nouveau fichier de configuration client OpenVPN nommé client.ovpn. Vous aurez besoin de ce fichier pour connecter votre serveur OpenVPN à partir du système client.
nano /etc/openvpn/client/client.ovpn Ajoutez les lignes suivantes :
clientdev tunproto udpremote vpn-server-ip 1194ca ca.crtcert client.crtkey client.keycipher AES-256-CBCauth SHA512auth-nocachetls-version-min 1.2tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM -SHA384 :TLS-DHE-RSA-AVEC-AES-256-CBC-SHA256 :TLS-DHE-RSA-AVEC-AES-128-GCM-SHA256 :TLS-DHE-RSA-AVEC-AES-128-CBC-SHA256résolv -réessayez Infinitycompress lz4nobindpersist-keypersist-tunmute-replay-warningsverb 3Enregistrez le fichier lorsque vous avez terminé.
Étape 11 – Configurer le routage à l'aide de Firewalld
Tout d'abord, vous devrez autoriser le service OpenVPN via firewalld.
Pour ce faire, ajoutez le service OpenVPN et l'interface tun0 à la zone de confiance du pare-feu :
firewall-cmd --permanent --add-service=openvpn firewall-cmd --permanent --zone=trusted --add-service=openvpn firewall-cmd - -permanent --zone=trusted --add-interface=tun0 Ensuite, ajoutez la MASQUERADE sur la zone par défaut :
firewall-cmd --add-masquerade firewall-cmd --permanent --add-masquerade Ensuite, exécutez la commande suivante pour masquer le trafic Internet provenant du réseau VPN (10.8.0.0/24) vers l'interface réseau local du système (eth0).
tecadmin=$(ip route get 8.8.8.8 | awk 'NR==1 {print $(NF-2)}') firewall-cmd --permanent --direct -- passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o $tecadmin -j MASQUERADE Enfin, exécutez la commande suivante pour mettre en œuvre les modifications :
firewall-cmd --reload Étape 12 - Connecter OpenVPN à partir des clients
Tout d'abord, connectez-vous à la machine cliente et installez le package OpenVPN avec la commande suivante :
dnf install epel-release -y dnf install openvpn -y Ensuite, vous devrez télécharger les fichiers de configuration du client OpenVPN du serveur OpenVPN vers la machine cliente.
Sur la machine cliente, exécutez la commande suivante pour télécharger tout le fichier de configuration client :
scp -r [protégé par e-mail] :/etc/openvpn/client . Une fois téléchargé, changez le répertoire en client et exécutez la commande suivante pour vous connecter au serveur OpenVPN :
cd client openvpn --config client.ovpn Vous devriez voir le résultat suivant :
Lun 17 février 00:54:17 2020 VERIFY OK :depth=0, CN=tecadmin-serverLun 17 février 00:54:17 Canal de contrôle 2020 :TLSv1.3, chiffrement TLSv1.3 TLS_AES_256_GCM_SHA384, RSAM 2048 bitsLun 17 février 00:54:17 2020 [tecadmin-server] Connexion homologue initiée avec [AF_INET]104.245.36.127:1194Mon Feb 17 00:54:18 2020 SENT CONTROL [tecadmin-server] :'PUSH_REQUEST' (status=1)Mon Feb 17 00:54:18 2020 PUSH:Message de contrôle reçu:'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'Mon Feb 17 00:54:18 2020 OPTIONS IMPORT:timers and/or timeouts modifiedMon Feb 17 00:54:18 2020 OPTIONS IMPORT :--ifconfig/up options modifiedMon Feb 17 00:54:18 2020 OPTIONS IMPORT:route options modifiedMon Feb 17 00:54:18 2020 OPTIONS IMPORT:--ip-win32 and/or --dhcp-option options modifiedMon Feb 17 00:54:18 2020 OPTIONS IMPORT:peer-id setMon 17 février 00:54:18 2020 OPTIONS IMP ORT :ajustement de link_mtu à 1625Mon 17 février 00:54:18 2020 OPTIONS IMPORT :options de cryptage du canal de données modifiées Mon 17 février 00:54:18 2020 Data Channel :utilisation du chiffrement négocié 'AES-256-GCM'Mon 17 février 00:54 :18 2020 Canal de données sortant :Chiffrement « AES-256-GCM » initialisé avec une clé de 256 bitsLun 17 février 00:54:18 2020 Canal de données entrantes :Chiffrement « AES-256-GCM » initialisé avec une clé de 256 bitsLun 17 février 00:54 :18 2020 ROUTE_GATEWAY 45.58.38.1/255.255.255.0 IFACE=eth0 HWADDR=00:00:2d:3a:26:d9Mon Feb 17 00:54:18 2020 TUN/TAP device tun0 openMon Feb 17 00:54:18 2020 TUN/ Longueur de la file d'attente TAP TX définie sur 100Mon 17 février 00:54:18 2020 /sbin/ip link set dev tun0 up mtu 1500Mon 17 février 00:54:18 2020 /sbin/ip addr add dev tun0 local 10.8.0.6 peer 10.8.0.5Après une connexion réussie, OpenVPN attribuera une adresse IP à votre système. Vous pouvez le vérifier avec la commande suivante :
ifconfig tun0 Sortie :
tun0:flags=4305mtu 1500 inet 10.8.0.6 netmask 255.255.255.255 destination 10.8.0.5 inet6 fe80::c6b:2644:5142:8e7f prefixlen 64 scopeid 0x20 unspec 00 -00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 100 (UNSPEC) Paquets RX 0 octets 0 (0.0 B) Erreurs RX 0 abandonnées 0 dépassements 0 trame 0 paquets TX 2 octets 96 (96,0 B) erreurs TX 0 abandonné 0 dépassements 0 porteuse 0 Toutes nos félicitations! vous avez installé et configuré avec succès le serveur et le client OpenVPN sur le serveur CentOS 8.