Creation VPN

Introduction

Un VPN ou Virtual Private Network est un moyen permettant de “relier” deux ordinateur distants. Le VPN permet entre autre de gérer des parcs informatiques distant comme si ils étaient à coté. Pour vous, Etudiant des Mines De Saint-Etienne, il permet surtout de by-passer les restriction mise en place sur le réseau de la résidence. Le VPN permet de mettre deux ordinateur distant sur le même réseau local grâce à l’établissement d’un tunnel entre les deux machines.

Prérequis

  • Un ordinateur sous OS quelconque
  • Un serveur sous Debian Jessie ou équivalent
  • De la patience

Installation ( Serveur )

Un peu de ménage

  • On commence par télécharger OpenVPN sur le serveur : root@minitel>>> apt-get update;apt-get upgrade; apt-get install openvpn
  • On fait un peu de ménage pour rendre l’exercice plus facile. Pour cea on récupère les script easy-rsa qui permettront de générer les certificats. Ils sont en général place dans /usr/share/easy-rsa mais ce n’est pas une obligation. Sous certaines versions de Debian ils sont dans /usr/share/openvpn/doc/easy-rsa/2.0:

    root@minitel>>> cp -a /usr/share/easy-rsa /etc/openvpn/ root@minitel>>> cd /etc/openvpn/easy-rsa
    
  • On initialise les variables des certificats et on purge les anciennes clés : root@minitel>>>source vars;./clean-all

Nos premiers certificats

  • On créer le certificat de l’autorité de certification :

    ./build-ca
    

Vous devriez avoir dans le dossier /etc/openvpn/easy-rsa/keys les fichier ca.crt et ca.key

  • Afin de fluidifier les échanges entre le serveur et le client tout en maximisant la sécurité, on génère la clé Diffie-Hellman :

    ./build-dh
    
  • On génère ensuite les certificats du serveur :

    ./build-key-server nom_serveur
    

Notre configuration serveur

  • On copie le modèle de configuration serveur serveur.conf d’OpenVpn dans le dossier /etc/openvpn/ :

    gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
    
  • On l’édite de tel façon que les lignes suivantes soit dé-commentés :

    user nobody
    group nogroup
    comp-lzo
    ca /etc/openvpn/easy-rsa/keys/ca.crt
    cert /etc/openvpn/easy-rsa/keys/nom_serveur.crt
    key /etc/openvpn/easy-rsa/keys/nom_serveur.key # This file should be kept secret
    dh /etc/openvpn/easy-rsa/keys/dh2048.pem
    push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 8.8.8.8"
    push "dhcp-option DNS 8.8.4.4"
    

Ici on a utilisé les DNS de google, rien ne vous empèche d’en utiliser d’autre.

  • On teste la configration cd /etc/openvpn/; systemctl start openvpn@server

On préfèrera systemctl à service car il permet d’indiquer explicitement la configuration à utiliser. On peut donc ainsi lancer plusieurs VPN sur le même serveur.

  • root@minitel>>> ifconfig tun0 Si rien ne sort de cette commande, alors recommencez le tuto, sinon vous pouvez passer à la suite.

Un peu de réseau

  • Afin de permettre la translations des paquets de l’interface tun0 à l’interface réseau primaire du serveur, nous allons devoir natter certains paquets.

    root@minitel>>> echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/NAT.conf; sysctl -p /etc/sysctl.d/NAT.conf; iptables -t filter -P FORWARD ACCEPT; iptables -t filter -A INPUT -p udp --dport 1194 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; Pour plus d'information sur ces commandes je vous invite à regarder ce site.
    
  • On rend ces règles persistante :

    root@minitel>>> iptables-save > /etc/iptables.rules
    

Notre configuration client

  • On se place dans le dossier easy-rsa de OpenVpn :

    root@minitel>>> cd /etc/openvpn/easy-rsa/
    
  • On génère les clé et certificat du client :

    root@minitel>>> ./build-key nom_client
    
  • On récupère un template de configuration client :

    root@minitel>>> cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
    
  • On copie ensuite les fichiers ca.crt, nom_client.crt, nom_client.key sur le PC du client. On oublie pas de prendre le template de la configuration client

  • Dans la configuration client qui est maintenant sur le PC du client, on change l’adresse du serveur par son ip, et on modifie les chemins d’accès aux fichiers ca.crt, nom_client.crt, nom_client.key. Si vous ne souhaitez pas avoir plusieurs fichiers il est tout à fait possible de tout mettre dans le fichier de configuration client. Dans ce cas la, il suffit de copier le contenue des fichiers ci-dessus nommé à la fin du fichier de configuration entre respectivement les balises contenu ca.crt contenu nom_client.crt contenu nom_client.key

  • On ajoute ensuite cette ligne à la fin du fichier : redirect-gateway def1.

Si vous êtes sous Windows, renommez ce fichier en config.ovpn et placé le dans le dossier /config de OpenVpn

Source

debian-facile.org