Configuration serveur & client d’Openvpn
Bonjour à tous, pour mon premier tutoriel je voulais vous expliquer en détail comment installer openvpn, d’après le script d’installation, sous Debian 9 et 8, bien que pas testé.
Pour ce tutoriel, j’expliquerai:
- Comment installer openvpn depuis Debian 9 (stable)
- Comment configurer la partie client d’Openvpn et fixer le “DNS Leak”
- En bonus: Quelques add-ons pour firefox afin de garder votre anonymat
Je précise que pour effectuer ce tutoriel, j’ai utilisé un VPS de chez OVH et Debian 9 (stable).
I- Installation depuis une “fresh install”
Connectez-vous à votre serveur en root via SSH. Attention, votre connexion doit absolument être sécurisé!
Ouvrez avec votre éditeur de texte favoris (nano pour ma part) votre sources.list:
nano /etc/apt/sources.list
Ensuite ajoutez-y la ligne suivante:
deb http://www.deb-multimedia.org/ stable main non-free
Puis faites une mise à jour de ce type:
apt-get update && apt-get upgrade
Une fois fait, vous aurez besoin d’un paquet; indispensable pour générer des certificats et clés: deb-multimedia-keyring
apt-get deb-multimedia-keyring
Cette phase devrait vous retourner un message de prévention, acceptez le paquets quand même. Il ne vous manque plus que le paquets ufw; paquets servant à gérer un pare-feu:
apt-get install ufw
Une fois installé, je vous conseille d’ajouter les ports à autoriser:
ufw allow 22
Ou le port que vous utilisez pour votre connexion SSH.
ufw allow 80
ufw allow 443
Attention, à ce stade il ne faut pas vous être trompé! Sinon vous serez déconnecté de votre serveur et il faudra tout recommencer… TOUT!
ufw enable
Bien, une fois activé, votre pare-feu est prêt, il ne nous reste pus qu’à installer openvpn.
Nous-y voici, à ce stade je vous conseille de revenir dans votre répertoire /root
cd ~
Ensuite voici le script
wget https://git.io/vpn -O openvpn-installation-script.sh
Il ne nous reste plus qu’à l’exécuter avec bash:
bash openvpn-installation-script.sh
Bien, à ce stade le script devrait vous demander l’ip de votre serveur, au cas où vous voudriez utiliser une ip failover (En gros c’est plusieurs ip reliée à une seule machine, c’est avantageux car ça coûte moins cher que d’acheter un autre vps…) il est possible de rentrer une de ces ips (Qu’il faudra avoir configuré auparavant, très bon tuto ici) sinon utilisez l’adresse ip de base fourni avec votre serveur.
Ensuite il vous propose le protocole, vous avez le choix entre UDP et TCP, j’ai personnellement choisi UDP, je n’ai pas testé pour TCP, je vous laisse décider.
Maintenant, le port, je vous conseille, si vous n’avez pas de serveur HTTPs d’utiliser le port 443, sinon vous pouvez laisser le port par défaut.
Voici un choix important, les DNS, il est impératif de bien le choisir. Pour ma part, j’ai choisi OpenDNS, si vous en choisissez un autre je ne pourrais pas vous aider à corriger les problèmes de DNSLeak, de plus certains des DNS présents sont susceptible de vous traquer.
Et finalement, le nom du client, soyez libre, laissez votre imagination prendre forme, nan sérieusement vous allez mettre une truc du genre votreNom-debian-vpn, je le sais très bien!
Bien le script devrait vous demander d’appuyer sur Entrée pour continuer, dans le cas où vous avez utiliser une ip failover, le script vous demandera l’adresse de la machine, il faudra lui répondre avec l’adresse fournie avec votre serveur (adresse par défaut).
Je vous invite, si vous le souhaitez, à relancer le script pour ajouter/supprimer des utilisateurs ou désinstaller openvpn, à vous de voir.
Notez que le script a aussi changé le fichier “/etc/rc.local”.
Vous pouvez aussi relancer, stopper et lancer votre serveur avec les commandes que voici:
systemctl <start/stop/restart> openvpn@server
II- Configuration client
Vous-y voici, la configuration de notre VPN côté client. Il vous faut pour l’instant télécharger (DE MANIÈRE SÉCURISÉE), le fichier généré par le script, vous vous rappelez de lui, je vous avez demandé de faire preuve d’inspiration en le nommant, n’est-ce pas?
scp root@<IP de votre serveur>:~/<nom du fichier>.ovpn .
Voilà, vous auriez aussi pu utiliser une connexion de type sftp mais bon…
Le reste des opérations va se passer en root; installez openvpn puis copiez le fichier précédemment téléchargé dans le répertoire d’openvpn:
apt-get install openvpn
cp <nom du fichier>.ovpn /etc/openvpn/client.conf
Une fois fait, il ne nous reste plus qu’a régler le problème du “DNS Leak”, en gros le DNS Leak c’est quand (même avec un vpn) en accédant à une site par exemple https://www.debian-fr.org/, le vpn va envoyer une requête en passant par votre DNS par défaut (Généralement celui de votre FAI), sans utiliser le vpn, ainsi les données sont bien crypté mais si votre FAI essaie d’injecté du code sur la page (en http bien sur), il peut par exemple la bloquer ou vous espionner (avec un keylogger). De plus il est possible de retracer votre FAI à partir de votre DNS ainsi que d’approximer(ce verbe est bizarre) votre location. Je vois que vous semblez plutôt enthousiaste à l’idée de régler ce problème. Voici la procédure: ouvrir le fichier client.conf:
nano /etc/openvpn/client.conf
Et y ajouter (dans le header, en haut, avant les clés et les certificats):
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Votre fichier devrait ressembler alors à ça:
client
dev tun
proto udp
sndbuf 0
rcvbuf 0
remote <ip> <port>
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA512
cipher AES-256-CBC
comp-lzo
auth-nocache
setenv opt block-outside-dns
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
key-direction 1
verb 3
<ca>
-----BEGIN CERTIFICATE-----
...
Je vous entend déjà dire qu’il n’y a pas de fichier nommé “update-resolv-conf”, nous-y venons
Voici un lien pastebin vers ce fameux fichier: https://pastebin.com/raw/XazHQ21c, pour les paresseux:
wget https://pastebin.com/raw/XazHQ21c -O /etc/openvpn/update-resolv-conf
Enfin! Il ne manque plus qu’à le rendre exécutable:
cmod 0777 /etc/openvpn/update-resolv-conf
Et voilà le travail! Oops, il manque une manipulation, il faut ajouter les DNS à votre ordinateur…
Bien, on fait une backup pour être sûr:
cp /etc/resolv.conf /etc/resolv.conf.bak
nano /etc/resolv.conf
Et voici l’adresse des serveurs OpenDNS, si vous avez choisi d’autres DNS à l’installation il vous faudra chercher l’adresse de ces serveurs.
nameserver 208.67.222.222
nameserver 208.67.222.220
Pfiouu… On approche de la fin! Tenez le coup!
Il nous reste à tester la connexion de notre VPN:
openvpn --config /etc/openvpn/client.conf
Attention, si cette commande vous retourne une erreur du type “Failed to run”, veuillez arrêter ce tutoriel, sous peine de ne plus avoir de connexion internet à cause d’une mauvaise configuration :o. Je vous invite à poster le message d’erreur sur le forum ainsi que des informations complémentaires afin de pouvoir vous aider à résoudre votre problème. Ceux qui n’ont pas eu d’erreur, vous pouvez lancer le VPN côté client:
/etc/init.d/openvpn <start/stop/restart>
Utilisez start, bien évidemment. Si vous recevez un message d’erreur, je vous conseille d’arrêter Openvpn (stop) et de nous envoyer des informations. Les autres, il est temps d’un reboot. De nouveau sur votre machine je vous invite à lancer un test pour voir votre nouvelle ip www.mon-ip.com ou www.ipleak.com.
Et pourquoi ne pas tester votre vitesse? Avec un nouveau DNS; votre débit s’est peut être amélioré ou du moins compense le fait de passer par un VPN…
III- Add-ons Firefox pour plus de sécurité
-
Noscript - Noscript est l’un des add-ons les plus indispensable pour naviguer partout sans pop-ups ou service “““d’analyse””” (on le sait tous, il cherchent à nous fournir de meilleures publicités mais gardent des informations sur notre vie privé, à vous de faire le choix). En gros Noscript permet de désacctiver l’éxecution de JavaScript sur certains sites, bloque des éléments dangereux, vous informe en cas de tentative de Cross Site Scripting (XSS) et autre. Il empêche notamment aux sites de récupérer votre os, résolution et couleurs d’écran, vos serveurs DNS, des informations approfondies sur votre IP…
-
HTTPs everywhere - Comme son nom l’indique il vous permet d’accéder aux versions HTTPs des pages qui s’affichent en HTTP par défaut, rajoute une couche de sécurité.
-
Disable WebRTC, ou la méthode manuelle - WebRTC est une fonction permettant la communication en peer-to-peer avec votre navigateur, vous exposant à des risques. La méthode manuelle pour le désactiver étant de taper dans la barre d’adresse: “about:config”, de chercher “media.peerconnection.enabled” et changer la valeur sur “false”.
-
User Agent Switcher - Ce petit plugin vous permet de changer votre “user-agent” valeur envoyé aux sites que vous consulté donnant des informations sur votre Navigateur web et sur le serveur graphique que vous utilisez par exemple: “Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0”. Cette information peut être collecté à l’aide du php dont NoScript ne vous protégera pas. Attention, toute fois certains sites bloques certaines user-agent, par exemple celui des rebots d’indexation.
Je vous souhaite bonne chance pour la suite et merci d’avoir lu. Si vous avez un problème n’hésitez pas à m’en faire part de même pour une rectification. Et faites-en une utilisation éthique, hein!?
EDIT:
https://ipleak.net/ - Excellent site pour tester votre VPN.