OpenVPN - Installation sur Debian
OpenVPN est une solution de réseau privé virtuel (VPN) libre et open source qui permet de créer un tunnel sécurisé entre deux réseaux ou entre un utilisateur distant et un réseau d’entreprise via Internet. Il utilise les protocoles SSL/TLS pour assurer l’authentification et le chiffrement des communications, garantissant ainsi la confidentialité et l’intégrité des données échangées. OpenVPN peut fonctionner en mode routé (TUN), pour connecter des utilisateurs à un réseau distant, ou en mode bridgé (TAP), pour relier deux réseaux comme s’ils étaient sur le même segment. Grâce à son système d’authentification par certificats, clés ou identifiants, il offre un haut niveau de sécurité et est largement utilisé dans les entreprises pour permettre aux collaborateurs nomades d’accéder aux ressources internes (serveurs, fichiers, applications) depuis l’extérieur tout en passant par un tunnel chiffré sur Internet.
installer OpenVPN sur Debian est relativement simple et peut être réalisé en quelques étapes. Voici comment procéder pour installer et configurer OpenVPN sur une machine Debian :
INSTALLATION D’OPENVPN SUR DEBIAN
Section intitulée « INSTALLATION D’OPENVPN SUR DEBIAN »-
Mettre à jour les paquets :
Fenêtre de terminal apt update -
Installer OpenVPN :
Fenêtre de terminal apt install openvpn easy-rsa

CONFIGURATION D’OPENVPN SUR DEBIAN
Section intitulée « CONFIGURATION D’OPENVPN SUR DEBIAN »- Création de l’infrastructure de certificats (PKI)
Créer le dossier EasyRSA :
make-cadir /etc/openvpn/easy-rsaAller dans le dossier :
cd /etc/openvpn/easy-rsa- Initialiser la PKI
./easyrsa init-pki
- Création de l’autorité de certification
./easyrsa build-ca nopass
Le certificat CA est créé pki/ca.crt

- Création du certificat serveur
./easyrsa gen-req server nopass
- Signer le certificat :
./easyrsa sign-req server server
- Génération de Diffie-Hellman :
./easyrsa gen-dh- Génération de la clé TLS :
openvpn --genkey secret ta.key- Copier les certificats et les clés dans le dossier de configuration d’OpenVPN
cp pki/ca.crt /etc/openvpn/server/cp pki/issued/server.crt /etc/openvpn/server/cp pki/private/server.key /etc/openvpn/server/cp pki/dh.pem /etc/openvpn/server/cp ta.key /etc/openvpn/server/CREATION D’UN CERTIFICAT CLIENT
Section intitulée « CREATION D’UN CERTIFICAT CLIENT »- Création d’un certificat client
- Créer un utilisateur VPN :
./easyrsa gen-req [USER] nopass
- Signer le certificat :
./easyrsa sign-req client [USER]
- Configuration du serveur OpenVPN
Créer le fichier de configuration du serveur OpenVPN /etc/openvpn/server/server.conf
Configuration :
port 1194proto udpdev tun
ca ca.crtcert server.crtkey server.keydh dh.pem
server 10.8.0.0 255.255.255.0
push "route [RESEAU INTERNE] [MASQUE RESEAU INTERNE]"
keepalive 10 120
tls-crypt ta.key
data-ciphers AES-256-GCM:AES-128-GCM
persist-keypersist-tun
user nobodygroup nogroup
status /var/log/openvpn-status.loglog /var/log/openvpn.log
verb 3Il est possible d’ajouter d’autres directives de configuration selon les besoins spécifiques du réseau et des clients VPN comme un serveur DNS ou definir la passerelle par défaut pour les clients VPN.
push "redirect-gateway def1"push "dhcp-option DNS [IP_DNS]"- Démarrage du serveur OpenVPN
systemctl start openvpn-server@server- Activer au démarrage :
systemctl enable openvpn-server@serverVérifier :
systemctl status openvpn-server@server
CONFIGURATION DU CLIENT WINDOWS
Section intitulée « CONFIGURATION DU CLIENT WINDOWS »- Configuration du client Windows
Installer : OpenVPN Connect
Le client doit posséder :
- ca.crt
- karim.crt
- karim.key
- ta.key
Créer un fichier - [USER].ovpn - avec la configuration suivante :
clientdev tunproto udp
remote [IP_SERVEUR] 1194
resolv-retry infinitenobindpersist-keypersist-tun
ca ca.crtcert karim.crtkey karim.key
remote-cert-tls server
tls-crypt ta.key
data-ciphers AES-256-GCM:AES-128-GCM
verb 3Noter qu’il est possible de regrouper tous les certificats et clés dans un même fichier .ovpn pour faciliter la configuration du client.
clientdev tunproto udpremote IP_PUBLIQUE_DU_SERVEUR 1194
resolv-retry infinitenobindpersist-keypersist-tun
remote-cert-tls serverdata-ciphers AES-256-GCM:AES-128-GCMverb 3
<ca>-----BEGIN CERTIFICATE-----... contenu de ca.crt ...-----END CERTIFICATE-----</ca>
<cert>-----BEGIN CERTIFICATE-----... contenu de karim.crt ...-----END CERTIFICATE-----</cert>
<key>-----BEGIN PRIVATE KEY-----... contenu de karim.key ...-----END PRIVATE KEY-----</key>
<tls-crypt>-----BEGIN OpenVPN Static key V1-----... contenu de ta.key ...-----END OpenVPN Static key V1-----</tls-crypt>Voilà un script qui permet de regrouper tous les éléments nécessaires à la connexion dans un seul fichier .ovpn, ce qui simplifie grandement la configuration du client OpenVPN Connect. Il suffit de remplacer les sections <ca>, <cert>, <key> et <tls-crypt> par le contenu des fichiers correspondants (ca.crt, karim.crt, karim.key et ta.key) pour que le client puisse se connecter au serveur OpenVPN sans avoir à gérer plusieurs fichiers séparés.
CLIENT="[NOM_UTILISATEUR]"SERVER_IP="[IP_PUBLIQUE_DU_SERVEUR]"OUTPUT="/etc/openvpn/client/${CLIENT}.ovpn"
mkdir -p /etc/openvpn/client
cat > "$OUTPUT" <<EOFclientdev tunproto udpremote ${SERVER_IP} 1194
resolv-retry infinitenobindpersist-keypersist-tun
remote-cert-tls serverdata-ciphers AES-256-GCM:AES-128-GCMverb 3
<ca>$(cat /etc/openvpn/easy-rsa/pki/ca.crt)</ca>
<cert>$(cat /etc/openvpn/easy-rsa/pki/issued/${CLIENT}.crt)</cert>
<key>$(cat /etc/openvpn/easy-rsa/pki/private/${CLIENT}.key)</key>
<tls-crypt>$(cat /etc/openvpn/server/ta.key)</tls-crypt>EOF
Vous pouvez ensuite importer ce fichier .ovpn dans le client OpenVPN Connect pour établir la connexion VPN avec le serveur Debian.

- Test de la connexion VPN
Une fois la configuration du client terminée, vous pouvez tester la connexion VPN en lançant le client OpenVPN Connect et en vérifiant que vous pouvez accéder aux ressources du réseau interne du serveur Debian (par exemple, en pingant une machine du réseau interne ou en faisant un bureau à distance). Vous pouvez également vérifier les logs du serveur OpenVPN pour vous assurer que la connexion a été établie correctement.

Le poste client a bien une IP du réseau VPN.

Il a également une route vers le réseau interne du serveur Debian.

Et le bureau à distance fonctionne.
