Dans un cadre professionnel, nous cherchons à déployer un VPN en interne pour les avantages suivants :

  • La connexion à des services internes à l’entreprise (ou votre maison), en voici une liste non-exhaustive :
    • Des services sensibles (hébergés sur site uniquement comme un NAS)
    • Des services non sécurisés (un VPN avec tunnel chiffré protège alors les échanges)
    • Des services avec des lacunes de sécurité (lors d’une attaque 0-day)
    • Des services difficilement hébergeables (comme un système embarqué)
    • Des services sans authentification
  • La possibilité de révoquer facilement un accès distant à tout cet ensemble de services.

Ce tutoriel est à titre informatif, si les services et les données que vous cherchez à sécuriser sont importantes, faites vous accompagner par une entreprise spécialisée.

I. Configuration d’un réseau local pour le rendre accessible depuis l’extérieur

Les pré-requis sont les suivants :

  • Une machine connectée sans interruption au réseau interne (un serveur)
  • Un routeur avec NAT configurable
  • Un nom de domaine

Si vous avez une IP fixe ou que vous avez déjà un service DynDNS, vous pouvez sauter l‘étape suivante.

1. Configuration d’un DynDNS

Si votre IP est dynamique, c’est-à-dire qu’elle change régulièrement et surtout à chaque redémarrage de modem (ce qui est le cas de la majorité des abonnements internet non professionnels), il faut mettre en place un DNS dynamique.

Ce service, appelé aussi DynDNS, met à jour en temps réel les changements de votre adresse IP dans les enregistrements DNS. Ce qui permet de toujours pouvoir accéder à votre réseau domestique via un nom de domaine qui reste fixe.

Ici, nous utilisons OVH car le service est gratuit si l’on possède déjà un nom de domaine chez eux.

Installation de ddclient et configuration avec OVH

Pour cela, je vous laisse suivre le tutoriel décrit ici : DynDNS OVH avec ddclient - (Lien archivé)

Une fois cette étape terminée, vous pouvez vous connecter à distance sur les services exposés via le NAT de votre routeur.

2. Configuration du NAT local

Votre réseau local (LAN) peut être composé d’une ou plusieurs machines. Si vous souhaitez exposer un service en dehors de votre réseau local, il faut faire correspondre au sein de votre réseau LAN **le protocole et le port du service **avec la machine locale hébergeant votre service.

Interface de configuration du NAT d’un routeur Livebox v4
Interface de configuration du NAT d’un routeur Livebox v4

Ici le routeur accepte toutes les IP externes à se connecter sur le port 51221 via les protocoles TCP et UDP. Le routeur est accessible via l’IP dynamique ou le nom de domaine DynDNS configuré précédemment. Les données réseaux seront alors transmises à la machine “mac-mini-server” du réseau local.

Précision : tous les équipements définis dans le NAT doivent avoir une IP locale fixe via le DHCP du routeur. Ce qui permet, lors redémarrage du routeur, de faire toujours correspondre l’adresse IP locale à un équipement défini via son adresse MAC.

Configuration du DHCP pour rendre des adresses locales statiques
Configuration du DHCP pour rendre des adresses locales statiques

II. Mise en place d’un VPN

Notre réseau est à présent accessible depuis l’extérieur, nous allons voir comment y ajouter un VPN afin d’y accéder uniquement via ce dernier.

Nous avons choisi WireGuard pour sa stabilité, sa vitesse réseau ainsi que sa facilité d’utilisation.

1. Installation de WireGuard

Nous recommandons fortement le script d’installation de Stanislas. Il propose une gestion ergonomique de Wireguard pour l’installation, la configuration et surtout la gestion des clients. Le script est aussi bien suivi par la communauté.

angristan/wireguard-install

Sachez qu’il propose aussi un script d’installation pour openvpn avec les mêmes avantages.

Voici les commandes pour récupérer et lancer le script. Si vous n’êtes pas root, il faut lancer le script avec sudo.

curl -O https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh
chmod +x wireguard-install.sh
./wireguard-install.sh

Si vous avez plusieurs interfaces réseaux, il est recommandé d’exécuter la commande ip addr show pour s’assurer de configurer WireGuard avec la bonne interface reliée à Internet.

Écran d’installation du script angristan/wireguard-install
Écran d’installation du script angristan/wireguard-install

Le script détecte l’ensemble des paramètres. Vous pouvez configurer le port de WireGuard, mais pensez à le retenir, il sera nécessaire pour la suite de la configuration.

Une fois la validation faite, le script installe les packages nécessaires et propose la configuration du premier client.

Configuration du script
Configuration du script

Nous vous conseillons de laisser les champs pré-remplis et de valider. Faites en sorte d’avoir un nom de client assez explicite. Un QRCode s’affichera pour charger directement le fichier client sur votre mobile.

Si vous êtes en IP dynamique et que vous avez fait une configuration DynDNS

Il faut modifier les fichiers clients pour changer le endpoint de votre serveur WireGuard par celui de votre nom de domaine DynDNS.

Contenu d’une fichier de configuration client
Contenu d’une fichier de configuration client

Maintenant que le fichier est adapté à votre configuration, vous pouvez générer le QRCode avec la commande suivante :

wg0-client-test-client.conf

Vous pouvez aussi modifier le endpoint après l’avoir installé sur le client WireGuard.

2. Configuration du réseau local

Il suffit de suivre la partie I sur la configuration du NAT local pour rediriger le port de WireGuard (sur nos exemples c’est le port 49506) vers le port de la machine qui héberge le serveur WireGuard.

3. Configuration des clients

À partir de maintenant, votre VPN est accessible depuis le réseau extérieur vous permettant d’accéder à votre réseau domestique.

WireGuard s’installe sur la majorité des machines (Windows, macOS, distributions Linux) et des appareils mobiles (iOS et Android). Vous pouvez retrouver la liste à cette adresse : https://www.wireguard.com/install/

Pour ajouter une configuration sur le client, il existe deux moyens :

  • importer le fichier de configuration client
  • scanner le QRCode
Le client WireGuard sur Android
Le client WireGuard sur Android

Pour se connecter au réseau, activez la configuration VPN sur l’application et vos échanges réseaux transitent maintenant par votre serveur VPN. Ce qui vous permet de vous connecter aux services de votre réseau domestique.

4. Ajouter un nouveau client

Vous devez créer un client pour chaque appareil connecté au VPN. Les IP attribuées par WireGuard sont fixes, donc vous ne pourrez pas vous connecter en même temps au VPN avec la même configuration client. De plus, ce sera plus simple si vous devez révoquer un accès suite à la perte ou au vol d’un appareil.

Pour ajouter un client, relancez le script sur le serveur qui vous permettra de créer un nouveau fichier de configuration client.

Une fois le fichier généré, n’oubliez pas de le modifier si vous avez un DynDNS.

5. Supprimer un client

Comme précédemment on relance le script et on choisit l’option 2 pour supprimer le client de son choix. Vous pouvez remarquez ici l’importance de bien nommer les clients.

III. Sécurisation du réseau interne

Si vos données sont importantes, nous vous recommandons de nouveau de demander un audit de sécurité auprès d’une entreprise spécialisée.

Voici quelques points que nous recommandons pour la sécurité de votre réseau local :

  • Supprimer les règles du NAT pour ne laisser que celle de votre VPN
  • Désactiver le UPnP pour les règles NAT sur vos machines. Verrouiller si possible les règles NAT.
  • N’autoriser uniquement les IP locales sur vos machines internes.
  • Réduire au maximum les ports ouverts

Nous espérons que vous avez trouvé cet article intéressant et qu’il a pu vous aider. N’hésitez pas à faire vos retours sur le compte Twitter de KBDev.

Merci de votre lecture !
Merci de votre lecture !

Mis à jour :