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

OpenVPN est une application open source qui te permet de créer un réseau privé sécurisé sur l’Internet public. OpenVPN met en œuvre un réseau privé virtuel (VPN) pour créer une connexion sécurisée. OpenVPN utilise la bibliothèque OpenSSL pour assurer le cryptage et propose plusieurs mécanismes d’authentification, tels que l’authentification par certificat, les clés pré-partagées et l’authentification par nom d’utilisateur/mot de passe.

Dans ce tutoriel, nous allons te montrer comment installer et configurer OpenVPN sur CentOS 7.6, étape par étape. Et nous mettrons en œuvre l’authentification OpenVPN basée sur un certificat.

Conditions préalables

  • CentOS 7.6
  • Privilèges de racine

Ce que nous allons faire ?

  1. Installer OpenVPN et Easy-RSA
  2. Configurer Easy-RSA 3 Vars
  3. Construire les clés OpenVPN
  4. Configurer le serveur OpenVPN
  5. Configurer Firewalld et activer le transfert de port
  6. Configuration du client
  7. Tester

Étape 1 – Installer OpenVPN et Easy-RSA

Dans ce tutoriel, nous utiliserons la dernière version du serveur centos (7.5), et nous utiliserons OpenVPN 2.4 avec easy-rsa 3. Avant d’installer les paquets OpenVPN et easy-rsa, assure-toi que le dépôt ‘epel’ est installé sur le système. Si tu ne l’as pas, installe le référentiel epel en utilisant la commande yum ci-dessous.

yum install epel-release -y

Installe maintenant OpenVPN 2.4 avec easy-rsa 3 sur le système.

yum install openvpn easy-rsa -y

Lorsque l’installation est terminée, vérifie la version d’openvpn et d’easy-rsa.

openvpn --version
ls -lah /usr/share/easy-rsa/

Installer OpenVPN

OpenVPN 2.4 avec easy-rsa 3 a été installé.

É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 d’Easy-RSA 3.

Va dans le répertoire ‘/etc/openvpn/’ et copie le script ‘easy-rsa’.

cd /etc/openvpn/
cp -r /usr/share/easy-rsa /etc/openvpn/

Va maintenant dans le répertoire ‘easy-rsa/3/’ et crée un nouveau fichier vars en utilisant vim.

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

Colle la configuration 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-1.0.cnf"
set_var EASYRSA_DIGEST          "sha256"

Sauvegarde et quitte.

Remarque :

  • Change les valeurs des variables selon tes besoins.
  • Augmente la variable ‘EASYRSA_KEY_SIZE’ pour une meilleure sécurité.
  • Modifie ‘EASYRSA_CA_EXPIRE’ et ‘EASYRSA_CERT_EXPIRE’.

Rends maintenant le fichier ‘vars’ exécutable en modifiant la permission du fichier.

chmod +x vars

Le fichier vars pour le paramètre Easy-RSA 3 a été créé.

EasyRSA

Étape 3 – Construire les clés OpenVPN

Dans cette étape, nous allons créer les clés OpenVPN sur la base du fichier ‘vars’ d’Easy-RSA 3 que nous avons créé. Nous allons créer la clé CA, les clés du serveur et du client, le fichier PEM DH et CRL.

Nous allons créer toutes ces clés à l’aide de la ligne de commande ‘easyrsa’. Va dans le répertoire ‘/etc/openvpn/easy-rsa/3’.

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

Initialisation et construction de l’AC

Avant de construire des clés, nous devons initialiser le répertoire PKI et construire la clé CA.

Initialise le répertoire PKI et construis la clé CA à l’aide de la commande ci-dessous.

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

Tape maintenant le mot de passe de ta clé CA et tu obtiendras tes fichiers ‘ca.crt’ et ‘ca.key’ dans le répertoire ‘pki’.

Initialisation et construction CA

Construis la clé du serveur

Maintenant, nous voulons créer la clé du serveur, et nous allons créer la clé du serveur nommée ‘hakase-server’.

Crée la clé de serveur ‘hakase-server’ à l’aide de la commande ci-dessous.

./easyrsa gen-req hakase-server nopass

Clé du serveur de construction

Remarque :

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

Et signe la clé ‘hakase-server’ en utilisant notre certificat CA.

./easyrsa sign-req server hakase-server

Il te sera demandé le mot de passe ‘CA’, tape le mot de passe et appuie sur Entrée. Tu obtiendras le fichier de certificat ‘hakase-server.crt’ dans le répertoire ‘pki/issued/’.

EasyRSA Sign Request

Vérifie le fichier de certificat à l’aide de la commande OpenSSL et assure-toi 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 du serveur ont été créées. La clé privée du serveur se trouve dans le fichier ‘pki/private/hakase-server.key’, et le certificat du serveur dans le fichier ‘pki/issued/hakase-server.crt’.

Construire la clé du 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ère la clé ‘client01’ à l’aide de la commande ci-dessous.

./easyrsa gen-req client01 nopass

Construire la clé du client

Signe maintenant la clé ‘client01’ en utilisant notre certificat CA comme ci-dessous.

./easyrsa sign-req client client01

Saisis ‘oui’ pour confirmer la demande de certificat client, puis saisis le mot de passe de l’autorité de certification.

Signer la clé du client

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

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

Construire la clé Diffie-Hellman

Cette action prendra beaucoup de temps, en fonction de la longueur de clé que nous avons choisie et de l’entropie disponible sur le serveur. Nous utiliserons la longueur de clé que nous avons définie dans le fichier ‘vars’.

Génère la clé Diffie-Hellman à l’aide de la commande ci-dessous.

./easyrsa gen-dh

La clé DH a été générée et se trouve dans le répertoire ‘pki’.

Construis la clé Diffie-Hellman

Facultatif : Génère la clé CRL

La clé CRL (Certificate Revoking List) sera utilisée pour révoquer la clé du client. Si tu as plusieurs certificats clients sur ton serveur vpn et que tu veux révoquer une clé, il te suffit de la révoquer à l’aide de la commande easy-rsa.

Si tu veux révoquer une clé, exécute la commande ci-dessous.

./easyrsa revoke someone

Et ensuite, génère la clé CRL.

./easyrsa gen-crl

Le fichier CRL PEM a été généré dans le répertoire ‘pki’ – voici un exemple sur mon serveur.

Génère la clé LCR

Copie des fichiers de certificats

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

Copie 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/

Copie la clé et le certificat du client01.

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

Copie la clé DH et CRL.

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

Copie des fichiers de certificats

Étape 4 – Configurer OpenVPN

Dans cette étape, nous allons créer une nouvelle configuration ‘server.conf’ pour le serveur openvpn.

Va dans le répertoire ‘/etc/openvpn/’ et crée un nouveau fichier de configuration ‘server.conf’ en utilisant vim.

cd /etc/openvpn/
vim server.conf

Colle-y la configuration suivante du serveur OpenVPN.

# 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.10.1.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 client to connect with 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
comp-lzo yes
daemon
user nobody
group nobody

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

Sauvegarde et quitte.

La configuration pour OpenVPN a été créée.

Étape 5 – Activer le Port-Forwarding et configurer le Routing Firewalld

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

Active le module noyau de transfert de port en exécutant les commandes suivantes.

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

Ensuite, configure le routage en utilisant le Firewalld pour OpenVPN.

Ajoute le service ‘openvpn’ à la liste de services de firewalld et ajoute l’interface ‘tun0’ à la zone de confiance de firewalld.

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

Active ‘MASQUERADE’ sur la zone de confiance de firewalld.

firewall-cmd --permanent --zone=trusted --add-masquerade

Active le NAT pour l’adresse IP interne OpenVPN ‘10.10.1.0/24’ vers l’adresse IP externe ‘SERVERIP’.

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

Et recharge firewalld.

firewall-cmd --reload

Le transfert de port et le routage de Firewalld sont terminés, maintenant démarre le service openvpn et active son lancement automatique à chaque démarrage du système.

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

Activer le transfert de port et configurer le routage Firewalld

Vérifie-le à l’aide des commandes ci-dessous.

netstat -plntu
systemctl status [email protected]

Le serveur OpenVPN est en place et fonctionne sur le port de protocole udp ‘1194’.

Vérifier le statut du serveur OpenVPN

Étape 6 – Configuration du client OpenVPN

Va dans le répertoire ‘/etc/openvpn/client’ et crée un nouveau fichier de configuration du client OpenVPN ‘client01.ovpn’ en utilisant vim.

cd /etc/openvpn/client
vim client01.ovpn

Colle-y la configuration client OpenVPN suivante.

client
dev tun
proto udp

remote 139.xx.xx.xx 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 lzo
nobind persist-key persist-tun mute-replay-warnings verb 3

Sauvegarde et quitte.

Compresse maintenant le répertoire ‘/etc/openvpn/client’ en fichier ‘zip’ ou ‘tar.gz’ et télécharge le fichier compressé en utilisant scp depuis ton ordinateur local.

Compresse le répertoire ‘/etc/openvpn/client’ dans le fichier ‘client01.tar.gz’.

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

OpenVPN Client Setup

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

Copie du client

Étape 7 – Test d’OpenVPN

Test sur les clients.

– Sur Linux

Installe le paquet OpenVPN et si tu veux une configuration GUI, installe OpenVPN network-manager.

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

Si tu veux te connecter à l’aide d’un shell de terminal, exécute la commande OpenVPN ci-dessous.

openvpn --config client01.ovpn

Lorsque tu es connecté à OpenVPN, ouvre un nouvel onglet de terminal et vérifie la connexion à l’aide de la commande curl.

curl ifconfig.io

Et tu obtiendras l’adresse IP du serveur OpenVPN.

Sur Mac OS

Télécharge Tunnelblick et installe-le.

Extrais le fichier ‘client01.tar.gz’ et renomme le répertoire ‘client’ en ‘client01.tblk’.

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

Double-clique sur ‘client01.tblk’ et Tunnelblick détectera automatiquement la configuration OpenVPN puis l’importera.

Connecte-toi maintenant au Tunnelblick sur la barre supérieure.

Sur Windows

Télécharge le client openvpn pour Windows et importe la configuration.

Référence

https://openvpn.net/

Vous aimerez aussi...