Dans ce qui suit, l'objectif est de connecter une machine à internet de façon sécurisée via un serveur VPN "public"
Installer openvpn, qui fournit à la fois le client et le serveur vpn. Le client sera utilisé pour se connecter au serveur vpn externe, le serveur vpn ne sera pas utilisé.
# apt install openvpn
L'utilisation de l'adresse du serveur DNS du fournisseur d'accès à internet, comme c'est le cas classiquement lorsque l'on est relié à internet par une "box" peut poser deux problèmes :
un problème de confidentialité (comme avec tout serveur DNS qui retient les logs de connexion)
un problème de fonctionnement (le fournisseur d'accès peut vouloir interdire l'accès à ses serveurs DNS en dehors d'un accès direct par la box)
Une solution consiste à installer un résolveur de nom de domaines tel que unbound . Après avoir installé le résolveur, vérifier
la prise en compte de l'adresse du serveur :
$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 127.0.0.1
et sa fonctionnalité :
$ drill debian.org |grep -E '"Query time"|SERVER'
;; Query time: 1274 msec
;; SERVER: 127.0.0.1
$ drill debian.org |grep -E 'Query time|SERVER'
;; Query time: 0 msec
;; SERVER: 127.0.0.1
Avant la mise en place du VPN, noter pour référence l'adresse ip de la machine et la vitesse de connexion
Relever l'adresse ip internet de la machine.
En ligne de commande, par exemple, en interrogeant un service du serveur opendns :
$ dig +short myip.opendns.com @resolver1.opendns.com
82.67.140.211
ou bien
$ curl http://myip.dnsomatic.com/
82.67.140.211
Ou à l'aide d'un navigateur, par exemple, en interrogeant, duckduckgo avec les mots clés my ip :
$ links2 -g https://duckduckgo.com/?q=my+ip&t=ffab&ia=answer
Mesurer la vitesse de connexion
$ speedtest
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Free (82.67.140.211)...
Selecting best server based on latency...
Hosted by iperf.fr (Rennes) [100.23 km]: 79.28 ms
Testing download speed........................................
Download: 8.69 Mbits/s
Testing upload speed..................................................
Upload: 0.69 Mbits/s
Dans ce qui suit, les connexions vpn seront réalisées avec le fournisseur gratuit et sans inscription préalable VpnBook, selon le protocole openvpn :
Depuis la page d'accueilhttp://www.vpnbook.com/ , cliquer sur l'onglet OpenVPN
Les serveurs sont situés en Europe (Roumanie), aux US, au Canada et en Allemagne. Télécharger les certificats des serveurs auxquels on prévoit de se connecter :
$ mkdir vpnbook_certificates && cd vpnbook_certificates
$ wget http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-Euro1.zip
$ wget http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-Euro2.zip
$ wget http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-US1.zip
$ wget http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-US2.zip
$ wget http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-CA1.zip
$ wget http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-DE1.zip
Désarchiver les certificats et supprimer les fichiers d'origine.zip qui ne seront plus utilisés
$ unzip *.zip && rm *.zip
Relever, au bas de la page du site internet, les noms d'utilisateur et le mot de passe, ceux-ci sont susceptibles d'évoluer régulièrement. Dans l'exemple ci-dessus :
username:vpnbook
password:3XN34ps
Depuis le répertoire vpnbook_certificates, lancer openvpn en sélectionnant un certificat. Le nom d'utilisateur et le mot de passe seront demandés :
# openvpn --config vpnbook-euro1-tcp443.ovpn
Wed Apr 26 08:47:03 2017 OpenVPN 2.4.0 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jan 14 2017
Wed Apr 26 08:47:03 2017 library versions: OpenSSL 1.0.1t 3 May 2016, LZO 2.08
Enter Auth Username: *******
Enter Auth Password: *******
Wed Apr 26 08:47:21 2017 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Wed Apr 26 08:47:21 2017 NOTE: --fast-io is disabled since we are not using UDP
....
Wed Apr 26 08:47:22 2017 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
....
Wed Apr 26 08:47:47 2017 Initialization Sequence Completed
.....
Lorsque le message
Initialization Sequence Completed
est affiché, la connexion VPN est active.
Un réseau interne supplémentaire a été implanté, l'adresse de la machine sur ce réseau est 10.9.0.110
$ hostname -I
192.168.43.188 10.9.0.110
La connexion s'effectue par l'interface tun1 :
$ ip route
0.0.0.0/1 via 10.9.0.109 dev tun1
default via 192.168.43.1 dev wlan0
10.9.0.1 via 10.9.0.109 dev tun1
10.9.0.109 dev tun1 proto kernel scope link src 10.9.0.110
128.0.0.0/1 via 10.9.0.109 dev tun1
176.126.237.217 via 192.168.43.1 dev wlan0
192.168.43.0/24 dev wlan0 proto kernel scope link src 192.168.43.188
$ 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=46 time=181 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=46 time=1428 ms
La machine a une nouvelle adresse ip sur internet : 176.126.237.217
$ dig +short myip.opendns.com @resolver1.opendns.com
176.126.237.217
$ curl http://myip.dnsomatic.com/
176.126.237.217
On peut vérifier sur internet que cette adresse est en Roumanie : https://ipinfo.io/176.126.237.217
La résolution de nom de domaine utilise toujours le serveur interne :
$ drill google.com |grep -E 'Query time|SERVER'
;; Query time: 633 msec
;; SERVER: 127.0.0.1
$ drill google.com |grep -E 'Query time|SERVER'
;; Query time: 0 msec
;; SERVER: 127.0.0.1
On constate dans le cas présent, que le débit de téléchargement est réduit d'un facteur environ 4 et que le débit de téléversement est multiplié d'un facteur environ 5!
$ speedtest
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Alistar Security (176.126.237.217)...
Selecting best server based on latency...
Hosted by Orange Romania (Cluj-Napoca) [138.25 km]: 450.477 ms
Testing download speed........................................
Download: 2.17 Mbits/s
Testing upload speed..................................................
Upload: 4.37 Mbits/s
Le site iplead https://ipleak.net permet de vérifier :
La localisation de l'adresse internet
L'absence de fuites webrtc et dns
La localisation de l'adresse torrent
On voit que l'adresse de la machine sur les réseaux internes est détectée.
Le sitehttps://whoher.net fournit des informations sur les "fuites" annexes (language, date, etc..) et les risques potentiels. Aller dans l'onglet version intégrale et effectuer les tests interactifs, afficher les résultats.
OAST est un gestionnaire graphique de connexion qui utilise le protocole openvpn.
Télécharger sur le site : https://sourceforge.net/p/oast/wiki/Home/ la version 32 / 64 bits :
oast-2.4-linux-x86-64.sh
Pour installer oast dans le répertoire de l'utilisateur
$ sh ./oast-2.4-linux-x86-64.sh
Accepter les options par défaut qui sont proposées lors de l'installation. Un répertoire ~/OAST est créé, ainsi que deux lanceurs, l'un pour le lancement de l'application, l'autre pour sa désinstallation.
Pour installer oast pour tous les utilisateurs :
# mkdir /opt/oast
# sh ./oast-2.4-linux-x86-64.sh
Utiliser les choix par défaut, sauf :
remplacer le chemin d'installation par /opt/oast
Deux lanceurs sont créés, l'un pour le lancement de l'application, l'autre pour la désinstallation.
Si les lanceurs n'apparaissent pas, vérifier / modifier dans les fichiers desktop /usr/share/applications/OAST* les catégories :
Categories=Network
Lancer l'application, soit directement en terminal :
$ cd ~/OAST
# sh oast.sh
soit en interface graphique, avec le lanceur OAST.
Dans l'interface graphique, sélectionner Options > Settings >
Entrer le fichier de configuration du vpn, par exemple vpnbook-euro1-udp53.ovpn, situé dans le répertoire : /home/user/vpnbookuser/vpnbook-euro1-udp53.ovpn
Modifier l'adresse IP URL de détection pour http:/myip.dnsomatic.com/
Cliquer sur Connexion, entrer le nom d'utilisateur et le mot de passe (vpnbook et 3XN34ps dans l'exemple précédent).
Lorsque la connexion est établie, le message
> Tue Apr 18 23:12:07 2017 Initialization Sequence Completed
s'affiche.