Configuration server & client Openvpn

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.

Absolument PAS ! En 2 mots ça permet la discutions en P2P entre 2 navigateurs …

Je m’en doutais bien en voyant le nom de la variable dans firefox mais j’étais pas sûr alors je voulais pas écrire des bêtises.

Pourquoi ?

Salut,
Je viens d’essayer de suivre le tuto sur un debian 9 monté dans une vm et j’ai un soucis.
au moment de lancer le script avec bash, j’arrive a rentrer toutes les infos demandées et une fois que ca lance le paramétrage automatique, ca fait planter ma VM.
Une idée de pourquoi elle pourrait planter?
Pour info, elle plante lorsque le script arrive a cette étape :
“Connexion à github-production-release-asset-2e65be.s3amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com) |52.216.132.11|:443… connecté.”