Configuration du serveur
- Installer OpenVPN
sudo apt update && apt install openvpn- Copier le répertoire easy-rsa
easy-rsa est utilisé pour générer les certificats.
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
cp vars.example vars && nano vars/└── 📁etc └── 📁openvpn └── 📁server └── 📁easy-rsa ├── 📄vars.example └── 📄vars- Rechercher le bloc suivant :
# 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 :
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.
./easyrsa init-pki./easyrsa build-ca nopassNote: 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.
./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.
./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
./easyrsa gen-dh- Cette opération peut prendre du temps, selon la puissance de votre machine.
- Générer le fichier de clé
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/
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/
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- Créer le fichier de configuration depuis le template
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.
- Renommer le fichier dh.pem
mv /etc/openvpn/dh.pem /etc/openvpn/dh2048.pemNote
En le renommant en dh2048.pem, le fichier server.conf le reconnaîtra directement, puisque le nom de fichier dh2048.pem est spécifié par défaut.
- Tester la configuration
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 :
ss -naVous pouvez filtrer le port par défaut d’OpenVPN pour voir si une instance est en cours d’exécution :
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 :
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)
- Redémarrer openvpn sur le serveur
systemctl daemon-reload && systemctl restart openvpnNote
Vous pouvez ajouter systemctl enable openvpn pour faire démarrer OpenVPN automatiquement avec la machine.
Configuration du client
- Installer OpenVPN sur le client
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
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/ && nano /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 1194 par remote IP_DU_SERVEUR_OPENVPN 1194
- Redémarrer OpenVPN sur le client
sudo systemctl daemon-reload && systemctl restart openvpnNote (Démarrage automatique à la session)
Vous pouvez ajouter systemctl enable openvpn pour faire démarrer OpenVPN automatiquement avec la machine.
- Se connecter au serveur OpenVPN
openvpn --config /etc/openvpn/client.confSi votre configuration est correcte, vous verrez dans la dernière ligne : Initialization Sequence Completed