Comment transformer facilement son raspberry en serveur vpn ?

openvpn
Dernière mise a jour 26 Juil 2020 a 12:52 pm

On ne le répétera jamais assez mais votre sécurité sur des WIFI publics est fortement conditionnée à l’utilisation d’un VPN. Quoi de mieux que d’utiliser son propre VPN pour assurer la confidentialité de ses communications de son pc,de son téléphone Androïd sur Internet?
Bien souvent l’installation et la configuration d’un serveur VPN sous Linux rebute pas mal d’utilisateurs. C’est plutôt difficile à mettre en oeuvre avec ces histoires de génération de certificat, de clé privée, de clé publique …
Heureusement, des passionnés ont créé un script shell PIVPN proposant une installation automatique et sécurisée d’OpenVPN sur un Raspberry.

Installation d’openvpn server:

  • Connexion au raspberry:

ssh pi@192.168.0.x

  • Mise à jour de la Raspbian

sudo apt-get update && sudo apt-get upgrade

  • Installation du script:

curl -L https://install.pivpn.io | bash

Configuration du serveur:

Une interface graphique s’affiche avec plusieurs questions qui vont vous être posées pour paramétrer au mieux votre serveur VPN.

  • Adresse IP , par défaut celle que le DHCP de votre box aura attribué au rpi. Perso ,je conseille de créer un bail statique pour votre rpi au niveau de la box.
  • l’utilisateur local , l’utilisateur « pi » par défaut en général présent sur toute distribution Raspbian
  • choisir UDP en protocole et laisser port 1194 par défaut
  • choisir 4096 bits en level encryption
  • Répondre « No » à la génération des paramètres Diffie-Hellman. Perso j’ai mis 1 heure, je trouve que c’est un bon rapport temps/sécurité 🙂
  • N’ayant pas de DNS , j’ai choisi l’IP de ma box pour pouvoir joindre mon serveur VPN.
  • Pour le choix du DNS utilisé par le serveur VPN, attention je pense que ce paramètre n’est pas à prendre à la légère. Les DNS proposés sont ceux de Google (le Mal), OpenDNS (bof, je vous invite à lire cet article pour vous dissuader d’opter pour lui).
  • Puisqu’on en est à essayer de préserver un peu de vie privée , autant prendre les DNS du plus vieux des fournisseurs d’accès français bien connu pour faire de la vie privée et de la neutralité du net son cheval de bataille, j’ai nommé FrenchDataNetwork.Donc en résumé , tu sélectionnes « Custom » puis tu rentres une des 2 adresses ip de dessous:

fdnDns

  • Reboot du serveur

Création d’un utilisateur VPN

avec la commande:

pivpn add

Choisissez un login/passwd.
Ce sera celui que vous utiliserez sur votre pc ou votre smartphone.

Et vous obtenez le fameux fichier de type « login.ovpn« .
C’est ce dernier qui sera utilisé par le client vpn pour se connecter au serveur.
Il embarque toute votre config, les clés et le certificat.

Configuration des clients :

1/ récupérer le fichier « login.ovpn » généré précédemment

2/ copier sur les clients qui doivent se connecter au serveur openvpn.

[à partir d’un pc sous linux]:

scp pi@192.168.0.x:/home/pi/ovpns /dossierLocal

[à partir d’un téléphone sous Androïd]:
Plusieurs méthodes existent mais la plus « secure » à mon sens est la plus simple:
On connecte son téléphone en USB au pc. Puis on copie le fichier du pc /repertoire_local/benzo.ovpn vers le téléphone.

Installer openVPN à partir du dépôt FDROID.
– ouvrir directement le fichier avec l’appli openvpn

Derniers paramétrages:

redirection du port UDP 1194 si le raspberry est derrière une box ou un autre type de routeur.
– activer routage:

Dans « /etc/sysctl.conf » =>

net.ipv4.ip_forward=1
sysctl -p

+ règles iptables

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sh -c “iptables-save > /etc/iptables.rules”

vim /etc/network/interfaces

up iptables-restore < /etc/iptables.ipv4.nat

Pour ceux qui utilisent UFW le firewall d’ubuntu , voir ce lien

  • connexion client vers serveur sous linux:

apt-get install openvpn
openvpn --config login.ovpn

Test de l’anonymat du vpn

Si vous pensez être super bien protégé par le vpn tout fraîchement installé voici un site super bien fait qui concentre tous les tests d’anonymat et de failles potentielles :

https://ipleak.net/

Si vous êtes vulnérable à la faille webrtc , celle qui permet d’afficher votre ip réelle et ce même si vous êtes connecté derrière un VPN:

-dans firefox c’est simple:

Taper « about:config »

Puis passer media.peerconnection.enabled à false

Pour Chrome, installez l’extension WebRTC Network Limiter.

Sécurisation:

– avec fail2ban , créer un filtre qui détectera les erreurs dans /var/log/openvpn.log.

Bémols

Inconvénient d’une solution entièrement automatisée, on installe super facilement mais on ne maîtrise pas forcément les mécanismes liés au VPN.Vous allez me dire c’est le but, oui mais en sécurité il est quand même important de savoir ce que l’on fait. Donc cette solution de VPN est idéale pour créer en peu de temps de la confidentialité dans les échanges entre mon pc et un réseau qui serait hostile (Wifi public …)
Il ne faut en aucun cas croire qu’avec cette solution vous êtes anonymes sur la toile puisque c’est avec l’IP publique de votre box que vous consulterez les pages webs.

21 commentaires sur Comment transformer facilement son raspberry en serveur vpn ?

    • Bonne remarque mais tout dépend de l’usage que tu en fait.
      Le débit sera limité à celui du upload de ton Fai.
      Pour accéder à des sites web, télécharger des petits fichiers, qd j’ai testé je trouvais que ça passait plutot bien . Mon objectif était surtout detre en relative sécu sur des Wifi public

  1. Bonjour,
    Pour ma part l’installation s’arrête après l’IP. Il me donne la bonne IP, puis ensuite Ip Conflit. Il y a une réservation d’IP sur le routeur par mac adress.
    ET je ne parviens pas au stade suivant…
    J’ai le message Static IP already configured, puis la mire pour entrer une nouvelle commande.

  2. « Perso j’ai mis 1 heure, je trouve que c’est un bon rapport temps/sécurité 🙂 »

    Pour moi au bout de 4-5h il a toujours pas fini j’ai donc décidé de l’arrêter y a t il un moyen de le faire + rapidement ??

    • « « Perso j’ai mis 1 heure, je trouve que c’est un bon rapport temps/sécurité 🙂 »

      Pour moi au bout de 4-5h il a toujours pas fini j’ai donc décidé de l’arrêter y a t il un moyen de le faire + rapidement ?? »

      Bonsoir,

      Personnellement ça fait presque 7h que ça tourne et j’ai l’impression que ça s’arrêtera jamais. As-tu trouver un autre moyen nico85 ?

      • Bonjour, Benzo,
        Et merci pour votre réponse.
        Le problème est que je n’accède pas à la fenêtre « upstream dns provider » dans l’installation de pivpn. Est-ce que c’est parce que je n’ai pas installé pihole ?
        Merci

          • Merci Benzo.
            Je suis un grand débutant mais j’essaie d’apprendre.
            Quand, depuis mon téléphone, j’entre mon adresse ip publique, j’arrive sur l’interface de mon routeur. Comment puis-je aller au-delà, accéder à mon serveur Raspberry et enfin, à mes disques durs externes partagés ?
            Merci et bonne soirée.

  3. Bsr JPP,
    1/ si tu es connecté en VPN, tu accèdes à tes machines comme si t’étais à la maison. Dc tu utilises les mêmes adresses internes pour les joindre.
    2/ si tu nes pas en VPN et que tu cherches à joindre une machine de ton réseau privé derrière le routeur , alors il faut faire du « port forwarding ».
    En gros sur ta box ou ton routeur, tu dis qu’une requête arrivant d’internet sur tel port doit être redirigée vers tel@ip de ton LAN et tel port. Je ne sais pas quel matériel tu as mais pour une freebox par ex cest décrit ici comment faire:
    http://pixelboys.fr/creer-une-redirection-de-port-chez-free/

    • Bonjour, Benzo,
      Merci de tes explications.
      J’ai déjà redirigé le port 1194 vers l’@ IP de mon routeur Netgear 834.
      Je me connecte via le client Openvpn installé sur mon téléphone. Mais je n’accède qu’à l’interface d’administration du routeur. Quelque chose doit m’échapper. j’espère ne pas te déranger trop avec mes problèmes.
      Cordialement,
      JPP

    • Bonsoir, Benzo,
      Si j’entre l’@ ip de mon raspberry (192.168.0.*), la réponse est ERR_CONNECTION_REFUSED, idem si j’entre l’@ ip de mon disque dur externe (192.168.0.*/media/pi/Mon_DD_Externe).
      Il y a peut-être un identifiant et mot de passe à saisir dans un fichier de configuration ? Mais où ? Ou je me trompe ?
      Merci de ta patience,
      JPP

        • Si je lance sudo service –status-all : j’ai
          [ – ] alsa-utils
          [ + ] avahi-daemon
          [ + ] bluetooth
          [ – ] console-setup.sh
          [ + ] cron
          [ + ] cups
          [ + ] cups-browsed
          [ + ] dbus
          [ + ] dhcpcd
          [ + ] dphys-swapfile
          [ + ] exim4
          [ + ] fail2ban
          [ + ] fake-hwclock
          [ – ] hwclock.sh
          [ – ] keyboard-setup.sh
          [ + ] kmod
          [ + ] lightdm
          [ + ] netfilter-persistent
          [ – ] networking
          [ – ] nfs-common
          [ + ] nmbd
          [ + ] openvpn
          [ – ] paxctld
          [ – ] pcscd
          [ – ] plymouth
          [ – ] plymouth-log
          [ – ] procps
          [ + ] raspi-config
          [ ? ] rng-tools
          [ – ] rpcbind
          [ – ] rsync
          [ + ] rsyslog
          [ + ] samba
          [ – ] samba-ad-dc
          [ – ] saned
          [ + ] smbd
          [ + ] ssh
          [ – ] sudo
          [ + ] triggerhappy
          [ + ] udev
          [ + ] unattended-upgrades
          [ – ] x11-common

1 Trackbacks & Pingbacks

  1. Revue de presse du CLA, semaine #31 2017 – Club Linux Atomic

Leave a Reply

Votre adresse de messagerie ne sera pas publiée.


*