Mis à jour le vendredi 26 septembre 2014
  • 2 heures
  • Moyenne
Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Introduction du cours

Bonjour et bienvenue dans ce cours.

Vous en avez assez des restrictions géographiques de certains sites web ou vous souhaitez tout simplement être un peu plus anonyme lorsque vous surfez sur des sites sensibles ou de manière générale quand vous utilisez Internet ?

Vous êtes vous déjà dit que vous aimeriez bien que votre FAI ne sache pas tout ce que vous faites sur Internet ?

Ce cours est fait pour vous ! Vous allez devenir des vrais pirates ! :pirate: (des gentils hein). C'est parti !

Introduction

Avant d'entrer dans le vif du sujet, un peu d'explications ne fera de mal à personne !

Alors à quoi sert un VPN ? C'est quoi cette bestiole dont tu nous parles depuis 5 minutes ?

Pour faire simple, c'est un "tunnel". Je m'explique.

Habituellement lorsque vous surfez sur internet, votre connexion fonctionne de cette manière : vous partez d'abord de la carte réseau de l'ordinateur et passez par le modem routeur pour accéder à Internet.

Avec un VPN, une "couche" supplémentaire est ajouté. Entre votre modem et Internet, se trouve le VPN.

Cette couche va prendre le relais et c'est par elle que transitera d'abord bles données lorsque vous surfez sur Internet. Du coup si un méchant pirate vous espionne, il verra l'adresse IP de votre VPN et non votre IP réelle (vous avez dit anonymat ? )

Et donc à part cacher mon IP ça ne sert à rien d'autre ?

Eh bien si. Je vous propose deux autres cas d'utilisation pour illustrer mes propos :

Une personne qui travaille à distance pour son entreprise par exemple. Il a besoin d'accéder à des informations (certainement sensibles) comme si il était au bureau. Problème, on ne peut pas laisser n'importe qui accéder à ces données (vous laissez la porte ouverte en partant de chez
vous ?).

Le VPN apparaît comme la solution. Ainsi on restreint l'accès à ces fameuses données à un réseau interne ou à une IP sur laquelle serait configuré le VPN.

Ainsi l'employé utilisera le VPN pour obtenir une adresse IP et un accès autorisé aux données.

Voici un autre exemple concret : je possède plusieurs serveurs dédiés à titre personnel mais aussi pour mon travail. Quoi de plus insupportable qu'un vilain (quel monde de brute il y en a partout) qui rentrerait sur votre machine et mettrait le bazar dessus ou l'utiliserait même pour lui alors que c'est vous qui payez !

Eh bien je me suis fait un serveur VPN sur une machine à part et j'ai restreint l'accès à tous les autres à l'IP de celui-ci. Ainsi il est impossible d'accéder en SSH à l'ensemble de mes serveurs sans être préalablement connecté à ce VPN.

En résumé un VPN peut servir à :

  • Sécuriser l'accès à des données

  • Outrepasser des restrictions géographiques

  • Être (un peu plus) anonyme sur InternetDites

Dites, n'y a t-il pas déjà des fournisseurs d'accès VPN ? Pourquoi s'embêter à passer deux heures à configurer tout en ligne de commande à la sauce gros geek ?

Oui c'est vrai, mais même s'ils proposent des prix attractifs, ces fournisseurs ont leurs inconvénients :

  1. On est parfois limité/bridé dans l'utilisation de la bande passante et du VPN en lui-même

  2. On ne sait pas ce que la société fait de nos données personnelles

Au contraire, posséder son propre VPN possède plusieurs avantages :

  1. Vous contrôlez vos données personnelles

  2. Aucun bridage ni aucune restriction et une meilleur bande passante/vitesse

  3. Vous pouvez configurer le VPN comme bon vous semble

C'est cool ! C'est parti on y va ??!!

Du calme . Avant d'entrer dans le vif du sujet, quelques prérequis.

  1. Disposer d'un serveur dédié sous linux ou d'un rapsberry pi connecté à Internet par exemple (bien que niveau vitesse, vous risquez de le sentir passer)

  2. Connaître les bases des lignes de commandes sous LINUX, si ce n'est pas le cas, il y a un cours ici.

Let's GO ! :zorro:

Installation - Configuration d'OPEN VPN

Je pars du principe que vous êtes connectés en mode console et en tant que root. Si ce n'est pas le cas, assurez-vous que l'utilisateur à les droits adéquates et utilisez "sudo" avant chacune des commandes que je vais donner.

1- Installation

Nous sommes donc connectés et nous pouvons commencer par lancer l'installation d'Open VPN :

aptitude install openvpn

Laissez l'installation se dérouler en répondant Y pour Yes quand on vous le demande.Une fois cela effectué, nous allons préparer les dossiers et fichiers nécessaire à la configuration d'Open VPN:

mkdir /etc/openvpn/easy-rsa/
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
chown -R $USER /etc/openvpn/easy-rsa/

Nous créons donc un dossier ou nous plaçons les fichiers exemples d'Open VPN sur lesquels nous allons nous baser pour notre configuration.Nous faisons ensuite en sorte d'avoir les droits sur les fichiers.

2- Configuration

Maintenant que tout est prêt, passons à l'étape de configuration.Rendez vous tout en bas du fichier vars qui contient vos informations puis éditez-les :

nano /etc/openvpn/easy-rsa/vars

Nous allons maintenant générer les certificats et les clés pour le cryptage des données. Tapez les commandes suivantes dans l'ordre !

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

Le ./clean-all n'est pas obligatoire, à utiliser si vous refaites la configuration d'un Open VPN déjà installé.

Plaçons maintenant les fichiers générés dans le dossier d'Open VPN :

cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/

Maintenant, créons un dossier jail pour la sécurité et le dossier clientconf où sera situé la configuration de chaque personne ayant un accès au VPN :

mkdir /etc/openvpn/jail
mkdir /etc/openvpn/clientconf

Maintenant, nous allons créer le fichier de configuration d'Open VPN côté serveur :

touch /etc/openvpn/server.conf
nano /etc/openvpn/server.conf

Je vous fournis ici un modèle de configuration, il vaut ce qu'il vaut, vous en trouverez d'autres sur le site d'open vpn ici.

#############################
    #       Configuration       #
    #           VPN             #
    #############################
     
    # port et mode
    mode server
    proto tcp
    port 443
    dev tun
     
    # certificats + cles
    ca ca.crt
    cert server.crt
    key server.key
    dh dh1024.pem
    tls-auth ta.key 0
    cipher AES-256-CBC
     
    # Config reseau
    server 10.8.0.0 255.255.255.0
    push "redirect-gateway def1 bypass-dhcp"
    push "dhcp-option DNS 4.4.4.4"
    push "dhcp-option DNS 8.8.8.8"
    keepalive 10 120
     
    # Config securite
    user nobody
    group nogroup
    chroot /etc/openvpn/jail
    persist-key
    persist-tun
    comp-lzo
     
    # Config des logs
    verb 3
    mute 20
    status openvpn-status.log
    log-append /var/log/openvpn.log

Tout cela mérite quelques explications. En regardant de plus près le fichier, vous vous rendez compte qu'on utilise le protocole TCP sur le port 443.

Port 443 ? Ce n'est pas utilisé autre chose  ça ?

Si et c'est justement le but. Le port 443 est celui utilisé pour la navigation HTTPS. Alors pourquoi ce choix du port 443 ? Tout simplement parce qu'il permet de contourner plus facilement d'éventuelles
restrictions de port comme cela se fait dans des réseaux "bien configurés".Pour la suite, vous constatez qu'on fait référence aux clés et certificats générés, qu'on configure le réseau, l'aspect sécurité et aussi les logs.

Comme je l'ai déjà dit, vous êtes libres de modifier ce squelette comme il vous plaira.

Nous avons fini de configurer Open VPN, nous allons donc effectuer un redémarrage de celui-ci pour la prise en compte de tous les paramètres :

/etc/init.d/openvpn restart

3- Routage

Nous allons maintenant configurer notre serveur pour que les utilisateurs  puissent se connecter et obtenir une adresse IP local à la machine.

Tapez pour commencer :

sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Cela va activer l'ip forwarding.Si vous ne rendez pas cette règle persistante, au prochain redémarrage du serveur, plus personne ne pourra se connecter.Pour éviter de tout recommencer au prochain redémarrage, ouvrez le fichier /etc/sysctl.conf

nano /etc/sysctl.conf

Trouvez ce bloc et décommentez le comme ceci :

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Enregistrez et fermez le fichier.

Configurons maintenant le NAT.

Tapez la commande suivante :

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

Et sauvegardons cela de façon permanente :

sh -c "iptables-save > /etc/iptables.rules"

Rendez-vous ensuite dans le fichier d'interface et ajouter la ligne suivante à la fin du fichier :

nano /etc/network/interfaces
pre-up iptables-restore <. /etc/iptables.rules

Nous avons maintenant terminé le gros morceau de ce tutoriel, à savoir l'installation et la configuration du VPN.Redémarrons une nouvelle fois Open VPN pour la prise en compte des paramètres :

/etc/init.d/openvpn restart

Création d'un accès VPN

Maintenant que nous avons finis la (fastidieuse) configuration d'Open VPN, nous allons créer un accès utilisateur pour ce dernier.

Retournons dans le dossier où se trouvent les clés et certificats :

cd /etc/openvpn/easy-rsa

Maintenant, nous allons générer les clés et certificats pour l'utilisateur :

./build-key toto

Bien évidemment vous aurez remplacé toto par ce que vous voulez.

Remplissez les informations que l'on vous demande et ne remplissez pas le champ a challenge password.

Tapez Y pour YES quand on vous demande Sign the certificate ? Enfin, validez la création des fichiers en tapant à nouveau Y.

En vous rendant dans le dossier /keys et en tapant ls (pour lister les fichiers), vous vous apercevrez que 3 fichiers ont été créés : toto.crt, toto.key et toto.csr . Ce sont les clés et certificats particuliers à l'utilisateur et qui serviront à l'identification de ce dernier.

Nous allons placer ces fichiers dans un répertoire dédié à l'utilisateur :

mkdir /etc/openvpn/clientconf/toto/
cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/toto.crt keys/toto.key /etc/openvpn/clientconf/toto/

Maintenant, on se place dans le bon dossier et on créer le fichier de configuration de l'utilisateur.

cd /etc/openvpn/clientconf/toto/
touch client.conf

Là aussi je vous fournis un squelette, libre à vous de le modifier comme vous le voudrez, vous trouverez les exemples sur la même page que pourla configuration open vpn.

# Config Client
client
dev tun
proto tcp-client
remote 1.2.3.4 443
resolv-retry infinite
cipher AES-256-CBC
# Certificats + Cles
ca ca.crt
cert toto.crt
key toto.key
tls-auth ta.key 1
# Config Securite
nobind
persist-key
persist-tun
comp-lzo
verb 3

Comme vous vous en doutez, il faudra remplacer 1.2.3.4 par l'ip de votre serveur, sinon vous allez avoir des surprises .

N'oubliez pas aussi de changer toto par ce que vous aurez défini au tout début de cette étape.

Enregistrez et fermez le fichier.

Maintenant, nous allons faire une copie du fichier créé avec l'extension .ovpn. Certains logiciels utilisent ce format de fichier pour leur configuration.

cp client.conf client.ovpn

Nous avons à présent terminé la création de l'accès. Il ne vous reste plus qu'à récupérer tous les fichiers du dossier /etc/openvpn/clientconf/toto/ sur votre machine.

Vous pouvez le faire avec filezilla par exemple.Après quoi nous allons pouvoir procéder à la configuration de votre accès sur votre machine.

Utiliser le VPN

Dans cette dernière partie je vais vous montrer comment configurer votre accès VPN sur votre machine.

Je vais vous montrer comment faire avec deux logiciels. L'un gratuit est celui fourni par Open VPN lui-même (Open Vpn GUI) l'autre payant mais d'une facilité d'utilisation supérieure et avec bien plus d'options.

Configurer son accès avec VISCOSITY

Ce logiciel coûte la modique somme de 9$ une seule fois (support et maj inclus). Il est compatible PC et MAC.Vous pouvez au pire l'installer et le tester 30 jours avant de vous décider.

Je passe l'étape de l'installation du logiciel, je pense que vous devriez y arriver :D.

Une fois installé, lancez le logiciel. Il se place dans la barre des tâches.

Faites un clic-droit dessus puis cliquez sur Préférences. Cliquez ensuite sur le + disposé en bas à gauche de la fenêtre puis importer connexion -> à partir du fichier.

Positionnez-vous dans le dossier où se trouvent tous vos fichiers récupérés de votre serveur puis sélectionnez le fichier .ovpn.

Après quelques instants, la connexion est importée. Nous allons maintenant juste modifier deux points de configuration avant de se connecter.

Cliquez sur éditer. Dans le premier onglet Général, vous pouvez modifier le nom que vous souhaitez donner à la connexion. Ensuite dans l'onglet Réseau, cliquez sur envoyer tout le trafic dans le tunnel VPN.Cliquez sur sauvegarder pour enregistrer et fermer.

Voilà votre configuration est terminée, en cliquant droit sur l'icône de la barre des tâches, il ne vous reste plus qu'à cliquer sur Connecter ... et patienter.V

ous aurez alors un petit message vous confirmons que vous êtes connecté au serveur VPN avec une ip locale à la machine.

Configurer son accès avec Open VPN GUI

Pour commencer, téléchargez le logiciel ici : http://openvpn.se/download.html . Le logiciel est compatible PC et Ubuntu.Une fois installé, rendez-vous tout d'abord dans le répertoire  d'installation d'Open VPN GUI puis dans le dossier config.

Copiez y vos  fichiers de configuration puis relancez le logiciel.

Une fois le logiciel démarré, faites un clic droit sur l'icône disponible dans la barre des tâches puis choisissez votre connexion dans la liste.  Cliquez enfin sur connect et patientez.Comme pour Viscosity, vous aurez un message de confirmation de connexion.

Vérifier que tout a fonctionné

Pour vérifier que vous utilisez bien le réseau du serveur VPN, rendez vous par exemple sur http://www.whatismyip.com/ et comparer votre ip avant et après connexion. Chez moi par exemple cela donne ceci :

Avant :

Après :

Comme vous pouvez le constater, j'ai bien l'ip du serveur sur lequel je me suis connecté.

Voilà nous sommes arrivés au bout de ce cours.

Si quelque chose ne fonctionne pas, recommencez les étapes une par une en prenant votre temps.

Je reste disponible pour toute question si vous en avez besoin.

A la prochaine :magicien:.

Exemple de certificat de réussite
Exemple de certificat de réussite