Logo
Créer un serveur OpenVPN sur Debian
Overview

Créer un serveur OpenVPN sur Debian

21 octobre 2021
12 janvier 2025
6 min de lecture
Disponible en :

Configuration du serveur

  1. Installer OpenVPN
    Terminal window
    sudo apt update && apt install openvpn
  2. 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
  3. 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"
  4. 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-pki
    Terminal window
    ./easyrsa build-ca nopass
    ./easyrsa build-ca nopass
    Note: using Easy-RSA configuration from: /etc/openvpn/server/easy-rsa/vars
    Using SSL: openssl OpenSSL 1.1.1k 25 Mar 2021
    Generating 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 incorporated
    into 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 blank
    For 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.crt
    • Common Name [Easy-RSA CA]: Appuyez sur Entrée pour garder le nom par défaut.
  5. 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
  6. 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
  7. 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.
  8. Générer le fichier de clé
    Terminal window
    openvpn --genkey tls-auth ta.key
  9. 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
  10. 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.
  11. Renommer le fichier dh.pem
    Terminal window
    mv /etc/openvpn/dh.pem /etc/openvpn/dh2048.pem
    Note

    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.

  12. Tester la configuration
    Terminal window
    openvpn --config /etc/openvpn/server.conf
    Tip

    Si votre configuration est correcte, vous verrez dans la dernière ligne :

    Initialization Sequence Completed
    Erreur “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 -na

    Vous 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 1194
    udp UNCONN 0 0 0.0.0.0:1194 0.0.0.0:* users:(("openvpn",pid=8660,fd=7))
    • Vous pouvez voir le pid=8660 ici, vous devez arrêter ce processus :
    Terminal window
    sudo kill -9 8660
    • Continuez l’opération jusqu’à ce que ss -pan | grep 1194 ne retourne plus de résultat (adaptez le pid à chaque fois)
  13. Redémarrer openvpn sur le serveur
    Terminal window
    systemctl daemon-reload && systemctl restart openvpn
    Note

    Vous pouvez ajouter systemctl enable openvpn pour faire démarrer OpenVPN automatiquement avec la machine.

Configuration du client

  1. Installer OpenVPN sur le client
    Terminal window
    apt update && apt install openvpn
  2. 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
  3. 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 tap
    dev 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 tcp
    proto 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 1194

    Remplacer remote my-server-1 1194 par remote IP_DU_SERVEUR_OPENVPN 1194

  4. Redémarrer OpenVPN sur le client
    Terminal window
    sudo systemctl daemon-reload && systemctl restart openvpn
    Note (Démarrage automatique à la session)

    Vous pouvez ajouter systemctl enable openvpn pour faire démarrer OpenVPN automatiquement avec la machine.

  5. Se connecter au serveur OpenVPN
    Terminal window
    openvpn --config /etc/openvpn/client.conf

    Si votre configuration est correcte, vous verrez dans la dernière ligne : Initialization Sequence Completed