POC : un VPN facile à utiliser !

Fotolia_79265714_Subscription_Monthly_M-600x400

Puisqu’il est dans l’air du temps de protéger sa vie privée et sa connexion internet,
Je me suis demandé comment, j’allais pouvoir faire : simple, efficace et avec un waf au top du top (sinon chez moi, aucune chance de mise en prod !).

Le VPN c’est bien beau, mais il faut se taper la conf, les explications (pour le coté waf 😉 ), les outils sur différents supports et périphériques …
Mais ça reste en quand même une bonne méthode, à savoir faire transiter tout son trafic jusqu’à un point de sortie, qui idéalement serait dans un pays ayant encore un peu de respect pour la neutralité du Net, la liberté d’expression, la vie privée : La Corée du Nord !!!

(nan j’deconne)

Je donc fais rapidement le tour des solutions de VPN qui existent, mais à chaque fois, je me pose la question : « est il sur ? », y a t’il de l’écoute, des logs, où est situé le siège de la boite derrière ça, c’est NSA approuved ? …
Bref trop de questions …

Pis en cherchant, je suis tomber sur le très bon article de Korben, et ce qu’il présente est pas mal du tout, pourquoi ne pas s’en inspirer ?

État des lieux :

J’ai sous la main :

  • un VPS en Suède
  • une connexion chez l’agrume
  • un hyperviseur
  • un switch de niveau 2
  • un AP manageable

Tant que je suis à la réflexion, j’établis un plan ip simple à visualiser  (du moins pour moi) :

– 192.168.0.0/24   ⇒ mes adresses privé de base @home
– 172.27.224.0/21 ⇒ l’adressage du VPN pour la partie NAT
– 10.10.0.0/24      ⇒ adressage privé passant uniquement par le VPN

Ainsi, de tête : 192.x.x.x = normal, 172.x.x.x = ip derrière le vpn, 10.x.x.x ip privé passant par le vpn
Je vais pouvoir attribuer ces ips en fonction des besoins, machines, utilisateurs …

Commençons par le VPS :

J’ai un modèle très basique, avec un core, 512 Mo de ram (256 suffisent), 10 Go de disque, une bande passante en 100/100 Mbs
Le tout sous une Debian Jessie, avec OpenVPN comme serveur VPN (libre à vous d’en choisir un autre en fonction de vos exigences), et parce que je suis fainéant, j’ai également rajouté l’interface OpenVPNAS

apt install openvpn
wget http://swupdate.openvpn.org/as/openvpn-as-2.0.17-Debian7.amd_64.deb
dpkg -i openvpn-as-2.0.17-Debian7.amd_64.deb
passwd openvpn

Hop, c’est plié !

Vous pouvez faire un essai en vous connectant à l’interface administration avec le user « openvpn » et le mot de passe créé précédemment :

Capture d’écran_2015-07-28_15-23-58
Je pourrais en rester là, et utiliser « bêtement » OpenVPN comme ça, mais avec la version gratuite d’AS, on est limité à seulement deux connexions en simultanées, et il n’existe pas de client OpenVPN pour certains de mes périphériques (Rpi, TV, domotique … ) l’idée est donc de passer par une simple passerelle réseau qui elle sera un client du VPN !

La passerelle :

Korben, part sur un équipement physique, chose que je n’ai pas, je vais donc faire ma passerelle sur une VM, et ça tombe bien, j’ai déjà un Pfsense qui tourne !
Pour la virtualisation, j’ai donc une VM de type KVM, avec le stricte minimum : 2 core, 512 Mo de ram, 8 Go de disque et deux interfaces réseau Virtio.

Capture d’écran_2015-07-28_14-59-10

La version choisie est Pfsense en 2.2.4 64bit, je passe sur l’installation qui est de base, je dédie l’interface « net0 » au WAN et « net1 » au LAN.
Je compte utiliser ma partie Lan comme une sorte de DMZ (derrière le VPN), et la partie WAN sera sur mon réseau LAN.

J’inverse donc les règle de base de Pfsense : à savoir autoriser l’administration de la GUI depuis le WAN, et toujours sur cette interface j’active l’ICMP et j’autorise le port 161 (le snmp pour ma supervision).

Capture d’écran_2015-07-28_15-05-37

Attention, les règles Pfsense sont propres à vos besoins et votre adressage, et n’étant pas un pro du réseau (encore moins de PF), je vous invite à pas forcément recopier bêtement ce que je fais 🙂

Connectons le PF à notre VPS OpenVPN :

Korben l’explique très bien dans son article, en gros il suffit de rajouter les certificats de notre utilisateur OpenVPN (présent dans la conf « autologin »), puis de configurer le client, croiser les doigts, prier vite fait, et ça devrait fonctionner, sinon les logs du VPS (/var/log/openvpnas.log) sont assez verbeux pour dépanner.


le CA

 

le CRT et la KEY

le CRT et la KEY

la conf du client OpenVPN

la conf du client OpenVPN

Si ça fonctionne bien, dans le menu « Status/ Openvpn » vous devriez voir votre connexion sur le VPS :

Capture d’écran_2015-07-28_15-47-31

Maintenant que votre VPN fonctionne, il faut spécifier à l’interface LAN de notre PF, d’utiliser la passerelle du VPN sur le VPS (ça va tout le monde me suis ?)

Donc toujours dans la partie « Rules », sur l’onglet LAN, on modifie la gateway de l’interface LAN :

Capture d’écran_2015-07-28_15-51-57

et ça donne ça :
Capture d’écran_2015-07-28_15-51-36

Isoler le réseau :

Pour assurer une étanchéité complète et un bon cloisonnement des réseaux, quoi de mieux qu’un VLAN ?
J’ai donc créé deux VLAN :

  • le vlan « standard » pour mon usage @home, qui passera par ma box en sortie
  • le vlan « vpn » qui est interdit de sortie via la box, et donc le trafic transite obligatoirement via le Pfsense et donc sort via le VPN sur internet.

Pour commencer, j’ai mis la patte « wan » du PF dans le vlan « std » et la patte « lan » est sur le vlan « vpn ».

La suite se passe sur la conf de votre switch, sur mon Dlink ça donne ça :

Capture d’écran_2015-07-28_16-02-18

et sur mon hyperviseur je configure mon vlan « vpn », le vmbr99 bridger sur l’interface vlan99, a qui j’ai déclaré, je vous le donne en mille : le vlan 99 !

Capture d’écran_2015-07-28_16-05-22

Puis les VMs qui en ont besoin :

Capture d’écran_2015-07-28_16-07-16

les tests :

Il est temps de tester maintenant 🙂

ça tombe bien, j’ai une VM connecté derrière le PF,
je lui configure une ip (en statique pour le moment):

#ifconfig
eth1      Link encap:Ethernet  HWaddr 02:b9:00:e0:2f:a6  
          inet addr:10.10.0.2  Bcast:10.10.0.255  Mask:255.255.255.0
          inet6 addr: fe80::b9:ff:fee0:2fa6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:22642282 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12166508 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:28863790491 (26.8 GiB)  TX bytes:2215289439 (2.0 GiB)

# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=57.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=57.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=57.9 ms

ça me semble bon, vous pouvez faire un petit essai : w3m http://showip.net
et vérifier si c’est bien l’ip, le fai et la position géographique de votre VPN :

Capture d’écran_2015-07-28_16-13-48

Allons un petit peu plus loin :

 

On y est presque, ça fonctionne, mais c’est encore peu utilisable !
Et pour un bon waf, il me faut du wifi !
Je commence donc à rajouter un serveur DHCP sur ce vlan, puisqu’il n’y en a pas (forcément, on est sur un réseau isolé !).

Direction Pfsense :

Dans Service /DHCP Server / pour la partie LAN (surtout pas la wan, hein 😉 )

Capture d’écran_2015-07-28_16-19-08

Je me connecte sur l’interface de mon AP (une Cisco MR18), et je rajoute un SSID dédié à mon VLAN 99
Où il est important de configurer le mode « bridge » et taguer le vlan 99 :

Capture d’écran_2015-07-28_16-24-25Capture d’écran_2015-07-28_16-24-00

On vérifie le bon fonctionnement avec les premiers clients :

Capture d’écran_2015-07-28_16-25-34
ça me semble bon, et c’est validé par les traces routes sur Pfsense, les baux DHCP …

 

Voici un dernier schéma « simplifié » de mon installation, avec mes deux vlans, et mes équipements :

réseau@home

 

J’ai maintenant deux réseaux WIFI à ma disposition l’un qui passe par ma box, l’autre par le VPN, et en fonction des besoins je peux passer de l’un à l’autre de façon quasi instantané et sans avoir à modifier ou bidouiller quoique ce soit. Et c’est pareil pour les machines en filaire, elles ont maintenant deux configurations (IP/VLAN) en fonction des besoins.
Et ça marche pour n’importe quel équipement: téléphone, console de jeux, TV, PC …

Voici donc comment se termine cette présentation 😉
Je n’avais rien à cacher, mais j’avais envie d’avoir le choix !
L’installation n’est pas forcément simple, mais à l’usage il est très facile d’utiliser ce VPN !

11 Responses to “POC : un VPN facile à utiliser !”

  1. Red dit :

    Salut,

    Tu as pris ton VPS chez quel hébergeur ?

    Merci 🙂

  2. Genma dit :

    Merci pour ce tuto. Facile à utiliser mais pas à mettre en place car le tuto est long (mais riche en capture d’écran, une bonne chose).

    Sinon attention sur l’usage du terme WAF, même avec le smiley. Cf mon article http://genma.free.fr/?Le-WAF-Wife-Acceptance-Factor qui explique mon point de vue sur l’usage de ce terme.

    • Sheldon dit :

      Je viens de lire ton article, je comprends ton point de vu !
      Et effectivement, le mot « WAF » est un terme un peu péjoratif, toujours est il que ma Femme à un droit de veto à la maison,
      pour les nouvelles technos et j’écoute systématiquement son avis.
      Au final elle voie souvent juste, un truc trop compliquer, trop moche (j’ai un avis très subjectif là dessus ^^) ou pas à sa place, ne convient pas forcément à nos besoins de tous les jours.

      Il faut donc faire mieux.
      C’est en ça que ma moitié et moi utilisons le mot « waf », mais je veux bien en trouver un autre 😉

      • Genma dit :

        Je vois que ça part d’un bon sentiment et que tu veux bien faire un effort 😉 C’est super. Je n’ai pas d’autre mot en tête, mais le WAF est réducteur comme tu l’as compris. Chez moi, ma compagne aussi donne son droit de véto car elle s’y connait plus que moi et sait si ce sera utile ou un gadget futile qui finira dans un tiroir.

        Je ne voulais pas faire le moraliste et tu as compris mon but, je te remercie de ta réponse.
        Et encore une fois, super tuto.

  3. RegisH dit :

    Salut,

    sinon il y a http://www.edis.at/de/home/ qui propose un choix large de serveurs qui pour avoir essayé une solution en Islande sont vraiment pas mal.

    Maintenant j’ai un Vpn sur une Dédibox, espérons qu’Illiade ne soit pas trop bavard…

    • Sheldon dit :

      J’ai regardé Edis qui propose effectivement de nombreuses « destinations », mais le siège se trouve en Autriche qui a ses propres lois, tu ne profites donc pas de la législation du pays qui t’héberge :/
      C’est dommage car ils ont de très bons tarifs !

  4. […] a vu comment monter un VPN, maintenant, comment peut on l’améliorer d’un point de vu performance […]

  5. shester dit :

    Moi j’utilise les serveur de chez vpnfacile, il on beaucoup de serveur réparti dans + de 30pays

    https://vpnfacile.net/nos-serveurs-vpn.html

    • Sheldon dit :

      Oui mais le problème avec ce genre de service c’est que tu as aucune idée de savoir ce qu’ils font avec tes données !
      ta connexion est protégé d’un regard extérieur, mais pas pour eux puisqu’ils te fournissent le VPN, ils ont accès à tes certificats, tout ton traffic, ils peuvent donc savoir quels sites tu visites, ce que tu envois/télécharge …

      Et sur le site je ne vois aucune mention du pays où est implanté le « siège » de l’entreprise, car c’est en fonction de ce pays que tu es protégé ou non par les lois.
      Si par exemple la boite est en France ou aux USA, alors ce service de VPN ne protège en rien ta vie privé :/

      Pour être tranquille, il faut choisir soit même le pays de l’hébergeur, et monter soit même le VPN !

  6. […] a vu comment monter un VPN, maintenant, comment peut on l’améliorer d’un point de vu performance […]

Laisser un commentaire

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