Configurer le serveur OpenVPN sur CentOS 8
Installer le référentiel EPEL
Les derniers packages OpenVPN sont fournis par les référentiels EPEL sur CentOS 8 et d'autres dérivés similaires. EPEL peut être installé sur CentOS 8 en exécutant la commande ci-dessous :
dnf install epel-release -y
Installer OpenVPN sur CentOS 8
Une fois les dépôts EPEL en place, vous pouvez maintenant installer le package OpenVPN sur CentOS 8 en exécutant la commande ci-dessous ;
dnf install openvpn
Installer l'utilitaire Easy-RSA CA sur CentOS 8
Le package Easy-RSA est un utilitaire CA basé sur le shell qui est utilisé pour générer des paires de clés SSL utilisées pour sécuriser les connexions VPN.
dnf install easy-rsa
Créer une infrastructure à clé publique OpenVPN
La première étape de la configuration d'un serveur OpenVPN consiste à créer une PKI composée de clés publiques et privées pour le serveur OpenVPN et les clients de connexion, ainsi qu'un certificat principal d'autorité de certification et une clé privée pour signer le serveur OpenVPN et les certificats clients. Si possible, vous devez créer la PKI sur un serveur séparé exécutant OpenVPN pour des raisons de sécurité.
Initialiser l'ICP
Easy-RSA est utilisé pour la gestion PKI. Les scripts Easy-RSA sont installés sous le /usr/share/easy-rsa
annuaire.
Pour vous assurer qu'Easy-RSA n'importe quelle configuration effectuée n'est pas écrasée en cas de mise à niveau, copiez les scripts dans un répertoire différent, de préférence sous /etc
répertoire.
mkdir /etc/easy-rsa
cp -air /usr/share/easy-rsa/3/* /etc/easy-rsa/
Une fois les scripts en place, accédez au répertoire et initialisez la PKI.
cd /etc/easy-rsa/
./easyrsa init-pki
Générer le certificat et la clé de l'autorité de certification (CA)
Ensuite, générez le certificat CA et la clé qui seront utilisés pour signer les certificats en exécutant les commandes ci-dessous dans le répertoire Easy-RSA ci-dessus.
./easyrsa build-ca
Cela vous demandera la phrase secrète de la clé CA et le nom commun du serveur.
Utilisation de SSL :openssl OpenSSL 1.1.1c FIPS 28 mai 2019Saisissez la nouvelle phrase secrète de la clé CA :ENTREZ LE MOT DE PASSE Saisissez à nouveau la nouvelle phrase de passe de la clé CA :RE-ENTER PASSWORD Génération de la clé privée RSA, module long de 2048 bits (2 nombres premiers).............................. ..............................+++++.+++++e est 65537 (0x010001)Impossible chargez /etc/easy-rsa/pki/.rnd dans RNG140160794502976:erreur:2406F079:générateur de nombres aléatoires:RAND_load_file:Impossible d'ouvrir le fichier:crypto/rand/randfile.c:98:Filename=/etc/easy-rsa/pki/ .rndVous ê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 une valeur par défaut, si vous entrez '.', le champ sera laissé vide.-----Nom commun (par exemple :votre nom d'utilisateur, d'hôte ou de serveur) [Easy-RSA CA] :Kifarunix -CA La création de l'autorité de certification est terminée et vous pouvez maintenant importer et signer les demandes de certificat.Votre nouveau fichier de certificat d'autorité de certification pour la publication se trouve à :/etc/easy-rsa/pki/ca.crt
Le certificat CA est stocké dans /etc/easy-rsa/pki/ca.crt
.
Générer les paramètres Diffie Hellman
Dans le même répertoire Easy-RSA que ci-dessus, exécutez la commande ci-dessous pour générer un fichier de clé Diffie-Hellman qui peut être utilisé pour l'échange de clé lors de la négociation TLS avec les clients qui se connectent.
./easyrsa gen-dh
La commande prendra un certain temps pour se terminer. Il stocke ensuite les paramètres DH sur le /etc/easy-rsa/pki/dh.pem
dossier.
Générer le certificat et la clé du serveur OpenVPN
Pour générer un certificat et une clé privée pour le serveur OpenVPN, exécutez la commande ci-dessous :
cd /etc/easy-rsa
./easyrsa build-server-full server nopass
Lorsque la commande s'exécute, vous serez invité à saisir la phrase secrète de la clé CA créée ci-dessus.
nopass
désactive l'utilisation de la phrase de passe.
Générer une clé HMAC (Hash-based Message Authentication Code)
Pour générer une clé d'authentification pré-partagée TLS/SSL qui sera utilisée pour ajouter une signature HMAC supplémentaire à tous les paquets de prise de contact SSL/TLS, afin d'éviter les attaques DoS et l'inondation du port UDP, exécutez la commande ci-dessous :
openvpn --genkey - -secret /etc/easy-rsa/pki/ta.key
Générer un certificat de révocation
Afin d'invalider un certificat précédemment signé, vous devez générer un certificat de révocation.
./easyrsa gen-crl
Le certificat de révocation est stocké sous /etc/easy-rsa/pki/crl.pem
.
Copier les certificats et les clés du serveur dans le répertoire du serveur
Ensuite, copiez tous les certificats/clés générés dans le répertoire de configuration du serveur OpenVPN.
cp -rp /etc/easy-rsa/pki/{ca.crt,dh.pem,ta.key,crl.pem,issued,private} /etc/openvpn/server/
Générer un certificat client et une clé OpenVPN
Pour générer le certificat et la clé privée des clients OpenVPN, exécutez la commande ci-dessous :
cd /etc/easy-rsa
./easyrsa build-client-full koromicha nopass
où koromicha est le nom du client pour lequel le certificat et les clés sont générés. Utilisez toujours un nom commun unique pour chaque client pour lequel vous générez un certificat et des clés.
Pour générer pour le second client,
./easyrsa build-client-full johndoe nopass
Copier les certificats client et les clés dans le répertoire client
Créez un répertoire pour chaque client sur le répertoire du client OpenVPN
mkdir /etc/openvpn/client/{koromicha,johndoe}
Ensuite, copiez tous les certificats/clés générés par le client et le certificat CA dans le répertoire de configuration du client OpenVPN. Vous pouvez
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/koromicha.crt,private/koromicha.key} /etc/openvpn/client/koromicha
cp -rp /etc/easy-rsa/pki/{ca.crt,issued/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/
Configurer le serveur OpenVPN sur CentOS 8
OpenVPN est livré avec un exemple de fichier de configuration dans son répertoire de documentation. Copiez le fichier dans /etc/openvpn/server/
et modifiez-le selon vos besoins.
cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/
Ouvrez la configuration pour modification.
vim /etc/openvpn/server/server.conf
Le dossier est très commenté. Lisez les commentaires pour chaque option de configuration.
Dans la forme la plus basique, voici nos options de configuration, sans commentaires. 255.255.255.0ifconfig-pool-persist ipp.txtpush "redirect-gateway def1 bypass-dhcp"push "dhcp-option DNS 208.67.222.222"push "dhcp-option DNS 192.168.10.3"client-to-clientkeepalive 10 120tls-auth ta .key 0 # Ce fichier est un chiffrement secret AES-256-CBCcomp-lzouser personsgroup nobodypersist-keypersist-tunstatus /var/log/openvpn/openvpn-status.log log-append /var/log/openvpn/openvpn.log verbe 3explicit-exit-notify 1auth SHA512
Enregistrez et quittez la configuration une fois la modification effectuée.
Vous souhaitez attribuer des adresses IP fixes/statiques à vos clients OpenVPN ? Suivez le guide ci-dessous;
Attribuer des adresses IP statiques aux clients OpenVPN
Créer un répertoire de journal ;
mkdir /var/log/openvpn/
Explorez la configuration et effectuez des réglages plus précis en fonction de vos besoins.
Configurer le routage du serveur OpenVPN
Pour vous assurer que le trafic du client est acheminé via l'adresse IP des serveurs (aide à masquer l'adresse IP du client), vous devez activer le transfert IP sur le serveur OpenVPN ;
echo "net.ipv4.ip_forward =1">> /etc/sysctl.conf
Exécutez la commande ci-dessous pour effectuer les modifications sans redémarrer le serveur.
sysctl --system
Autoriser le port de service OpenVPN via le pare-feu
firewall-cmd --add-port=1194/udp --permanent
Activer le masquage IP
firewall-cmd --add-masquerade --permanent
Transférer le trafic reçu sur le sous-réseau OpenVPN spécifié, par exemple, le 10.8.0.0/24 dans notre cas, vers une interface via laquelle les paquets vont être envoyés.
Pour trouver l'interface via laquelle les paquets sont envoyés en exécutant la commande ci-dessous :
ip route get 8.8.8.8
8.8.8.8 via 192.168.43.1 dev enp0s3 src 192.168.43.73 uid 0
Le nom de l'interface et le sous-réseau défini peuvent être différents pour votre cas. Remplacez-les en conséquence.
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp0s 3 -j MASCARADE
Rechargez firewalld pour que les modifications prennent effet.
firewall-cmd --reload
Démarrez et configurez l'exécution d'OpenVPN au démarrage du système.
systemctl enable --now [email protected]
Lorsque le service OpenVPN s'exécute, il crée une interface de tunnellisation, tun0;
ip add s
4 :tun0 :mtu 1500 qdisc fq_codel état UNKNOWN groupe par défaut qlen 100 lien/aucun inet 10.8.0.1/24 brd 10.8.0.255 portée globale tun0 valid_lft pour toujours prefer_lft pour toujours inet6 fe80 ::2ed5:8f74:c456:96b7/64 lien de portée stable-privacy valid_lft pour toujours prefer_lft pour toujours
Vérification des journaux ;
tail /var/log/openvpn/openvpn.log
/sbin/ip addr add dev tun0 10.8.0.1/24 broadcast 10.8.0.255
Socket Buffers: R=[212992->212992] S=[212992->212992]
UDPv4 link local (bound): [AF_INET][undef]:1194
UDPv4 link remote: [AF_UNSPEC]
GID set to nobody
UID set to nobody
MULTI: multi_init called, r=256 v=256
IFCONFIG POOL: base=10.8.0.2 size=252, ipv6=0
IFCONFIG POOL LIST
Initialization Sequence Completed
Votre serveur OpenVPN est maintenant opérationnel. Cela nous amène à la fin de notre guide sur l'installation et la configuration du serveur OpenVPN sur CentOS 8.
Vous pouvez maintenant procéder à la configuration des clients OpenVPN ;
Installer et configurer le client OpenVPN sur CentOS 8/Ubuntu 18.04
Configurez l'authentification basée sur OpenVPN LDAP.
Configurer l'authentification basée sur OpenVPN LDAP
Tutoriel associé
Configurer le VPN IPSEC à l'aide de StrongSwan sur Ubuntu 18.04
Configurer le client VPN strongSwan sur Ubuntu 18.04/CentOS 8
Connectez-vous à Cisco VPN à l'aide du fichier PCF sur Ubuntu