Connexion via un client OpenVpn

Dans ce qui suit, l'objectif est de connecter une machine à internet de façon sécurisée via un serveur VPN "public"

1 - Préparation

1.1 - Installer openvpn

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

1.2 - Modifier l'adresse du serveur DNS

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 :

Une solution consiste à installer un résolveur de nom de domaines tel que unbound . Après avoir installé le résolveur, vérifier

$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 127.0.0.1
$ 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

1.3 - Relever les caractéristiques de la connexion hors VPN

Avant la mise en place du VPN, noter pour référence l'adresse ip de la machine et la vitesse de connexion

1.3.1 Adresse ip de la machine

Relever l'adresse ip internet de la machine.

$ dig +short myip.opendns.com @resolver1.opendns.com
82.67.140.211

ou bien

$ curl http://myip.dnsomatic.com/
82.67.140.211
$ links2 -g https://duckduckgo.com/?q=my+ip&t=ffab&ia=answer

1.3.2 Vitesse de connexion

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

1.4 - Récupérer les certificats du serveur VPN

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 :

bookvpn

$ 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
$ unzip *.zip && rm *.zip
username:vpnbook
password:3XN34ps

2- Connexion en ligne de commande

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.

$ hostname -I
192.168.43.188 10.9.0.110
$ 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

3 - Vérifications

3.1 - En ligne de commande

3.1.1 Accès internet

$ 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

3.1.2 - Adresse ip externe

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

3.1.3 Serveur de nom de domaine et la résolution

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

3.1.4 Débit de la connexion

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

3.2 - En interface graphique

3.2.1 Utilisation du site ipleak

Le site iplead https://ipleak.net permet de vérifier :

On voit que l'adresse de la machine sur les réseaux internes est détectée.

Fuites VPN

3.2.2 Utilisation du site whoher.net

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.

Fuites VPN 2

Annexe 1 - Gestionnaire graphique de connexion OAST

OAST est un gestionnaire graphique de connexion qui utilise le protocole openvpn.

1 - Installation

oast-2.4-linux-x86-64.sh
$ 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.

    # mkdir /opt/oast
# sh ./oast-2.4-linux-x86-64.sh

Utiliser les choix par défaut, sauf :

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

2 - Lancement

$ cd ~/OAST
# sh oast.sh

soit en interface graphique, avec le lanceur OAST.

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/

OAST settings

OAST

Lorsque la connexion est établie, le message

> Tue Apr 18 23:12:07 2017 Initialization Sequence Completed

s'affiche.