Configuration du serveur
- Installer OpenVPN
Terminal window sudo apt update && apt install openvpn - Copier le répertoire easy-rsa
easy-rsa est utilisé pour générer les certificats.
Terminal window sudo cp -pr /usr/share/easy-rsa /etc/openvpn/server/ && cd /etc/openvpn/server/easy-rsa/└── 📁etc└── 📁openvpn└── 📁server└── 📁easy-rsa - Renommer et éditer le fichier vars depuis le template
Terminal window cp vars.example vars && nano vars/└── 📁etc└── 📁openvpn└── 📁server└── 📁easy-rsa├── 📄vars.example└── 📄vars- Rechercher le bloc suivant :
/etc/openvpn/server/easy-rsa/vars # Organizational fields (used with 'org' mode and ignored in 'cn_only' mode.)# These are the default values for fields which will be placed in the# certificate. Don't leave any of these fields blank, although interactively# you may omit any specific field by typing the "." symbol (not valid for# email.)#set_var EASYRSA_REQ_COUNTRY "US"#set_var EASYRSA_REQ_PROVINCE "California"#set_var EASYRSA_REQ_CITY "San Francisco"#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"#set_var EASYRSA_REQ_EMAIL "me@example.net"#set_var EASYRSA_REQ_OU "My Organizational Unit"# Choose a size in bits for your keypairs. The recommended value is 2048. Using# 2048-bit keys is considered more than sufficient for many years into the# future. Larger keysizes will slow down TLS negotiation and make key/DH param# generation take much longer. Values up to 4096 should be accepted by most# software. Only used when the crypto alg is rsa (see below.)- Décommenter les lignes et entrer votre configuration :
/etc/openvpn/server/easy-rsa/vars set_var EASYRSA_REQ_COUNTRY "FR"set_var EASYRSA_REQ_PROVINCE "France"set_var EASYRSA_REQ_CITY "maville"set_var EASYRSA_REQ_ORG "xsec"set_var EASYRSA_REQ_EMAIL "test@gmail.com"set_var EASYRSA_REQ_OU "it" - Créer l'Autorité de Certification
- Ici sans mot de passe, en production il est recommandé d’en définir un.
Terminal window ./easyrsa init-pkiTerminal window ./easyrsa build-ca nopass./easyrsa build-ca nopass Note: using Easy-RSA configuration from: /etc/openvpn/server/easy-rsa/varsUsing SSL: openssl OpenSSL 1.1.1k 25 Mar 2021Generating RSA private key, 2048 bit long modulus (2 primes).............................+++++..................................+++++e is 65537 (0x010001)You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Common Name (eg: your user, host, or server name) [Easy-RSA CA]:CA creation complete and you may now import and sign cert requests.Your new CA certificate file for publishing is at:/etc/openvpn/server/easy-rsa/pki/ca.crtCommon Name [Easy-RSA CA]:Appuyez sur Entrée pour garder le nom par défaut.
- Générer le certificat du serveur
- Ici sans mot de passe, en production il est recommandé d’en définir un.
Terminal window ./easyrsa build-server-full server nopass - Générer le certificat du client
- Ici sans mot de passe, en production il est recommandé d’en définir un.
Terminal window ./easyrsa build-client-full client nopass - Générer le fichier dh.pem
- Ce fichier sera utilisé pour la première connexion avec chiffrement symétrique
Terminal window ./easyrsa gen-dh- Cette opération peut prendre du temps, selon la puissance de votre machine.
- Générer le fichier de clé
Terminal window openvpn --genkey tls-auth ta.key - Réorganiser les fichiers
- Copier l’ensemble du répertoire des fichiers générés du serveur et de l’Autorité de Certification vers
/etc/openvpn/
Terminal window cp pki/issued/server.crt pki/private/server.key pki/ca.crt pki/dh.pem ta.key /etc/openvpn//└── 📁etc└── 📁openvpn├── 📄server.crt├── 📄server.key├── 📄ca.crt├── 📄dh.pem└── 📄ta.key- Copier l’ensemble du répertoire des fichiers générés du client vers
/etc/openvpn/client/
Terminal window cp pki/issued/client.crt pki/private/client.key pki/ca.crt pki/dh.pem ta.key /etc/openvpn/client//└── 📁etc└── 📁openvpn└── 📁client├── 📄client.crt├── 📄client.key├── 📄ca.crt├── 📄dh.pem└── 📄ta.key - Copier l’ensemble du répertoire des fichiers générés du serveur et de l’Autorité de Certification vers
- Créer le fichier de configuration depuis le template
Terminal window cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server.conf && cd /etc/openvpn/└── 📁etc└── 📁openvpn├── 📄server.conf├── 📄server.crt├── 📄server.key├── 📄ca.crt├── 📄dh.pem└── 📄ta.key- Ici nous copions le fichier de configuration dans le répertoire par défaut
/etc/openvpn/et entrons dans le répertoire.
- Ici nous copions le fichier de configuration dans le répertoire par défaut
- Renommer le fichier dh.pem
Terminal window mv /etc/openvpn/dh.pem /etc/openvpn/dh2048.pemNote
En le renommant en
dh2048.pem, le fichierserver.confle reconnaîtra directement, puisque le nom de fichierdh2048.pemest spécifié par défaut. - Tester la configuration
Terminal window openvpn --config /etc/openvpn/server.confTip
Si votre configuration est correcte, vous verrez dans la dernière ligne :
Initialization Sequence CompletedErreur “Already in use”
Danger
Si vous avez déjà une instance d’openvpn en cours d’exécution, il peut y avoir un conflit avec l’installation (erreur: Alredy in use).
Vous devez trouver le processus qui bloque le port du service.Vous pouvez lister la liste des ports utilisés :
Terminal window ss -naVous pouvez filtrer le port par défaut d’OpenVPN pour voir si une instance est en cours d’exécution :
Terminal window ss -pan | grep 1194udp UNCONN 0 0 0.0.0.0:1194 0.0.0.0:* users:(("openvpn",pid=8660,fd=7))- Vous pouvez voir le
pid=8660ici, vous devez arrêter ce processus :
Terminal window sudo kill -9 8660- Continuez l’opération jusqu’à ce que
ss -pan | grep 1194ne retourne plus de résultat (adaptez le pid à chaque fois)
- Vous pouvez voir le
- Redémarrer openvpn sur le serveur
Terminal window systemctl daemon-reload && systemctl restart openvpnNote
Vous pouvez ajouter
systemctl enable openvpnpour faire démarrer OpenVPN automatiquement avec la machine.
Configuration du client
- Installer OpenVPN sur le client
Terminal window apt update && apt install openvpn - Copier les fichiers du répertoire /etc/openvpn/client pour les transférer sur la machine cliente
Sur la machine cliente, déplacez-les vers
/etc/openvpn//└── 📁etc└── 📁openvpn├── 📄client.crt├── 📄client.key├── 📄ca.crt├── 📄dh.pem└── 📄ta.key - Copier et éditer le fichier de configuration client
Terminal window cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/ && nano /etc/openvpn/client.conf/└── 📁etc└── 📁openvpn└── 📄client.conf/etc/openvpn/client.conf ############################################### Exemple de fichier de configuration ## OpenVPN 2.0 côté client pour se connecter ## à un serveur multi-clients. ## ## Cette configuration peut être utilisée ## par plusieurs clients, cependant chaque ## client doit avoir ses propres fichiers ## cert et key. ## ## Sous Windows, vous pouvez renommer ce ## fichier pour qu'il ait une extension .ovpn ################################################ Spécifier que nous sommes un client et que nous# allons récupérer certaines directives du fichier# de configuration depuis le serveur.client# Utiliser le même paramètre que celui que vous# utilisez sur le serveur.# Sur la plupart des systèmes, le VPN ne fonctionnera# pas sauf si vous désactivez partiellement ou# totalement le pare-feu pour l'interface TUN/TAP.;dev tapdev tun# Windows a besoin du nom de l'adaptateur TAP-Win32# depuis le panneau Connexions réseau# si vous en avez plus d'un. Sous XP SP2,# vous devrez peut-être désactiver le pare-feu# pour l'adaptateur TAP.;dev-node MyTap# Nous connectons-nous à un serveur TCP ou# UDP ? Utilisez le même paramètre que# sur le serveur.;proto tcpproto udp# Le nom d'hôte/IP et le port du serveur.# Vous pouvez avoir plusieurs entrées remote# pour équilibrer la charge entre les serveurs.remote my-server-1 1194;remote my-server-2 1194Remplacer
remote my-server-1 1194parremote IP_DU_SERVEUR_OPENVPN 1194 - Redémarrer OpenVPN sur le client
Terminal window sudo systemctl daemon-reload && systemctl restart openvpnNote (Démarrage automatique à la session)
Vous pouvez ajouter
systemctl enable openvpnpour faire démarrer OpenVPN automatiquement avec la machine. - Se connecter au serveur OpenVPN
Terminal window openvpn --config /etc/openvpn/client.confSi votre configuration est correcte, vous verrez dans la dernière ligne :
Initialization Sequence Completed