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

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

OpenVPN est une application open source qui vous permet de créer un réseau privé sécurisé sur l'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 CentOS 7.6. Et nous mettrons en œuvre l'authentification OpenVPN basée sur des certificats.

Prérequis

  • CentOS 7.6
  • Privilèges root

Qu'allons-nous faire ?

  1. Installer OpenVPN et Easy-RSA
  2. Configurer les variables Easy-RSA 3
  3. Créer des clés OpenVPN
  4. Configurer le serveur OpenVPN
  5. Configurer le pare-feu et activer le transfert de port
  6. Configuration client
  7. Test

Étape 1 - Installer OpenVPN et Easy-RSA

Dans ce didacticiel, 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 packages OpenVPN et easy-rsa, assurez-vous que le référentiel 'epel' est installé sur le système. Si vous ne l'avez pas, installez le référentiel epel à l'aide de la commande yum ci-dessous.

yum install epel-release -y

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

yum install openvpn easy-rsa -y

Une fois l'installation terminée, vérifiez la version openvpn et easy-rsa.

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

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

Allez dans le répertoire '/etc/openvpn/' et copiez le script 'easy-rsa'.

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

Allez maintenant dans le répertoire 'easy-rsa/3/' et créez un nouveau fichier vars à l'aide de vim.

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

Collez 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"

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

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

É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/3'.

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

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

Avant de créer des clés, nous devons initialiser le répertoire PKI 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'.

Construire 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 :

  • pas de passage =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'.

Construire la 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

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 clé de longueur que nous définissons dans le fichier 'vars'.

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

./easyrsa gen-dh

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 client sur votre serveur VPN et que vous souhaitez révoquer une clé, il vous suffit de révoquer à l'aide de la commande easy-rsa.

Si vous souhaitez révoquer une clé, exécutez la commande comme 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 certificats

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/

É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/' et créez un nouveau fichier de configuration 'server.conf' en utilisant vim.

cd /etc/openvpn/
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.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

Enregistrez et quittez.

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

Étape 5 - Activer le transfert de port et configurer le pare-feu de routaged

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

Activez le module de noyau de transfert 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' au service de liste firewalld et ajoutez l'interface 'tun0' à la zone de confiance firewalld.

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

Activez 'MASQUERADE' sur le pare-feu de la zone 'de confiance'.

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

Activez 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 rechargez firewalld.

firewall-cmd --reload

La redirection de port et le routage du pare-feu sont terminés, démarrez maintenant le service openvpn et activez-le pour qu'il se lance automatiquement à chaque démarrage du système.

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

Vérifiez-le en utilisant les commandes ci-dessous.

netstat -plntu
systemctl status [email protected]

Le serveur OpenVPN est opérationnel sur le port de protocole udp '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 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

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

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

Étape 7 - Tester 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