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 !

Vus : 1932
Publié par Sheldon.fr : 17