Kimsufi – Montez votre serveur VPN en 10 minutes

Il y a quelque temps, OVH a sorti des serveurs dédiés low-cost : Kimsufi. Le succès a été (très) rapide et les offres étant bien inférieur à la demande, les ventes ont été arrêtées durant plusieurs semaines avec de revoir le business plan. Le prix serveur Kimsufi a été revu et des frais d’installation ont débarqué. Aujourd’hui, les premiers prix démarrent à 9,60€/mois avec 12€ de frais d’installation.

Après avoir transformé votre Kimsufi en Seedbox, débrideur de connexion et serveur rSync… Je vous propose aujourd’hui installer OpenVPN.

[edit du 28/12/2016] Ce tuto initialement pour Debian 6 a été modifié pour Debian 8

Qu’est-ce qu’un VPN ?

Un VPN (Virtual Private Network) est un Réseau Privé Virtuel. Il permet de créer une connexion sécurisée entre votre ordinateur ou tout appareil connecté (le client) à un autre ordinateur (le serveur) via Internet et à travers un tunnel. Ce tunnel sécurisé est crypté/chiffré. Il est impossible (sauf NSA, et encore) de savoir quelles informations transitent entre les machines. (note : les pros du réseau m’excuseront de cette vulgarisation).

Pourquoi utiliser un VPN ?

Les raisons sont nombreuses et propres à chacun… mais voici quelques utilisations que vous pourrez en faire :

  • Surfer anonymement, même pour votre Founisseur d’Accès à Internet
  • Sécuriser votre connexion sur un WiFi public
  • Accéder tous les replays disponibles même s’ils sont restreints à un pays (fonction de la localisation du serveur)
  • Contourner la censure d’un gouvernement
  • Contourner les bridages de FAI pour certains sites (ex : YouTube)
  • etc.

Installation de OpenVPN

Convaincu ! Passons maintenant à la partie installation… Vous allez voir, c’est rapide. Si vous avez l’habitude de taper des commandes sous Linux, cela sera réglé en 5 minutes. Tout d’abord, connectez-vous sur votre Kimsufi via ssh.

Puis installer OpenVPN à l’aide de la commande

apt-get install openvpn

Une fois l’installation terminée, on va se déplacer dans le répertoire d’installation

cd /etc/openvpn/

Ensuite un créé un dossier de travail

mkdir easy-rsa

et on copie l’exemple fourni comme base :

cp /usr/share/easy-rsa/* easy-rsa/

On a perdu personne ? On continue…

chown -R $USER /etc/openvpn/easy-rsa/

 

Configuration OpenVPN Server

Nous allons maintenant passer à la configuration d’OpenVPN et modifier un petit fichier.

vim /etc/openvpn/easy-rsa/vars

et modifier les lignes suivantes (ligne 64) :

export KEY_COUNTRY="FR"
 export KEY_PROVINCE="IDF"
 export KEY_CITY="Paris"
 export KEY_ORG="Old Sch00l"
 export KEY_EMAIL="toto@old-sch00l.org"
 export KEY_EMAIL=mail@host.domain
 export KEY_NAME=FX
 export KEY_OU=FX
 export PKCS11_MODULE_PATH=changeme
 export PKCS11_PIN=1337

Je vous laisse remplacer les champs avec vos propres données. Attention à ne pas les laisser de ligne à vide. Hop, passons à la génération des clés et certificats :

cd /etc/openvpn/easy-rsa/
 source vars
 ./clean-all
 ./build-dh
 ./pkitool --initca
 ./pkitool --server server
 openvpn --genkey --secret keys/cachem.key

On patiente… ne vous inquiétez pas, c’est très rapide (remplacez cachem.key par nom que vous souhaitez) . Maintenant, on va copier les clés et certificats à la racine d’OpenVpn

cd /etc/openvpn/easy-rsa/keys
cp ca.crt dh2048.pem server.crt server.key cachem.key ../../

Remplacez cachem.key par votre nom de fichier

Ensuite, on va créer un répertoire dans lequel le processus OpenVPN sera chroot et un autre pour les configurations client :

mkdir /etc/openvpn/jail
mkdir /etc/openvpn/confuser

Enfin on crée le fichier de configuration :

cd /etc/openvpn
 vim server.conf

et on copie ceci dedans :

# Server TCP/5678
 mode server
 proto tcp
 port 5678
 dev tun
 # Certificates and keys
 ca ca.crt
 cert server.crt
 key server.key
 dh dh2048.pem
 tls-auth cachem.key 0
 cipher AES-256-CBC
 # Network
 server 10.10.10.0 255.255.255.0
 push "redirect-gateway def1 bypass-dhcp"
 push "dhcp-option DNS 208.67.222.222"
 push "dhcp-option DNS 208.67.220.220"
 keepalive 10 120
 # Security
 user nobody
 group nogroup
 chroot /etc/openvpn/jail
 persist-key
 persist-tun
 comp-lzo
 # Log
 verb 3
 mute 20
 status openvpn-status.log
 log-append /var/log/openvpn/openvpn.log

Comme depuis le début, vous pouvez changer le nom cachem.key en restant cohérent avec le reste du tuto.

Maintenant, testons notre configuration :

openvpn server.conf

Regardez si vous avez la ligne suivante : Initialization Sequence Completed

initialization-sequence-completed

Appuyez sur ctrl+c pour quitter.

Maintenant, nous pouvons lancer le OpenVPN avec la commande :

/etc/init.d/openvpn start

Vous devriez avoir cette ligne : [ ok ] Starting virtual private network daemon: server.

Maintenant, il faut permettre le routage

vim /etc/sysctl.conf

et on dé-commente (#) la ligne 28 : net.ipv4.ip_forward=1 et on recharge sysctl :

sysctl -p

et on ajoute cette dernière commande pour configurer le NAT(age)

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

 

Pour que le routage soit persistant, on installe ce package

apt-get install iptables-persistent

Validez 2 fois… et vous tapez cette commande :

iptables-save > /etc/iptables.rules

Voilà, c’est presque terminé… pour la partie serveur. Il ne nous reste plus qu’à créer un client (machine pouvant se connecter à ce serveur VPN).

Configuration OpenVPN Client

cd /etc/openvpn/easy-rsa
 source vars
 ./build-key-pass cachemac

cachemac est le nom de mon client… Vous pouvez choisir le vôtre. 😉

build
On va maintenant créer un répertoire contenant les générés (cachemac.crt, cachemac.csr et cachemac.key)

mkdir /etc/openvpn/confuser/cachemac

et on déplace les 3 fichiers présents dans keys dans le nouveau répertoire juste créer + ca.crt.

cp keys/cachem*.* keys/ca.crt /etc/openvpn/confuser/cachemac

On se déplace dans le répertoire cachemac (ou le nom que vous avez choisi)

cd /etc/openvpn/confuser/cachemac

et maintenant, nous allons créer le fichier de configuration du client.

vim client.conf

Et on y met les paramètres suivants :

# User
 client
 dev tun
 proto tcp-client
 remote ip.du.serveur 5678
 resolv-retry infinite
 cipher AES-256-CBC
 # Certificates and keys
 ca ca.crt
 cert cachemac.crt
 key cachemac.key
 tls-auth cachem.key 1
 # Security
 nobind
 persist-key
 persist-tun
 comp-lzo
 verb 3

Pensez à changer ip.du.serveur et de mettre l’adresse IP publique de votre Kimsufi, comme cachemac 😉

cp client.conf client.ovpn

Le fichier .conf est pour mac et .ovpn pour Windows.

chmod +r cachem*.key

Pour résoudre un petit problème de droit si vous n’utilisez pas le même identifiant en ftp.

Maintenant, il ne vous reste plus (entre guillemet) qu’à récupérer le contenu du répertoire /etc/openvpn/confuser/cachemac sur votre ordinateur.

Quelle application utiliser ?

Que ce soit sur Linux, Mac ou Windows… Je ne peux que vous conseiller d’aller faire un tour à cette adresse. Sur smartphone et tablette, cherchez OpenVPN sur votre market/strore.

Pour les questions, n’hésitez pas à utiliser les commentaires.

  1. Bonjour, j’ai un soucis, openVPN (Windows) me dis lors de la tentative de connection « Cannot load certificate file cachemac.crt: error:0906D06C:PEM routines:PEM_read_bio:no start line[…] » J’ai cru comprendre qu’il était donc anormal que le fichier « cachemac.crt » soit de 0 octet.

    Comment est-ce que je peux corriger ce problème ?

    Merci d’avance

    P.S. Super tuto, premier que je vois aussi bien réaliser depuis longtemps !

  2. j’ai un kimsuffi et je veux mettre openvpn pour lever le bridage imposer par free en 3G, ça va fonctionner ?

  3. J’ai un problème quand j’essaye de me connecter au VPN il me dit :
    cachem.key « no such file or directory »

    J’ai pourtant suivi la procédure pas à pas .

  4. Pour commencer merci pour ce super tuto! J’ai effectivement pu monter mon server vpn en moins de 10 minutes.
    J’ai cependant un problème avec la résolution des DNS. Si je ping une adresse IP ça fonctionne mais si je ping un domaine, il est introuvable.
    Une idée ?

      1. Trouvé! J’avais modifié la configuration de mes DNS (/etc/resolv.conf) sur mon Mac, pour pouvoir utiliser dnsmasq. J’ai à la place ajouté un « resolver » et tout fonctionne maintenant.

        Aussi entre temps, j’ai découvert https://github.com/kylemanna/docker-openvpn... qui m’a permis de créer un VPN encore plus rapidement grâce à docker.

    1. Sur Windows 8/8.1 le message d’erreur suivant apparait : « TEST ROUTES: 0/0 succeeded len=1 ret=0 a=0 u/d=down » suivi de « Route: Waiting for TUN/TAP interface to come up… ».

      Le problème est connu de la communauté.
      Normalement en ajoutant « route-delay » à ton fichier de configuration client (.ovpn), ça devrait fonctionner.

  5. Si la connexion VPN s’effectue bien mais que le trafic internet de votre client ne transite pas par votre Kimsufi (aucune connectivité OU « monip.org » retourne l’IP de votre FAI), c’est surement que vos règles iptables sont trop strictes.

    Il faut donc ajouter les règles suivantes :

    /sbin/iptables -I FORWARD -i tun0 -j ACCEPT
    /sbin/iptables -I FORWARD -o tun0 -j ACCEPT
    /sbin/iptables -I OUTPUT -o tun0 -j ACCEPT
    /sbin/iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
    /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    /sbin/iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

    Et tout devrait fonctionner !

    1. Pour activer ces règles automatiquement au démarrage d’openvpn, il faut rajouter ces 2 lignes dans le fichier de configuration /etc/openvpn/server.conf :

      script-security 2
      up /etc/openvpn/up.sh

      Ensuite, créer le fichier /etc/openvpn/up.sh :
      #!/bin/bash
      /sbin/iptables -I FORWARD -i tun0 -j ACCEPT
      /sbin/iptables -I FORWARD -o tun0 -j ACCEPT
      /sbin/iptables -I OUTPUT -o tun0 -j ACCEPT
      /sbin/iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
      /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
      /sbin/iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE

      chmod +x /etc/openvpn/up.sh

  6. Merci du partage ! Fait nous encore apprendre des choses par ton expérience car je débute dans le monde du linux, marre de windows 🙂

  7. Ton tuto est superbe je l’utilise actuellement. Internet et tout fonctionne nickel, mon problème est que je n’arrive pas à me connecter sur mon client web transmission avec le port 9091 ou encore en ssh. Que faut-il faire pour remédier à cela? Merci!

  8. Bonjour, après avoir suivi ce tuto, lorsque je lance le client openvpn depuis Windows 8.1, openvpn me demande un mot de passe et aucun ne passe. Est-il possible de supprimer cette demande de mot de passe et que la connexion se fasse directement ?
    Merci

    1. A priori, le mot de passe à saisir est celui que tu as saisi à l’étape « Enter PEM passphrase » lors de la configuration client d’OpenVPN.

    2. Bonjour même problème, j’entre pourtant bien le mots de passe que j’ai mis à l’étape PEM

  9. que dire, merci pour ce tuto mais malgré que je l’ai suivi au pied de la lettre et après avoir copier coller dans config de openvpn, aucun possiblité de se co…

  10. Merci Pour Votre tuto
    C’est magnifique, j’ai tout fait et je me suis connecte
    Selement que j’ai pas de connection internet

  11. bonjour
    je viens vers vous car j ai essaye de suivre votre tuto pour l installation et la configuration de openvpn, mais je bute a la ligne 2.
    quand je tape :

    cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/* easy-rsa/

    ca me dit « impossible d’evaluer

    merci

    1. Pour info :
      Dans les nouvelles version de debian, les fichiers d’exemple de « easy-rsa » ne sont plus dans /usr/share/doc/openvpn/examples/easy-rsa/2.0/ mais dans /usr/share/easy-rsa/

  12. bonjour, il ne se passe rien lors de la partie : Regardez si vous avez la ligne suivante : Initialization Sequence Completed
    j’ai continué tout de meme, openvpn est OK mais lorsque je lance depuis mon pc en important la configuration j’ai ca comme erreur :

    Options error: –ca fails with ‘ca.crt’: No such file or directory (errno=2)
    Options error: –cert fails with ‘cachemac.crt’: No such file or directory (errno=2)
    Sat Apr 18 14:39:08 2020 WARNING: cannot stat file ‘cachemac.key’: No such file or directory (errno=2)
    Options error: –key fails with ‘cachemac.key’
    Sat Apr 18 14:39:08 2020 WARNING: cannot stat file ‘cachem.key’: No such file or directory (errno=2)
    Options error: –tls-auth fails with ‘cachem.key’: No such file or directory (errno=2)
    Options error: Please correct these errors.
    Use –help for more information.

    tout au debut du tuto j’ai un doute sur cette partie :

    export PKCS11_MODULE_PATH=changeme
    export PKCS11_PIN=1337

    j’ai essayé avec mes noms perso pour generer une clef mais aussi avec celui du tuto pour rien rater mais ca marche toujours pas.
    Merci de votre aide.

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.