GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer le serveur et le client OpenVPN avec Easy-RSA 3 sur CentOS 8

OpenVPN est une application open source qui vous permet de créer un réseau privé sécurisé sur Internet public. OpenVPN implémente un réseau privé virtuel (VPN) pour créer une connexion sécurisée. OpenVPN Utilise la bibliothèque OpenSSL pour fournir le cryptage et fournit plusieurs mécanismes d'authentification, tels que les clés pré-partagées basées sur des certificats et l'authentification par nom d'utilisateur/mot de passe.

Dans ce tutoriel, nous allons vous montrer comment installer et configurer étape par étape OpenVPN sur le serveur CentOS 8. Et nous mettrons en œuvre l'authentification OpenVPN basée sur des certificats.

Prérequis

  • Serveur CentOS 8
  • Privilèges root

Qu'allons-nous faire ?

  • Installer OpenVPN et Easy-RSA
  • Configurer les variables Easy-RSA 3
  • Créer des clés OpenVPN
  • Configurer le serveur OpenVPN
  • Configurer le pare-feu et activer le transfert de port
  • Configuration client
  • Test

Étape 1 - Installer OpenVPN et Easy-RSA

Tout d'abord, nous allons ajouter le référentiel EPEL (Extra Package for Enterprise Linux), installer le dernier package OpenVPN et télécharger le script easy-rsa sur le système CentOS 8.

Installez le référentiel EPEL à l'aide de la commande dnf ci-dessous.

dnf install epel-release

Après cela, installez le dernier package OpenVPN 2.4.7.

dnf install openvpn

Une fois l'installation terminée, allez dans '/etc/openvpn' et téléchargez le script easy-rsa en utilisant la commande wget ci-dessous.

cd /etc/openvpn/
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz

Extrayez maintenant le fichier 'EasyRSA-unix-v3.0.6.tgz' et renommez le répertoire en 'easy-rsa'.

tar -xf EasyRSA-unix-v3.0.6.tgz
mv EasyRSA-v3.0.6/ easy-rsa/; rm -f EasyRSA-unix-v3.0.6.tgz

Le package OpenVPN et le script easy-rsa ont été installés sur le système CentOS 8.

Étape 2 - Configurer Easy-RSA 3

Dans cette étape, nous allons configurer easy-rsa 3 en créant un nouveau fichier 'vars'. Le fichier 'vars' contient les paramètres Easy-RSA 3.

Accédez au répertoire '/etc/openvpn/easy-rsa/' et créez un nouveau script vars à l'aide de l'éditeur vim.

cd /etc/openvpn/easy-rsa/
vim vars

Collez les configurations vars easy-rsa 3 ci-dessous.

set_var EASYRSA                 "$PWD"
set_var EASYRSA_PKI             "$EASYRSA/pki"
set_var EASYRSA_DN              "cn_only"
set_var EASYRSA_REQ_COUNTRY     "ID"
set_var EASYRSA_REQ_PROVINCE    "Jakarta"
set_var EASYRSA_REQ_CITY        "Jakarta"
set_var EASYRSA_REQ_ORG         "hakase-labs CERTIFICATE AUTHORITY"
set_var EASYRSA_REQ_EMAIL       "[email protected]"
set_var EASYRSA_REQ_OU          "HAKASE-LABS EASY CA"
set_var EASYRSA_KEY_SIZE        2048
set_var EASYRSA_ALGO            rsa
set_var EASYRSA_CA_EXPIRE       7500
set_var EASYRSA_CERT_EXPIRE     365
set_var EASYRSA_NS_SUPPORT      "no"
set_var EASYRSA_NS_COMMENT      "HAKASE-LABS CERTIFICATE AUTHORITY"
set_var EASYRSA_EXT_DIR         "$EASYRSA/x509-types"
set_var EASYRSA_SSL_CONF        "$EASYRSA/openssl-easyrsa.cnf"
set_var EASYRSA_DIGEST          "sha256"

Enregistrez et quittez.

Remarque :

  • Modifiez les valeurs des variables selon vos besoins.
  • Augmentez le "EASYRSA_KEY_SIZE" pour une meilleure sécurité.
  • Modifiez 'EASYRSA_CA_EXPIRE' et 'EASYRSA_CERT_EXPIRE'.

Rendez maintenant le fichier 'vars' exécutable en modifiant l'autorisation du fichier.

chmod +x vars

La configuration easy-rsa 3 est terminée.

Étape 3 - Créer des clés OpenVPN

Dans cette étape, nous allons créer les clés OpenVPN basées sur le fichier 'vars' easy-rsa 3 que nous avons créé. Nous allons construire la clé CA, les clés serveur et client, le fichier DH et CRL PEM.

Nous allons construire toutes ces clés en utilisant la ligne de commande 'easyrsa'. Allez dans le répertoire '/etc/openvpn/easy-rsa/'.

cd /etc/openvpn/easy-rsa/3/

- Initialisation et création de l'autorité de certification

Avant de créer la clé du serveur et du client, nous devons initialiser le répertoire PKI (Public Key Infrastructure) et créer la clé CA.

Lancez le répertoire PKI et créez la clé CA à l'aide de la commande ci-dessous.

./easyrsa init-pki
./easyrsa build-ca

Tapez maintenant le mot de passe de votre clé CA et vous obtiendrez vos fichiers 'ca.crt' et 'ca.key' sous le répertoire 'pki'.

- Créer la clé du serveur

Nous voulons maintenant créer la clé du serveur, et nous allons créer la clé du serveur nommée 'hakase-server'.

Créez la clé de serveur 'hakase-server' à l'aide de la commande ci-dessous.

./easyrsa gen-req hakase-server nopass

Remarque :

  • nopass =option pour désactiver le mot de passe pour la clé 'hakase-server'.

Et signez la clé 'hakase-server' en utilisant notre certificat CA.

./easyrsa sign-req server hakase-server

On vous demandera le mot de passe 'CA', tapez le mot de passe et appuyez sur Entrée. Et vous obtiendrez le fichier de certificat 'hakase-server.crt' sous le répertoire 'pki/issued/'.

Vérifiez le fichier de certificat à l'aide de la commande OpenSSL et assurez-vous qu'il n'y a pas d'erreur.

openssl verify -CAfile pki/ca.crt pki/issued/hakase-server.crt

Toutes les clés de certificat de serveur ont été créées. La clé privée du serveur se trouve dans 'pki/private/hakase-server.key' et le certificat du serveur dans 'pki/issued/hakase-server.crt'.

- Créer une clé client

Nous devons maintenant créer des clés pour le client. Nous allons générer une nouvelle clé client nommée 'client01'.

Générez la clé 'client01' à l'aide de la commande ci-dessous.

./easyrsa gen-req client01 nopass

Signez maintenant la clé 'client01' en utilisant notre certificat CA comme ci-dessous.

./easyrsa sign-req client client01

Tapez "oui" pour confirmer la demande de certificat client, puis tapez le mot de passe de l'autorité de certification.

Le certificat client nommé 'client01' a été généré, vérifiez le certificat client à l'aide de la commande openssl.

openssl verify -CAfile pki/ca.crt pki/issued/client01.crt

Assurez-vous qu'il n'y a pas d'erreur.

- Construire une clé Diffie-Hellman

La clé Diffie-Hellman est nécessaire pour une meilleure sécurité. Et nous allons générer la clé DH '2048' basée sur le fichier de configuration 'vars' qui a été créé en haut.

Générez la clé Diffie-Hellman à l'aide de la commande ci-dessous.

./easyrsa gen-dh

Et la clé DH a été générée, située dans le répertoire 'pki'.

- Facultatif :générer la clé CRL

La clé CRL (Certificate Revocing List) sera utilisée pour révoquer la clé client. Si vous avez plusieurs certificats clients de clients sur votre serveur VPN et que vous souhaitez supprimer la clé de quelqu'un, il vous suffit de la révoquer à l'aide de la commande easy-rsa.

Si vous souhaitez révoquer une clé, exécutez la commande ci-dessous.

./easyrsa revoke someone

Et puis générez la clé CRL.

./easyrsa gen-crl

Le fichier CRL PEM a été généré sous le répertoire 'pki' - voici un exemple sur mon serveur.

- Copier les fichiers de certificat

Tous les certificats ont été générés, copiez maintenant les fichiers de certificat et les fichiers PEM.

Copiez la clé et le certificat du serveur.

cp pki/ca.crt /etc/openvpn/server/
cp pki/issued/hakase-server.crt /etc/openvpn/server/
cp pki/private/hakase-server.key /etc/openvpn/server/

Copiez la clé et le certificat client01.

cp pki/ca.crt /etc/openvpn/client/
cp pki/issued/client01.crt /etc/openvpn/client/
cp pki/private/client01.key /etc/openvpn/client/

Copiez la clé DH et CRL.

cp pki/dh.pem /etc/openvpn/server/
cp pki/crl.pem /etc/openvpn/server/

Tous les certificats pour le serveur et le client ont été copiés dans chaque répertoire.

Étape 4 - Configurer OpenVPN

Dans cette étape, nous allons créer une nouvelle configuration 'server.conf' pour le serveur OpenVPN.

Allez dans le répertoire '/etc/openvpn/server/' et créez un nouveau fichier de configuration 'server.conf' en utilisant vim.

cd /etc/openvpn/server/
vim server.conf

Collez-y la configuration de serveur OpenVPN suivante.

# OpenVPN Port, Protocol, and the Tun
port 1194
proto udp
dev tun

# OpenVPN Server Certificate - CA, server key and certificate
ca /etc/openvpn/server/ca.crt
cert /etc/openvpn/server/hakase-server.crt
key /etc/openvpn/server/hakase-server.key

#DH and CRL key
dh /etc/openvpn/server/dh.pem
crl-verify /etc/openvpn/server/crl.pem

# Network Configuration - Internal network
# Redirect all Connection through OpenVPN Server
server 10.5.0.0 255.255.255.0
push "redirect-gateway def1"

# Using the DNS from https://dns.watch
push "dhcp-option DNS 84.200.69.80"
push "dhcp-option DNS 84.200.70.40"

#Enable multiple clients to connect with the same certificate key
duplicate-cn

# TLS Security
cipher AES-256-CBC
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256
auth SHA512
auth-nocache

# Other Configuration
keepalive 20 60
persist-key
persist-tun
compress lz4
daemon
user nobody
group nobody

# OpenVPN Log
log-append /var/log/openvpn.log
verb 3

Enregistrez et quittez.

Et la configuration du serveur OpenVPN a été créée.

Étape 5 - Activer le transfert de port et configurer le routage dans Firewalld

Dans cette étape, nous allons activer le module de noyau de redirection de port et configurer le routage 'Firewalld' pour OpenVPN.

Activez le module de noyau de redirection de port en exécutant les commandes suivantes.

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

Ensuite, configurez le routage à l'aide du pare-feu pour OpenVPN.

Ajoutez le service OpenVPN à la zone de pare-feu "publique" et "de confiance".

firewall-cmd --permanent --add-service=openvpn
firewall-cmd --permanent --zone=trusted --add-service=openvpn

Après cela, ajoutez le 'tun0' à la zone 'de confiance'.

firewall-cmd --permanent --zone=trusted --add-interface=tun0

Activez maintenant 'MASQUERADE' sur le pare-feu de la zone 'publique' par défaut.

firewall-cmd --permanent --add-masquerade

Activez NAT pour l'adresse IP interne OpenVPN '10.5.0.0/24' vers l'adresse IP externe 'SERVERIP'.

SERVERIP=$(ip route get 1.1.1.1 | awk 'NR==1 {print $(NF-2)}')
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s  10.5.0.0/24 -o $SERVERIP -j MASQUERADE

Et rechargez firewalld.

firewall-cmd --reload

La configuration de la redirection de port et du routage du pare-feu est terminée, démarrez le service OpenVPN et activez-le pour qu'il se lance automatiquement à chaque démarrage du système.

systemctl start ope[email protected]
systemctl enable [email protected]

Après cela, vérifiez le service OpenVPN à l'aide des commandes ci-dessous.

netstat -plntu
systemctl status [email protected]

Et vous obtiendrez le résultat ci-dessous.

En conséquence, le service OpenVPN est opérationnel sur le protocole UDP avec le port par défaut '1194'.

Étape 6 - Configuration du client OpenVPN

Allez dans le répertoire '/etc/openvpn/client' et créez un nouveau fichier de configuration client openvpn 'client01.ovpn' en utilisant vim.

cd /etc/openvpn/client
vim client01.ovpn

Collez-y la configuration client OpenVPN suivante.

client
dev tun
proto udp

remote xxx.xxx.xxx.xxx 1194

ca ca.crt
cert client01.crt
key client01.key

cipher AES-256-CBC
auth SHA512
auth-nocache
tls-version-min 1.2
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

resolv-retry infinite
compress lz4
nobind
persist-key
persist-tun
mute-replay-warnings
verb 3

Enregistrez et quittez.

Maintenant, compressez le répertoire '/etc/openvpn/client' en fichier 'zip' ou 'tar.gz' et téléchargez le fichier compressé en utilisant SCP depuis votre ordinateur local.

Compressez le répertoire '/etc/openvpn/client' dans le fichier 'client01.tar.gz'.

cd /etc/openvpn/
tar -czvf client01.tar.gz client/*

Vous pouvez maintenant télécharger le fichier OpenVPN compressé à l'aide du serveur FTP ou de la commande scp comme ci-dessous.

scp [email protected]:/etc/openvpn/client01.tar.gz .

Étape 7 - Connectez-vous à OpenVPN

Test sur les Clients.

- Sous Linux

Installez le package OpenVPN et si vous souhaitez une configuration graphique, installez le gestionnaire de réseau OpenVPN.

sudo apt install openvpn network-manager-openvpn network-manager-openvpn-gnome -y

Si vous souhaitez vous connecter à l'aide d'un shell de terminal, exécutez la commande OpenVPN ci-dessous.

openvpn --config client01.ovpn

Lorsque vous êtes connecté à OpenVPN, ouvrez un nouvel onglet de terminal et vérifiez la connexion à l'aide de la commande curl.

curl ifconfig.io

Et vous obtiendrez l'adresse IP du serveur OpenVPN.

- Sur Mac OS

Téléchargez Tunnelblick et installez-le.

Extrayez le fichier 'client01.tar.gz' et renommez le répertoire 'client' en 'client01.tblk'.

tar -xzvf client01.tar.gz
mv client client01.tblk

Double-cliquez sur le 'client01.tblk' et le Tunnelblick détectera automatiquement la configuration OpenVPN puis l'importera.

Connectez-vous maintenant via le Tunnelblick sur la barre supérieure.

- Sous Windows

Téléchargez le client openvpn pour Windows et importez la configuration.


Cent OS
  1. Comment installer et utiliser TeamSpeak Server sur CentOS 7

  2. Comment installer OpenVPN sur CentOS/RHEL 8

  3. Comment installer et configurer Gitlab sur CentOS 8

  4. Comment installer et héberger un serveur OpenVPN avec Docker

  5. Comment installer et configurer le serveur OpenVPN sur Ubuntu 20.04

Comment installer et configurer le serveur VNC sur CentOS 7

Installer le serveur PXE et configurer le client PXE sur CentOS 7

Comment installer et configurer Memcached sur CentOS 8

Comment installer le serveur et le bureau CentOS 7

Comment installer et configurer le serveur DHCP sur Centos 8

Comment installer et configurer le serveur OpenVPN dans CentOS 8/7