Configurer le serveur OpenVPN sur Rocky Linux 8
Installer le référentiel EPEL
Les derniers packages OpenVPN sont fournis par les référentiels EPEL sur Rocky Linux 8 et d'autres dérivés similaires. EPEL peut être installé sur Rocky Linux 8 en exécutant la commande ci-dessous ;
dnf install epel-release -y
Installer OpenVPN sur Rocky Linux 8
Une fois les dépôts EPEL en place, vous pouvez maintenant installer le package OpenVPN sur Rocky Linux 8 en exécutant la commande ci-dessous ;
dnf installer openvpn
Installer l'utilitaire Easy-RSA CA sur Rocky Linux 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, toute configuration effectuée n'est pas écrasée en cas de mise à niveau, copiez les scripts dans un autre répertoire, 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
Exemple de sortie de commande ;
init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/easy-rsa/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.1g FIPS 21 avril 2020Saisissez la nouvelle phrase secrète de la clé CA :saisissez à nouveau la phrase secrète de la clé CA :Génération de la clé privée RSA, 2 048 bits module long (2 nombres premiers)........................++++ +.................................................. ...+++++e est 65537 (0x010001)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 laisser des champs videsPour certains champs il y aura une valeur par défaut,Si vous entrez '.', le champ sera laissé vide.-----Nom commun (ex:votre utilisateur, hôte ou serveur name) [Easy-RSA CA] :la création de Kifarunix-demo CACA est terminée et vous pouvez maintenant importer et signer des demandes de certificat. Votre nouveau fichier de certificat CA pour la publication se trouve à :/etc/easy-rsa/pki/ca.crt
Le fichier CA est /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 poignée de main 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
fichier.
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 secrète dans les certificats.
Utilisation de SSL :openssl OpenSSL 1.1.1g FIPS 21 avril 2020Génération d'une clé privée RSA.....+++++............ ...................+++++écrire une nouvelle clé privée dans '/etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.4TROOP '-----Utilisation de la configuration de /etc/easy-rsa/pki/easy-rsa-10170.VLZsfK/tmp.jTJJ7fEntrez la phrase de passe pour /etc/easy-rsa/pki/private/ca.key :Vérifiez que le la demande correspond à la signatureSignature okLe nom distinctif du sujet est le suivantNom commun :ASN.1 12 : 'serveur'Le certificat doit être certifié jusqu'au 3 octobre 18:03:20 2023 GMT (825 jours) pré>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.keyGé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-crlUtilisation de SSL :openssl OpenSSL 1.1.1g FIPS 21 avril 2020Utilisation de la configuration depuis /etc/easy-rsa/pki/easy-rsa-10284.mSzk9F/tmp.qdix0ASaisissez la phrase de passe pour /etc/easy-rsa/pki/private /ca.key :Une CRL mise à jour a été créée.Fichier CRL :/etc/easy-rsa/pki/crl.peLe 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 gentoo nopassExemple de sortie ;
Utilisation de SSL :openssl OpenSSL 1.1.1g FIPS 21 avril 2020Génération d'une clé privée RSA........................+++++.. .................................................. .....................................+++++écriture d'une nouvelle clé privée dans '/etc /easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.tauo7u'-----Utilisation de la configuration de /etc/easy-rsa/pki/easy-rsa-10316.rcXRdS/tmp.RxlTawEntrez la phrase de passe pour /etc/easy-rsa/pki/private/ca.key :Vérifiez que la requête correspond à la signature Signature ok 23 2023 GMT (825 jours)Écrivez la base de données avec 1 nouvelles entréesBase de données mise à jouroù gentoo 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 nopassCopier 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/{gentoo,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/gentoo.crt,private/gentoo.key} /etc/openvpn/client/gentoocp -rp /etc/easy-rsa/pki/{ca.crt,issued/johndoe.crt,private/johndoe.key} /etc/openvpn/client/johndoe/Configurer le serveur OpenVPN sur Rocky Linux 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.confLe 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.loglog-append /var/log/openvpn/openvpn.logverb 3explicit-exit-notify 1authentification 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 10.0.2.2 dev enp0s3 src 10.0.2.15 uid 0
cache
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 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 ajouter s
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
inet6 fe80::afd7:17a6:57ee:7f3b/64 scope link stable-privacy
valid_lft forever preferred_lft forever
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.255Socket Buffers :R=[212992->212992] S=[212992->212992]Lien UDPv4 local (lié) :[AF_INET][ undef]:1194UDPv4 link remote :[AF_UNSPEC]GID défini sur nobodyUID défini sur nobodyMULTI :multi_init appelé, r=256 v=256IFCONFIG POOL :base=10.8.0.2 size=252, ipv6=0IFCONFIG POOL LISTInitialization Sequence Completed
Votre serveur OpenVPN est maintenant opérationnel. Cela nous amène à la fin de notre guide sur la façon d'installer et de configurer OpenVPN Server sur Rocky Linux 8.
Vous pouvez maintenant procéder à la configuration des clients OpenVPN et les interconnecter via le serveur VPN.
Installer et configurer le client OpenVPN sur Rocky Linux 8
Autres tutoriels
Attribuer des adresses IP statiques aux clients OpenVPN
Configurer l'authentification basée sur OpenVPN LDAP