Outils pour utilisateurs

Outils du site


Panneau latéral

Mycélium

Documentation

Travaux

Membres

Wiki

documentation:technique:vpn:client

Client VPN

Cette page décrit comment configurer un nouveau client VPN, de sa machine à notre serveur.

Voici les différentes étapes :

  1. Générer un certificat et une clé privée sur le poste du client
  2. Signer le certificat avec notre CA, et le retourner
  3. Attribuer une IP fixe au client dans le serveur OpenVPN
  4. Configurer OpenVPN sur le poste du client

Générer un certificat et une clé privée

Cette étape est à réaliser sur le poste du client.

Sous Debian Stretch et plus

Pré-requis

Assurez-vous d'avoir les paquets suivant d'installés :

  • openvpn
  • easy-rsa >= 3

Sous Debian Stretch, Easy-RSA est encore en version 2. Vu le peu de dépendances que le paquet nécessite, nous allons le récupérer et l'installer depuis Debian Buster (testing) :

Création du certificat et de la clé

  1. Lancer un terminal, en tant qu'un utilisateur, et se placer dans un dossier qui a du sens pour le client (par exemple dans ~/Documents/Mycélium/VPN)
  2. Initialiser le dossier qui contiendra les certificats, avec easy-rsa : make-cadir ./client-ca
  3. Aller dans ce dossier pour la suite des opérations : cd ./client-ca
  4. Initialiser le dossier et l'environnement Easy-RSA : ./easyrsa init-pki
  5. Créer le certificat et la clé du client, en remplaçant adherent1 par le nom du client : ./easyrsa gen-req adherent1 nopass

À la fin, on se retrouve avec un dossier pki/, qui contient :

  • la clé privée du client : pki/private/adherent1.key
  • le certificat, qu'on va envoyer au serveur afin de le signer : pki/reqs/adherent1.req

Signer le certificat du client

Cette étape est à réaliser sur le serveur où se trouve notre CA racine.

  1. Se placer dans le dossier où a été créé le CA racine
  2. Importer le certificat du client : ./easyrsa import-req /tmp/adherent1.req adherent1
  3. Signer le certificat : ./easyrsa sign-req client adherent1

À la fin, le fichier pki/issued/adherent1.crt a été créé, il est à retourner au client.

Attribuer une IP fixe au client

Cette étape est à réaliser sur le serveur VPN.

  1. Créer un nouveau fichier portant le nom du client dans /etc/openvpn/server/ccd
  2. Attribuer une IP au client (ex. 10.8.0.10), et ajouter dans ce nouveau fichier la ligne : ifconfig-push 10.8.0.10 255.255.255.0

TODO Discuter et définir d'une façon d'assigner les adresses IPs

TODO Vérifier ces étapes après la mise en place de notre bloc d'adresse IPs publiques

TODO Définir également l'adresse IPv6

Configurer OpenVPN sur le client

Cette étape est à réaliser sur le poste client. Les fichiers ca.crt et ta.key sont propres à notre serveur VPN et à fournir au client.

Sous Gnome avec NetworkManager

Il faut que le paquet network-manager-openvpn-gnome soit installé.

Ajouter ensuite une nouvelle connexion de type OpenVPN, en spécifiant dans l'onglet VPN :

  • Général
    • Passerelle : cacatoes.ml
  • Authentification
    • Type : Certificats (TLS)
    • Certificat de l'utilisateur : <choisir le fichier adherent1.crt>
    • Certificat du CA : <choisir le fichier ca.crt (propre au serveur)>
    • Clé privée : <choisir le fichier adherent1.key>

Cliquer ensuite sur Avancé…, puis dans l'onglet :

  • Général :
    • Cocher Utiliser la compression de données LZO
  • Sécurité :
    • Chiffrement : AES-256-CBC
  • Authentification TLS :
    • Cocher Verify peer (server) certificate usage signature
      • Remote peer certificate TLS type : Serveur
    • Cocher Utiliser une ahtneitification TLS supplémentaire
      • Fichier de clé : <choisir le fichier ta.key (propre au serveur)>
      • Direction de la clé : 1

Comme service avec systemd

Il faut que le paquet openvpn soit installé.

En tant que root, se placer dans le dossier /etc/openvpn/client, puis :

  1. Créer un fichier mycelium.conf avec le contenu suivant :
    client
    dev tun
    proto udp
    remote cacatoes.ml
    port 1194
    nobind
    persist-key
    persist-tun
    ca mycelium/ca.crt
    key mycelium/adherent1.key
    cert mycelium/adherent1.crt
    tls-auth mycelium/ta.key 1
    remote-cert-tls server
    cipher AES-256-CBC
    comp-lzo
    verb 3
    
    redirect-gateway def1
    tls-client
    route-delay 2
  2. Créer un dossier mycelium, et y déposer les fichiers adherent1.key et adherent1.crt généré précédemment, ainsi que ca.crt et ta.key propres au serveur
  3. Démarrer désormais le service avec systemd : systemctl start openvpn-client@mycelium.service
documentation/technique/vpn/client.txt · Dernière modification: 2018/12/02 19:51 par jerome