VPN Anonyme avec le Client OpenVPN Merlin

Un Tunnel VPN, quel intérêt?
Le client VPN Asuswrt-merlin
Configuration pour le service VyprVPN de golden frog
Paramétrage additionnel du DNS (Configuration avancée optionnelle 

Un VPN anonyme, quel intérêt?

Que vous soyez préoccupé par la protection de votre privée ou par la sécurisation de vos connexions internet, alors forcément vous avez au moins entendu parler de la notion de de tunnel vpn ou de vpn sécurisé anonyme.  Un réseau vpn sécurisé anonyme c’est tout d’abord, comme l’indique son acronyme anglais, un réseau privé virtuel, c’est à dire un réseau privé qui bien que routé à travers internet relie 2 sites distants comme s’ils étaient connectés localement. Ainsi lorsque vous vous connectez au vpn, vous établissez sur internet entre vous et le serveur distant une sorte de tunnel dans lequel va passer le trafic de ce réseau local. Le vpn est dit sécurisé quand le tunnel encrypte le trafic qui y transite, rendant le flux qui s’écoule entre vous et le serveur vpn distant impossible à lire ou à journaliser, même pour votre FAI. Quand au caractère anonyme, il provient du fait que pour sortir de ce réseau privé, et donc “surfer sur internet”, vous allez emprunter une passerelle située au delà du serveur vpn distant, ce qui au bout du compte vous donne une nouvelle adresse IP externe différente de celle allouée par votre FAI. Pour être encore plus précis, la passerelle respecte son caractère d’anonymat si d’une part elle ne relaie pas votre vraie adresse IP dans les headers HTTP (telle  que par exemple  REMOTE_ADDR) et si la politique du fournisseur du service vpn est de ne garder aucun log de vos connexions.

En passant par les services d’un réseau vpn sécurisé anonyme d’un prestataire ne gardant pas de logs de connexions, d’une part on protège le caractère privé de ses connexions, votre FAI est dans l’impossibilité de tracer ou de connaitre le contenu de vos connexions, et d’autre part à l’autre bout de la connexion on se rend “IP-anonyme” auprès de tout site internet auquel on accède. J’utilise le néologisme IP-Anonyme, pour bien montrer qu’un site ne pourra par remonter vers vous connaissant l’adresse IP de votre connexion VPN mais qu’il pourra vous identifier par d’autres moyens si vous n’avez pas été prudent, par exemple par l’intermédiaire d’un cookie que le site vous aura laissé lors d’une précédente connexion non sécurisée (c’est pourquoi je conseille vivement d’opter pour la politique de nettoyage des cookies à la fermeture du browser).

Maintenant la question traditionnelle qui suit  cette présentation est de savoir pourquoi devrait-on rendre anonyme et sécuriser sa connexion quand on a rien à se reprocher? Alors à moi de renverser la question en demandant pourquoi la loi oblige un FAI à conserver les connexions de tous les citoyens si la loi n’a rien à reprocher aux citoyens? Et d’ailleurs, qui est certain que l’exploitation des journaux de connexions n’évoluera pas du jour au lendemain vers une exploitation autre que celle de la justice. Vous êtes vous posé la question de savoir où sont stockés ces relévés, qui y a accès, est-ce que leur exploitation est encadrée, restreinte et surveillée? Qui peut être certain que ces logs ne seront pas gardés ad vitam, puis vendus (ou volées) pour devenir des sources de big data? Que direz vous si dans dix ans demandant un prêt à votre banque celle-ci vous rétorque que vous surfez un peu trop sur les sites de poker en ligne? Que savez vous de l’avenir pour être sûr que nous allons vers une société qui respecte de plus en plus les libertés individuelles; je crains fort que nous soyons engagé dans un chemin contraire. Alors oui, même si vous n’êtes pas un adepte du P2P qui veut échapper à HADOPI, même si vous n’êtes pas un cyber-hacktiviste  désirant ne pas laisser de trace de ses actions, même si vous n’avez rien à vous reprocher dans vos activités sur internet, anonymiser ses connexions c’est investir dans une police d’assurance pour un futur plus serein. Et pour finir même si vous avez foi en l’avenir du respect des libertés, utiliser une connexion vpn anonyme c’est aussi se préserver contre un certains nombre d’attaques qui peuvent être lancées lorsque au hasard d’une connexion sur un site louche ou compromis, votre IP tombe entre les mains de mauvaises personnes; en utilisant l’IP de votre service VPN les pirates ne pourront pas remonter jusqu’à vous. Et rappelez vous que vous n’êtes pas le seul à surfer à la maison, non je ne parle pas de votre conjoint ni de vos enfants mais de tous les appareils connectés qui établissent bon nombre de connexions (mise à jour, envois de stats,…), sans que vous en soyez totalement conscient. Passer par une adresse ip anonyme c’est se prémunir contre un certain nombre d’attaques si le site auquel il se connecte est compromis ou investi par une personne malveillante.
 

Le client OpenVpn Merlin

L’intérêt d’installer un client vpn sur son routeur c’est bien entendu pouvoir partager un seul et unique compte vpn entre tous les appareils connectés de son réseau. C’est aussi se passer de l’installation de clients vpn sur ses machines, ce qui en plus d’être invasif et fastidieux, ralenti bien souvent la machine et n’est pas toujours possible (vous avez une option vpn sur votre cube canal+ ?).

Qui dit client vpn sur routeur asus, dit Asuswrt-merlin, alors si ce n’est pas encore fait, vous installez merlin, vous avez tout à gagner à le faire, vous trouverez plus de détail dans cet article. Il est important de savoir que le client open vpn Merlin est basé sur le client vpn du firmware Tomato; ainsi si votre prestataire vpn ne prévoit aucun support pour les routeurs asus merlin vous avez la possibilité de vous rabattre sur une éventuelle section dédiée aux routeurs Tomato qui constitue une excellente base de départ pour mettre au point sa configuration.

Dans cet article, j’ignorerai les modes PPTP/L2TP présent dans le firmware Merlin pour ne décrire que le seul client openvpn; en terme de sécurité la comparaison est sans pitié ;-), quand on a à disposition un client open vpn, on utilise ce protocole.

Accès au paramétrage et utilisation
Pour accéder à la page de configuration du client openvpn, depuis l’interface d’administration web du routeur on clique dans l’entrée “VPN” du menu de gauche puis sur l’onglet “OpenVpn Client”.  On arrive alors une page organisée en trois sections :

  • Client control permet le démarrage ou l’arrêt des clients
  • Basic Settings contient les paramètres généraux du compte et de la connexions vpn
  • Advanced Settings contient des paramètres plus spécifiques à OpenVPN
 Section Client control 
Section des paramètre de contrôle du client VPN
Section des paramètre de contrôle du client VPN

Select Client Instance : Le paramètre offre la possibilité de configurer 2 clients. Les fonctionnalités de paramétrages sont identiques sur les 2 clients, l’intérêt ici est de pouvoir basculer manuellement de l’un vers l’autre client au besoin. Par exemple vous pouvez configurer un client avec une adresse en France et un autre avec une adresse aux USA et ensuite commuter de l’un vers l’autre quand le site ou la ressource que vous tentez d’accéder est interdite d’accès pour l’un des deux pays. Pour switcher d’un client à l’autre, mieux vaut auparavant stopper le client actif pour ensuite démarrer le second car techniquement il est possible d’activer les deux clients en même temps (surtout ne me demandez pas ce qu’on obtient quand les 2 clients activés!!).

Service state : Ce bouton affiche l’état du client sélectionné tout faisant office d’interrupteur ON/OFF du service.

Import de fichier opvn  : Avec cette fonctionnalité vous pouvez initialiser le client à partir d’un fichier opvn. Généralement les prestataires de services vpn mettent à disposition ces fichiers pour configurer les clients openvpn plus classiques, windows, mac, android,…   mais ces fichiers peuvent être édités et adaptés à un autre type de client.

 Section Basic Settings 
Paramètres de la connexion vpn
Paramètres de la connexion vpn

Start with WAN : Option de démarrage automatique du client au boot du routeur.

Type d’interface : TUN, TAP. L’option TUN sert à créer le tunnel de données sécurisées au niveau de la couche IP alors que l’option TAP le crée au niveau de la couche ethernet et par conséquent autorise le réseau vpn à véhiculer d’autres protocoles que IP (Net-Bios par exemple).  Pour du surf anonyme via un vpn sélectionnez le mode TUN.

Protocole : UDP,TCP. L’option de choix est UDP car c’est elle qui donne la connexion la plus rapide. Basculez en TCP seulement si vous observez des soucis de connexion.

Serveur adress an port : Ces 2 champs doivent contenir l’adresse et le port d’un serveur vpn parmi ceux que votre fournisseur vpn met à votre disposition. Le champ adresse peut recevoir une adresse ip ou une adresse host. Nous verrons plus loin que l’utilisation d’une adresse host peut être problématique lorsque le service vpn tombe.

Pare-feu : Automatic, External only, Custom. Ce paramètre agit sur les règles d’ouverture du firewall (iptables) au démarrage du client :

  • Automatic, ajoute les règles pour ouvrir les connexions entrantes et sortantes sur le port vpn.
  • External only, ajoute les règles pour ouvrir seulement les connexions sortantes.
  • Custom, ne crée aucune règle. Automatic, est l’option à choisir pour autoriser toutes les activités internet; si vous ne pratiquez que du surf vous pouvez être plus restrictif en optant pour External only.

Authentication …. Authentification HMAC : Cette série de champs paramètrent la couche de sécurité et la méthode d’authentification. Bien que les configurations soient spécifiques à chaque fournisseur de service VPN, elles sont en bien souvent indépendante du client VPN, ce qui veut dire que si votre prestataire ne donne aucun support pour votre routeur Merlin, vous pouvez répliquer ici le paramétrage indiqué pour tout autre client, windows ou linux; etc.

Create NAT on tunnel : Pour le surf anonyme on sélectionnera OUI. L’option NON servant plus spécialement quand on veut “bridger” 2 réseaux à travers un vpn.

Advanced settings

vpn-advancedsettings

Intervalle d’interrogation Fréquence de redémarrage du client. En définissant une valeur autre que 0, le système va planifier une tâche périodique chargée de relancer le client à intervalle régulier.

Redirect Internet traffic : Indique au serveur vpn s’il faut ou non relayer le trafic qui est à destination d’internet. Dans une utilisation du vpn en mode “surf anonyme”, la passerelle distante sert toujours de porte de sortie au trafic internet, le choix retenu n’a donc que peu d’importance. Vous pouvez laisser l’option sur NON.

Accept DNS Configuration : Avec ce paramètre vous configurez la politique d’interrogation des DNS qui va être instaurée dès le démarrage du client.

  • Strict : Interroge en priorité les serveurs DNS du réseau vpn, avec en cas d’échec un repli sur les serveurs DNS du routeur (par défaut ceux configurés dans les champs DNS1 et 2 de la page “réseau étendu”).
  • Exclusive : Interroge seulement les serveurs DNS du réseau vpn
  • Relaxed : Sélectionne parmi les serveurs DNS du réseau vpn ou du routeur celui qui répond le plus rapidement
  • Disabled : Aucun paramétrage de la politique de DNS n’est effectué

Il est très important de prendre conscience qu’en matière d’anonymat les serveurs DNS sont des brèches qui rompent la confidentialité. Vous avez beau surfer anonymement en passant par un vpn, la confidentialité de votre surf tombe dès l’instant où vous laissez les serveurs DNS de votre FAI résoudre les les adresses IP des sites auxquels vous vous connectez. Puisque l’objet du vpn anonyme est d’assurer la confidentialité du surf, la seule option à retenir ici est Exclusive. Avec l’option Exclusive, la résolution des adresses est uniquement assurée par le serveur DNS du réseau VPN, ce qui préserve l’anonymat. Mais attention, les prestataires de VPN anonymes n’incluent pas tous un serveur DNS anonyme dans leurs solutions, assurez-vous de la présence de ce service avant vous engager sur une offre.

Chiffrage : et Compression : sont à configurer conformément aux indications données par votre prestataire.

TLS Renegotiation Time : Le canal de données est sécurisé par un jeu de certificat négocié au démarrage du service. En indiquant ici une durée en secondes vous pouvez paramétrer une renégociation périodique. 0 désactive la renégociation périodique, -1 utilise la valeur par défaut (3600).

Connection retry : La durée d’attente en secondes entre 2 tentatives de connexions.

Verify Server Certificate : Active le contrôle de validité des certificats. Cette option qui nécessite la présence d’un fichier contenant les certificats révoqués n’a pas réellement de sens pour une connexion à un service vpn privé, laissez-là désactivée.

Configuration personnalisée : Cette zone de saisie autorise l’ajout libre de paramètres openvpn additionnels. En pratique la configuration requise par votre prestataire peut comporter des paramètres que vous ne retrouvez pas dans l’interface Web, c’est ici que vous les rajoutez.
 

Configuration pour le service VyprVPN de golden frog

Golden Frog propose un service vpn anonymisé sans log, le respect de l’anonymat est d’autant plus assuré que c’est une société de droit Suisse, pays dans lequel le respect de la vie privée a encore un sens pour le legislateur. A ce propos sachez que les firmes de droit US y compris les fournisseurs vpn sont tenues dans le cadre du patriot act de transmettre sur requête de l’administration américaine les identités et les logs de connexions de leurs utilisateurs, quoi qu’elles en disent elles alimentent forcément des logs. Coté qualité de service Golden frog n’est pas non plus en reste, ses serveurs vpn assurent une bonne stabilité de connexion ce qui est un point essentiel pour une utilisation sur routeur. A l’heure ou je rédige ses lignes, golden frog offre un trial gratuit d’une durée de 3 jours, avant de vous engager vous avez donc le temps de vous assurer que votre routeur est bien compatible avec le service. Vous trouverez plus de détails sur son offre vyprvpn à cette adresse http://www.goldenfrog.com/vyprvpn.

Pour paramétrer votre accès au service VyprVPN de golden frog vous pouvez saisir la configuration suivante :

Type d’interfaceTUN
ProtocoleUDP
Server AddressL’adresse host de l’un des serveurs VyprVPN
Server Port1194
Pare-feuAutomatic
AuthentificationTLS
Certificate Authorityvoir ci-dessous
Username/Password AuthenticationOui
UsernameVotre identifiant golden frog
PasswordVotre mot de passe golden frog
Authentification par nom d’utilisateur / mot de passeOui
Authentification HMACdisabled
Create NAT on tunnelOui
Intervalle d’interrogation0
Redirect Internet trafficNon
Accept DNS ConfigurationStrict
ChiffrageDefault
CompressionAdaptative
TLS Renegotiation Time0
Connection Retry30
Verify Server CertificateNon
Configuration personnaliséetls-client
verb 5
keepalive 5 30

 
Saisie du Certificate Authority :

L’authentification TLS requiert la clé de certificat de type Authority fournit par golden frog. L’ajout de la clé est simple, il faut tout d’abord copier dans le presse papier le certificat (cliquez ici pour l’afficher), puis le coller dans la zone Certificate Autority de l’écran Keys and Certificates. On accède à cet écran en cliquant sur le lien Content modification of Keys & Certificates présent à droite du paramètre Authentification.
Attention de vous assurer de bien inclure les lignes BEGIN CERTIFICATE et END CERTIFCATE ainsi que garder le formatage de la clé en séquence de 64 caractères de long.

Ecran Keys and Certificates
Ecran Keys and Certificates

 
Paramétrage additionnel du DNS (Configuration avancée optionnelle)
Quelque fois alors même que le client openvpn fonctionne, le serveur vpn ne répond plus, dans ce cas le client retente une connexion au serveur vpn. Dans notre configuration comme l’adresse du serveur est un nom de machine (ex : de1.vpn.goldenfrog.com), pour que le client retente la connexion il doit au préalable obtenir l’adresse IP du nom de machine auprès d’un serveur DNS. Or je vous rappelle que pour des raisons de confidentialité nous avons configuré la politique DNS en mode Strict, ce qui signifie que la résolution des noms est exclusivement effectuée par le serveur DNS de golden frog, serveur localisé sur le réseau vpn. Pour résumer la situation, le client qui veut se reconnecter au réseau vpn a besoin du réseau vpn pour obtenir l’adresse IP de connexion; effectivement vous l’avez compris, ça coince :-). Vous me direz, qu’à cela ne tienne, utilisons dans le paramétrage du client l’adresse IP au lieu du nom de machine et le tour est joué. Certes, c’est une solution, mais si c’est là prudence ou la continuité de service qui vous guide alors vous devez vous interroger sur la pérennité d’une adresse IP, si golden frog met à disposition des noms de hosts c’est qu’il est peu probable que leurs adresses ip restent immuables dans le temps. Alors à vous de voir…

Pour résoudre notre problème nous allons faire intervenir le service dnsmasq. DnsMasq est un serveur DNS, c’est en fait le serveur DNS (et DHCP) local au routeur. Quand une requête de résolution DNS est demandée c’est vers ce serveur qu’elle aboutie avant que lui même ne soustraite la requête en la réexpédiant vers un serveur DNS externe, dans notre cas le serveur DNS golden frog du réseau vpn. Cette stratégie de réexpédition est le fruit de notre paramétrage, en ayant choisi de configurer la politique DNS en mode Strict nous n’avons rien fait d’autre qu’indirectement paramétrer Dnsmasq pour qu’il se comporte ainsi.

Ce que nous allons faire pour nous sortir de notre situation de blocage c’est indiquer à Dnsmasq que pour la résolution des noms du domaine vpn.goldenfrog.com, il doit utiliser le DNS habituel (celui du F.A.I) et non plus le dns du réseau VPN. Dnsmasq peut être configuré par ligne de commande ou directement par son fichier de paramètres /tmp/etc/dsnmasq.conf, ainsi exécuter la commande dnsmasq --monoption=unparametre revient à ajouter la ligne monoption=unparametre dans ce fichier. Vous pouvez consulter l’ensemble des commandes sur la page man dédiée à dnsmasq.

Parmi les commandes dnsmasq c’est –server qui va nous aider à débloquer la situation. En effet, grâce à cette commande on peut spécifier l’adresse d’un serveur DNS vers lequel dnsmasq doit s’adresser pour résoudre les adresses concernant un nom de domaine en particuler. Ainsi --server=/undomaine.com/1.2.3.4 indique à dnsmasq qu’il doit s’adresser au serveur dns 1.2.3.4 dès lors qu’il s’agit de résoudre les adresses qui se terminent par undomaine.com et uniquement celles-ci. La solution à notre problème est donc simple, on paramètre dnsmasq pour que les résolutions d’adresses concernant le domaine vpn.goldenfrog.com soient relayées au serveur de notre F.A.I, ou par exemple à un des serveurs DNS public de google (8.8.8.8). Ainsi en rajoutant la commande server=/vpn.goldenfrog.com/8.8.8.8 à la fin du fichier dsnmasq.conf, la résolution des adresses des hosts vpn de golden frog se fera sur un dns externe au réseau vpn, et donc restera possible même quand ce réseau vpn est tombé. En passant par un dns qui ne respecte pas l’anonymat nous avons certes fait une petite entorse à notre politique Strict, mais elle n’est pas très sensible puisque elle se restreint à la résolution des seules adresses du domaine goldenfrog.com.

Vous pouvez ajouter manuellement cette ligne dans le fichier /tmp/etc/dsnmasq.conf, l’ennui c’est qu’elle sera écrasée dès le prochain arrêt relance du routeur. Là encore, la release Merlin vient à notre rescousse en nous offrant la possibilité de compléter automatiquement certains paramétrages au démarrage de tel ou tel service(plus d’info ici). Pour cela il faut d’abord avoir initialisée sur votre routeur la partition JFFS. Si cette partition existe, vous pouvez alors créer un fichier /jffs/configs/dnsmasq.conf.add contenant cette simple commande. A chaque redémarrage, les commandes contenues dans le fichier /jffs/configs/dnsmasq.conf.add seront automatiquement ajoutées à la fin du fichier tmp/etc/dsnmasq.conf.

admin@RT-AC68U:/# cat /jffs/configs/dnsmasq.conf.add
server=/vpn.goldenfrog.com/8.8.8.8

admin@RT-AC68U:/#

Je sais qu’après tout ces efforts, une mauvaise nouvelle serait mal venue, pourtant cette configuration de dnsmasq ne se suffit pas en elle même. Ici le dernier (promis) problème vient de la configuration de la table de routage. Au démarrage du client vpn, la table de routage est configurée pour que tout le trafic à destination d’internet soit envoyé sur le réseau vpn. Et puisqu’il n’existe plus aucune route externe qui ne passe par le réseau vpn, le service dnsmasq est dans l’incapacité de dialoguer avec le serveur dns externe (8.8.8.8) que nous venons de paramétrer. Qu’à cela ne tienne, nous ouvrons spécialement une nouvelle route dédiée à ce serveur dns. La commande est la suivante route add -host 8.8.8.8 netmask 0.0.0.0 gw 192.168.1.1 dev eth0 (192.168.1.1 étant l’adresse locale de votre box internet)

admin@RT-AC68U:/# route add -host 8.8.8.8 netmask 0.0.0.0 gw 192.168.1.1 dev eth0
admin@RT-AC68U:/#

Pour les mêmes raisons qu’évoquées précédemment, nous ajoutons cette ligne de commande dans le shell script /jffs/script/wan-start qui est exécuté par le système au démarrage juste après qu’il ait configuré l’interface wan.

admin@RT-AC68U:/tmp/home/root# cd /jffs/scripts/
admin@RT-AC68U:/jffs/scripts# cat 1>wan-start
#!/bin/sh
route add -host 8.8.8.8 netmask 0.0.0.0 gw 192.168.1.1 dev eth0
^C
admin@RT-AC68U:/jffs/scripts# chmod 700 wan-start
admin@RT-AC68U:/jffs/scripts# ll
-rwx—— 1 admin root 80 Dec 6 22:47 wan-start*
admin@RT-AC68U:/jffs/scripts#

Voilà, votre configuration devrait maintenant être opérationnelle. Alors bon surf anonyme, mais rappelez vous qu’un vpn et une ip anonyme ne font pas pas tout, l’anonymat et la confidentialité dépendent également des autres traces que vous laissez derrière vous (cookies, authentification à des sites, url de tracking dans les mails, chat, informations laissées sur des réseaux sociaux, etc).