Cet article et sa vidéo décrivent l’installation et la configuration du VPN Wireguard sur des PC ou serveurs Linux.

 

 

0. Vidéo associée

 

Chapitrage :
00:00 Générique introduction
01:00 Présentation et fonctionnement attendu
03:19 Préparation de l'architecture utilisée
10:02 Installation de Wireguard sous Linux
13:18 Configuration détaillée de Wireguard
35:57 Utilisation de DynSns sur Linux
40:22 Configuration du pare-feu et redirection des ports
43:47 Comparaison et test des config. d'un client et d'un serveur
53:37 Conseils et conclusion
54:01 Fin et générique

 

1. Rappels sur Wireguard

Wireguard est un protocole de réseau privé virtuel (VPN) moderne, rapide et sécurisé. Conçu pour être simple à utiliser et à configurer, il offre des performances supérieures à celles d’autres solutions VPN traditionnelles et il utilise une cryptographie de pointe pour assurer la confidentialité et l'intégrité des données transmises.

Les principaux avantages de Wireguard :

  • Configuration et utilisation faciles.
  • Faible latence et débit élevé.
  • Utilisation de protocoles cryptographiques modernes.
  • Lignes de code réduites comparativement aux autres solutions (facilite la maintenance et les audits de sécurité).
  • Disponible sur Linux, Windows, MacOs, Android, iOS, etc.

Dans cet article nous allons aborder :

  • L'installation et la configuration de Wireguard sur un système Linux qui servira de serveur.
  • La configuration des clients sous Linux et Windows pour établir des connexions distantes sécurisées.

Cet article est complémentaire à celui-ci : VPN Wireguard entre 2 PC Windows (1/2). Certains détails de ces derniers ne sont pas repris dans cet article ci et vice versa.

Les configurations sont très semblables à celles de Windows, cependant sous Linux il va falloir définir quelques paramètres supplémentaires et utiliser la ligne de commande car il n’y a pas d’interface graphique native pour Wireguard dans Linux.

 

 

2. Prérequis

Avant de commencer l'installation et la configuration de Wireguard, il faut disposer des éléments suivants :

  • Un PC client sous Linux avec un accès root ou sudo.
  • Un serveur sous Linux qui pourra être une machine virtuelle, un PC ou un VPS chez un fournisseur de cloud (OVH, DigitalOcean, Hostinger, Infomaniak, Ionos, …).
  • Une adresse IP publique statique pour le serveur ou un nom de domaine dynamique (DynDns) si une IP au moins est dynamique.
  • Un accès SSH.
  • Des connaissances de base en administration Linux et des notions basiques sur l’utilisation des lignes de commande.
  • Un éditeur de texte en ligne de commande comme nano ou vim.

 

 

 

3. Installation et configuration de Wireguard sur un serveur Linux

Ce qui suit montre l’installation sur un PC Linux et sur un serveur Ubuntu dans une machine virtuelle. Les commandes et les paramétrages qui seront utilisés sont cependant identiques quelque-soit le type de machine (PC, serveur, machine virtuelle, VPS). Quelques commandes devront parfois être adaptées à la distribution Linux utilisée (par exemple les commandes d’installation d’une distribution Debian diffèrent de celle d’une Red Hat).

En choisissant l’utilisation d’un VPS sur le cloud on obtiendra un VPN similaire aux VPN   commerciaux (NordVPN, CyberGhost, …).  L’avantage du VPS reste avant tout la maitrise et la protection des données personnelles. Le VPS n’a pas besoin d’être très puissant et son coût peut être aussi un peu inférieur à celui d’un VPN commercial si on ne prend pas de domaine. Pour l’installation et la configuration d’un VPS il faudra se reporter aux instructions du fournisseur.

 

3.1 - Installation

On va donc commencer par le serveur Linux en se connectant en SSH (pour un VPS voir la documentation du fournisseur, sur un serveur local on peut utiliser directement un terminal ou installer le serveur SSH avec la commande « sudo apt install openssh-server »).

Dans un terminal, lancer les commandes qui suivent en respectant toujours les majuscules et minuscules car Linux fait la différence.

 

3.1.1 - Mise à jour du système

Avant toute installation il est toujours conseillé de vérifier la mise à jour du système avec :

  • sudo apt update
  • sudo apt upgrade -y

 

 

3.1.2 - Installer Wireguard 

  • Sur les distributions à base de Debian comme Ubuntu, Wireguard est disponible dans les dépôts officiels. Lancer la commande suivante : sudo apt install wireguard -y (l’option -y lance l’installation sans questions et validations intermédiaires)
  • Sur d’autres distributions comme Fedora ou Open Suse aller sur le site de Wireguard (https://www.Wireguard.com/install/) pour télécharger le binaire et appliquer les instructions d’installation. 

 

wireguard linux 02 02

 

3.1.3 - Vérifier  l'installation

Pour contrôler l’installation correcte de Wireguard entrer les commandes suivantes :

  • sudo modprobe wireguard
  • echo $?

La commande doit afficher 0 si le module Wireguard a été chargé avec succès. Dans le cas contraire relancer l’installation.

 

wireguard linux 02 03

 

3.1.4 – Routage IP

Pour que le serveur Wireguard puisse établir le trafic entre les clients, il faut activer le transfert IP (IP forwarding). Pour cela avec un éditeur de texte il faut ouvrir le fichier /etc/sysctl.conf :

  • Avec par exemple l’éditeur Nano lancer la commande : sudo nano /etc/sysctl.conf.
  • Une fois le fichier ouvert il faut ajouter ou enlever le commentaire de la ligne suivante : net.ipv4.ip_forward=1.
  • Sauvegarder le fichier et le fermer (touches clavier Crtl + O + Enter puis quitter Nano avec « Ctrl + X »).
  • Appliquer les changements en lançant la commande : sudo sysctl -p
  • La ligne « net.ipv4.ip_forward = 1 » devrait s’afficher.

 

wireguard linux 02 04

 

3.2 - Configuration de Wireguard

Wireguard est maintenant installé, voici maintenant les étapes à suivre pour sa configuration.

 

3.2.1 – Générer les clés

La génération d’une paire de clés publique et privée est automatique sous Windows mais sous Linux elle se crée avec une commande shell spécifique :

  • Lancer: wg genkey | sudo tee /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
  • Cette commande va créer 2 fichiers private.key et public.key qui seront enregistrés dans le répertoire /etc/wireguard/.
  • Une ligne dévoilant la clé publique devrait s’afficher sur le terminal. Ces clés devront être copiées dans les fichiers de configuration.
  • Noter ou copier ces clés sur une clé USB par exemple pour pouvoir les utiliser par la suite (voir dans la vidéo différentes possibilités position=19mn 28s) . Ne pas oublier que les clés privées devront par la suite être stockées dans un endroit sûr.
  • Pour accéder aux fichiers et les lire il faut être en mode administrateur (ces répertoires et fichiers sont protégés par le système).

 

3.2.2 - Créer le fichier de configuration de Wireguard

Sur Linux il faut créer manuellement le fichier de configuration de l'interface Wireguard avec un éditeur de texte. Avec Nano on fera la commande :

  • sudo nano /etc/wireguard/wg0.conf (s’il n’existe pas un fichier vide sera créé, s’il existe il sera ouvert).
  • Ici, on va appeler notre interface Wireguard « wg0 », d’où le nom wg0.conf. On peut choisir un autre nom.

Le contenu est similaire à celui de Windows. Ajouter le contenu suivant, en remplaçant les valeurs en vert par vos propres données:

[Interface]

  • PrivateKey = contenu du fichier /etc/Wireguard/private.key
  • Address = 10.0.0.1/24
  • ListenPort = 51850
  • SaveConfig = false
  • PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]

  • PublicKey = [Clé publique du client]
  • AllowedIPs = 10.0.0.2/32
  • EndPoint = Adresse IP publique du PC client (ou url DynDns) :81850
  • PersistentKeepalive = 20

La section [Interface] concerne la configuration Wireguard sur la machine actuelle.

Les sections [Peer] comprennent les données des clients autorisés à se connecter au serveur. Chaque client (Linux, Windows, Android, IOS, …) a sa propre section [Peer] :

  • PrivateKey : valeur de la clé privée du serveur contenu du fichier private.key créé précédemment.
  • Address est l'adresse IP du PC ou serveur sur le réseau Wireguard (réseau privé).
  • ListenPort est le port d’écoute des connexions entrantes de Wireguard.
  • SaveConfig permet à Wireguard de sauvegarder ou non les modifications de configuration et empêche des modifications ultérieures par d’autres programmes.
  • PostUp et PostDown sont des règles qui concernent le pare feu (iptables). Elles activent le NAT et permettent le routage du trafic.
  • Dans PostUp et PostDown eth0 est le nom de l’interface réseau du serveur (ne pas confondre avec l’interface virtuelle de Wireguard qu’on a appelé wg0). Il faudra remplacer eth0 par le nom de l’interface propre à chaque machine. Ce nom peut être trouvé en tapant dans une ligne de commande : « ip a » (voir vidéo associée).

Explications complémentaires sur le paramètre SaveConfig :

  • Le paramètre `SaveConfig` est utilisé dans le fichier de configuration Wireguard pour Linux. Il permet de spécifier si les changements de configuration doivent être enregistrés de manière persistante ou non.
  • Lorsque `SaveConfig` est activé (`SaveConfig = true`), Wireguard enregistrera toute modification apportée à la configuration dans le fichier de configuration spécifié. Cela signifie que les changements de clés, d'adresses IP, de ports, etc. seront sauvegardés et chargés automatiquement au prochain démarrage de l'interface Wireguard.
  • Cela est utile lorsque on souhaite que la configuration Wireguard soit persistante entre les redémarrages du système ou les changements de réseau. Ainsi, il n’est pas nécessaire de reconfigurer Wireguard à chaque fois.
  • En revanche, si `SaveConfig` est désactivé (`SaveConfig = false`), les modifications de configuration ne sont pas enregistrées de manière permanente. Elles sont uniquement appliquées à la session en cours.

wireguard linux 02 05 

 

3.2.3 – Adapter la configuration du pare-feu du serveur Linux à Wireguard

Pour que le serveur puisse se connecter au réseau du ou des PC distant(s) et acheminer les paquets il faut activer l’IP Masquerade qui est l’équivalent du NAT. Cela se fait au travers de la configuration du pare-feu.

Une façon simple de configurer le pare-feu est d’utiliser le logiciel UFW (Uncomplicated FireWall) qui est un outil de configuration en ligne de commande beaucoup plus simple que iptables.

  • Si UFW n’est pas installé, l’installer avec la commande : sudo apt install ufw.
  • Il faut ensuite ouvrir le port d’écoute avec la commande suivante :
  • sudo ufw allow 51850/udp (remplacer le cas échéant 51850 par la valeur inscrite dans la ligne Listenport du fichier de configuration de Wireguard (voir § 3.2.2).

Pour l’accès distant au serveur on n’oubliera pas d’installer un serveur SSH et d’ouvrir son port dans le pare-feu :

  • sudo apt install open-ssh
  • sudo ufw allow 22/tcp (22 est le port par défaut, il est conseillé de le changer à l’installation et de d’adapter cette commande en conséquence).

Il faut ensuite configurer dans le pare-feu l’IP Masquerade de notre interface eth0 (ce nom peut être différent sur votre machine) en saisissant directement les données dans un fichier de configuration que l’on va ouvrir avec la commande : sudo nano /etc/ufw/before.rules.

Dans ce fichier rajouter les données manquantes comme indiqué ci-après :

  • NAT - IP masquerade
  • *nat
  • :POSTROUTING ACCEPT [0:0]
  • -A POSTROUTING -o eth0 -j MASQUERADE

Insérer ou modifier les données précédentes juste avant les 2 lignes suivantes :

  • # End each table with the 'COMMIT' line or these rules won't be processed
  • COMMIT

 

wireguard linux 02 07

On continue en adaptant la configuration du pare-feu par la déclaration des LAN et de Wireguard en rajoutant les règles suivantes :

# autoriser le routage IP sur le réseau distant de connexion et celui du VPN Wireguard

  • -A ufw-before-forward -s 172.20.0.0/24 -j ACCEPT
  • -A ufw-before-forward -d 172.20.0.0/24 -j ACCEPT
  • -A ufw-before-forward -s 10.90.0.0/24 -j ACCEPT
  • -A ufw-before-forward -d 10.90.0.0/24 -j ACCEPT

Ces commandes vont ici autoriser tous les ordinateurs du réseau privé LAN commençant par 172.20.0 et tous ceux du réseau Wireguard commençant par 10.90.0. Ces valeurs sont bien sûr à adapter en fonction de vos données.

Cependant si un seul client est autorisé à se connecter on mettra directement son adresse IP suivie de /32 pour améliorer la sécurité. Par exemple:

  • -A ufw-before-forward -s 172.20.0.115/32 -j ACCEPT
  • -A ufw-before-forward -d 172.20.0.115/32 -j ACCEPT

Enregistrer et fermer le fichier /etc/ufw/before.rules (avec Nano touches clavier « Ctl + O + Enter» puis « Ctrl + X »).

On termine par l’activation et la relance du service UFW avec les commandes suivantes :

  • sudo ufw enable
  • sudo systemctl restart ufw
  • sudo ufw status (facultatif, cette command permet d’afficher et de vérifier les paramètres de UFW).

 

3.3 - Démarrage de l'interface Wireguard

Pour activer et démarrer Wireguard lancer les commandes suivantes :

  • sudo systemctl enable wg-quick@wg0
  • sudo systemctl start wg-quick@wg0
  • Le statut de l'interface de l’interface peut être vérifié avec la commande show : sudo wg show
  • Si la configuration est correcte les détails de l'interface wg0 doivent s’afficher.

wireguard linux 02 08

 À chaque modification du fichier de configuration il faut relancer Wireguard avec la commande : sudo systemctl restart wg-quick@wg0

 

 

4. Configuration d’un client Wireguard sur un PC Linux

La configuration d'un client Linux est similaire à celle du serveur, il n’y a que quelques différences.

 

4.1 - Installation de Wireguard

La mise à jour du système et l’installation sont identiques à celle du serveur (voir § 3.1 et § 3.2).

4.2 Génération des clés

Le génération de la paire de clés du client est également identique à celle du serveur (voir § 3.2.1).

4.3 -  Création du fichier de configuration du client

La création du fichier de configuration du client est similaire à celle du serveur :

  • sudo nano /etc/wireguard/wg0.conf

 Ajouter le contenu suivant, en remplaçant les valeurs en vert par vos propres données :

[Interface]

  • PrivateKey = contenu du fichier /etc/Wireguard/private.key du client
  • Address = 10.0.0.2/32
  • DNS = 1.1.1.1

[Peer]

  • PublicKey = [Clé publique du serveur]
  • AllowedIPs = 0.0.0.0/0
  • Endpoint = Adresse IP publique du serveur (ou url DynDns):51850
  • PersistentKeepalive = 20

 

Explications :

  • Address : mettre l'adresse IP du client sur le réseau Wireguard (unique pour chaque client)
  • DNS : Serveur DNS à utiliser (ici, on utilise celui de Cloudflare mais on peut en choisir un autre).
  • PublicKey : mettre la clé publique du serveur.
  • AllowedIPs : autoriser les réseaux auxquels le client aura accès via le VPN (on peut mettre 0.0.0.0/0 pour autoriser n’importe quelle adresse Internet ou mettre une adresse de type 124.20.20.20.124/32 comme dans l’article sur la connexion Wireguard entre 2 PC Windows).
  • Endpoint : L'adresse IP publique et le port du serveur Wireguard (ou l’url de DynDns par exemple).
  • PersistentKeepalive : envoie un paquet toutes les 20 secondes pour maintenir la connexion active.

 

wireguard linux 02 09 

 

4.4 - Démarrage de la connexion client

  • Comme sur le serveur on démarre la connexion Wireguard sur le client avec la commande :  sudo wg-quick up wg0.
  • Pour vérifier la connexion, on lance la commande : sudo wg show

 

4.5 - Utiliser le VPN pour toutes les connexions

Jusqu’à présent on a utilisé Wireguard pour se connecter à un autre ordinateur ou réseau local via un tunnel sécurisé.

Dans cette configuration tous les flux ayant pour destination une adresse IP listée dans AllowedIPs (on peut mettre plusieurs IP séparées par une virgule) passent par le tunnel sécurisé. Cependant si on se connecte sur un site Web ou que l’on ouvre une application quelconque qui se connecte à Internet, le flux ne passera pas par le tunnel VPN.

wireguard linux 03 01

 

Pour obliger tous les flux à passer par le tunnel sécuriser il suffit de rajouter 0.0.0.0/0 dans AllowedIPs.

Dans le Protocole Internet IPv4, par convention l'adresse 0.0.0.0 est une adresse non-routable qui désigne une destination invalide, inconnue ou non-atteignable. Dans le cas d'un serveur, 0.0.0.0 signifie « toutes les adresses IPv4 de la machine locale ». Si un hôte a deux adresses IP par exemple 192.168.1.1 et 10.1.2.1, et qu'un serveur du réseau en cours d'exécution écoute sur 0.0.0.0, il sera accessible sur ces deux IP.

wireguard linux 03 02

 

Donc en ayant la valeur 0.0.0.0/0 dans AllowedIPs tous les flux Internet passeront par le tunnel Wireguard.

  • Avec un VPS on obtient ainsi un fonctionnement similaire à celui d’un VPN commercial comme NordVPN. La connexion sur un site Web se fait avec l’adresse IP du VPS. L’avantage du VPS est que le propriétaire contrôle totalement ses données personnelles et est sûr que les traces de ses connexions ne sont pas exploitées par un tiers.
  • Sans VPS les connexions se font avec l’IP du serveur distant, cette solution est intéressante lorsque le PC client est connecté à un site public (aéroport, hôtel, gare, restaurant, …). Tous les flux du client passent par le tunnel et sont à l’abri des pirates éventuels.

      

4.6 - Comment paramétrer le logiciel DUC de NOIP sut un PC linux

Ce type logiciel installé sur un PC transmet automatiquement l’adresse IP publique du PC à un serveur DynDNS. Cette adresse IP peut être récupérée en utilisant un lien Internet (URL). Si vous choisissez un DynDNS sur NoIP (il existe d’autres fournisseurs), 

Voici les commandes pour installer le logiciel DUC de NoIP

  1. Téléchargement et installation :
    • wget --content-disposition https://www.noip.com/download/linux/latest
    • tar xf noip-duc_3.1.1.tar.gz
    • cd /home/$USER/noip-duc_3.1.1/binaries && sudo apt install ./noip-duc_3.1.1_amd64.deb
  2. Une fois l’installation réalisée, lancer le programme noip-duc pour le démarrer.
    • Sudo noip-duc --username 'identifiant' --password 'mot de passe' --hostnames 'connexionvpnwg0.ddns.net'
      • Les valeurs sont encadrées par une apostrophe (' ), ‘username’ et ‘mot de passe’ sont vos identifiants de connexion à DynDNS, hostnames le nom de l’url déclarée ou de celle que vous souhaitez utiliser si vous en avez plusieurs sur un compte payant .
      • L’aide est accessible en tapant la commande run noip-duc –help, elle permet de voir toutes les commandes disponibles.

 

 

5 - Configuration du pare-feu et redirection de ports

Pour permettre aux clients de se connecter au serveur Wireguard, il reste à configurer le pare-feu et la redirection de ports sur le routeur ou la box.

 

5.1 - Configuration du pare-feu sur le serveur

  • Avec UFW (Uncomplicated Firewall) on peut ouvrir le port Wireguard avec les commandes :
    • sudo ufw allow 51850/udp
    • sudo ufw reload
    • le lancement de UFW se fait avec la commande : sudo ufw enable
  • Avec iptables ajouter la règle avec les commandes suivantes :
  • sudo iptables -A INPUT -p udp --dport 51850 -j ACCEPT
  • sudo iptables-save > /etc/iptables/rules.v4

 

5.2 - Redirection de ports sur le routeur ou la Box

Si le serveur est derrière un routeur NAT, il est nécessaire de configurer la redirection de ports pour le port UDP 51850 (ou celle que vous avez choisi) vers l'adresse IP locale du serveur. La procédure dépend du modèle de routeur ou de la box. Se reporter à l’article VPN Wireguard entre 2 PC Windows (1/2) et sa vidéo associée pour plus de détails.

 

 

 

6 - Établissement des connexions

Une fois le serveur et le ou les client(s) configurés, pour établir une connexion à partir d’un client Linux faire les opérations suivantes :

  • Ouvrir un terminal
  • Lancer la commande : sudo wg-quick up wg0
  • Vérifier la connexion avec : sudo wg show

À partir d’un client Windows :

  • Ouvrir l'application Wireguard.
  • Sélectionner le tunnel configuré.
  • Cliquer sur "Activer"

Une fois connecté, pour vérifier que le trafic transite bien par le VPN on peut vérifier son IP sur un site comme https://ipleak.net ou https://whatismyipaddress.com. L'adresse IP affichée doit être celle du serveur hébergeant Wireguard.

 

 

 

7 – Désinstallation des logiciels

Si vous souhaitez désinstaller Wireguard et/ou le logiciel DUC avant une réinstallation ou pour une autre raison, voici les commandes :

  • sudo apt remove wireguard –purge
  • sudo apt remove noip-duc –purge

Supprimer manuellement le répertoire wireguard dans /etc s’il n’a pas été supprimé par la commande apt remove wireguard.

 

 

8. Gestion, maintenance, dépannage et sécurité du VPN

8.1 - Gestion et maintenance

Pour gérer et maintenir le fonctionnement de Wireguard, voici une liste non exhaustive d’opérations de gestion et de maintenances courantes :

Ajouter un nouveau client

  • Arrêter l’interface Wireguard.
  • Générer une nouvelle paire de clés pour le client.
  • Créer une configuration ce nouveau client.
  • Ajouter la clé publique et les données de ce nouveau client dans une nouvelle section [Peer] du fichier de configuration du serveur.
  • Redémarrer l'interface Wireguard du serveur.

Supprimer un client

  • Arrêter l’interface Wireguard.
  • Éditer le fichier de configuration du serveur.
  • Supprimer la section [Peer] correspondant au client à enlever.
  • Redémarrer l'interface Wireguard du serveur.

Mise à jour de Wireguard

Sur les systèmes basés sur Ubuntu/Debian, la mise à jour spécifique de Wireguard se fait avec les commandes suivantes :

  • sudo apt update
  • sudo apt upgrade Wireguard

Elle peut se faire également par l’intermédiaire d’une mise à jour générale du système avec :

  • sudo apt update && sudo apt upgrade -y

Journaux de Wireguard

En cas de problème ou pour vérifier le fonctionnement de Wireguard  à travers ses journaux, utiliser la commande :

  • sudo journalctl -xeu wg-quick@wg0

 

 Sauvegarde de la configuration

Il est conseillé de sauvegarder régulièrement les fichiers de configuration Wireguard. Pour cela il suffit de les copier dans un autre emplacement sécurisé (notamment les clés privés doivent rester cachées). Par exemple avec la commande cp (copy) :

  • sudo cp /etc/Wireguard/wg0.conf /chemin du répertoire de sauvegarde/wg0.conf
  • sudo cp /etc/Wireguard/private.key / chemin du répertoire de sauvegarde /private.key
  • sudo cp /etc/Wireguard/public.key / chemin du répertoire de sauvegarde /public.key

8.2 - Dépannage

Ne vous étonnez pas si ça ne fonctionne pas tout de suite au démarrage, les erreurs sont courantes et multiples et on ne les voit pas toujours du premier coup. Bien vérifier l’orthographe des commandes (AllowedIPs, Address, PublicKey, …), les adresses IP saisies, etc…  

Voici quelques problèmes courants rencontrés et les solutions possibles.

 

Le client ne connecte pas au serveur Wireguard

  • Vérifier que le service Wireguard est actif sur le serveur : sudo systemctl status wg-quick@wg0
  • Si le service n'est pas actif, le démarrer avec : sudo systemctl start wg-quick@wg0
  • S’assurer que le port UDP 51850 (ou le port que vous avez choisi) est ouvert sur le pare-feu du serveur : sudo ufw status
  • Si le port n'est pas ouvert, l’ajouter avec la commande : sudo ufw allow 51820/udp
  • Vérifier que l'adresse IP publique du serveur est correcte dans la configuration du client.
  • Examiner les journaux du serveur pour détecter d'éventuelles erreurs avec : sudo journalctl -u wg-quick@wg0 -f
  • Vérifier que le pare feu est actif et ne bloque pas des connexions.

 

Le client se connecte mais n'a pas d'accès Internet

  • Vérifier que la redirection de port (forwarding IP) est bien activée sur le serveur avec : cat /proc/sys/net/ipv4/ip_forward. Si la valeur 0 s’affiche, la redirection peut être activée avec la commande echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
  • S’assurer que les règles NAT sont correctement configurées avec : sudo iptables -t nat -L POSTROUTING. Si les règles sont absentes, les ajouter à l’aide de la commande : sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  • Vérifier la configuration DNS du client. Utiliser le cas échéant un serveur DNS public comme celui de Cloudflare (1.1.1.1) ou de Google (8.8.8.8).

Le réseau est lent

  • Essayer d’optimiser la valeur du MTU en utilisant la commande ping pour trouver la valeur MTU optimale : ping -c 10 -M do -s 1500 google.com
  • Réduire progressivement la valeur (-s) jusqu'à ce que les paquets ne soient plus fragmentés et ajuster la configuration Wireguard en conséquence avec : sudo nano /etc/Wireguard/wg0.conf
  • Ajouter cette ligne dans la section [Interface] du fichier de configuration : MTU = <valeur_optimale>

Déconnexions fréquentes

  • Augmenter la valeur de PersistentKeepalive dans la configuration du client : PersistentKeepalive = 20. Essayer des valeurs supérieures à 20.
  • Vérifier la stabilité de la connexion Internet du serveur et du client.

Problèmes spécifiques aux clients Windows

  • S’assurer que le service Wireguard est en cours d'exécution sur Windows en ouvrant les Services Windows (services.msc) et en recherchant le service "Wireguard Tunnel" pour vérifier qu'il est en cours d'exécution.
  • Vérifier les journaux d'événements Windows pour les erreurs liées à Wireguard.
  • Tenter la réinstallation du client Wireguard si les problèmes persistent.

Problèmes de routage

  • Vérifier que les routes sont correctement configurées sur le serveur et les clients.
  • Utiliser la commande `ip route` pour afficher la table de routage et vérifier que les routes Wireguard sont présentes.

 

8.3 - Bonnes pratiques de sécurité

Pour maintenir un bon niveau de sécurité du VPN Wireguard, suivre ces bonnes pratiques :

Gestion des clés

  • Générer des clés uniques pour chaque client et serveur.
  • Stocker les clés privées de manière sécurisée, avec des permissions restreintes : chmod 600 /etc/Wireguard/privatekey
  • Changer régulièrement les clés (tous les 6 mois par exemple) en générant de nouvelles clés et en mettant à jour les configurations du serveur et des clients. Ne pas oublier de redémarrer les interfaces Wireguard après.

Configuration du serveur

  • Limiter l'accès SSH au serveur :

   - Utiliser de préférence des clés SSH au lieu des mots de passe.

   - Changer le port SSH par défaut.

   - Utiliser le logiciel fail2ban pour bloquer les tentatives de connexion répétées.

  • Sur un VPS mettre en place si possible une authentification à 2 facteurs.
  • Maintenir le système d'exploitation et tous les logiciels à jour (sudo apt update && sudo apt upgrade -y).
  • Utiliser un pare-feu comme UFW et le configurer correctement :
  • sudo ufw default deny incoming
  • sudo ufw default allow outgoing
  • sudo ufw allow ssh
  • sudo ufw allow 51850/udp
  • sudo ufw enable

 

Mise en place d’une authentification à 2 facteurs sur un VPS

Cette mise en place est facultative mais recommandée sur un serveur sur le Cloud. On utilise dans cet exemple Google Authenticator, mais il existe d’autres fournisseurs.

  • Installer et configurer Google Authenticator sur le VPS en lançant les commandes suivantes :
  • apt install libpam-google-authenticator -y
  • google-authenticator
  • Suivre les instructions à l'écran pour configurer l'authentification à deux facteurs.
  • Éditer le fichier de configuration SSH du serveur : nano /etc/ssh/sshd_config
  • Ajoutez ou modifier les lignes suivantes :
  • ChallengeResponseAuthentication yes
  • UsePAM yes
  • Éditer le fichier PAM SSH : nano /etc/pam.d/sshd
  • Ajouter la ligne suivante à la fin du fichier : auth required pam_google_authenticator.so
  • Redémarrer le service SSH du VPS : systemctl restart sshd

 

Configuration des clients

  • Utiliser des configurations uniques pour chaque client.
  • Limiter les AllowedIPs aux adresses nécessaires pour chaque client.
  • Activer si possible un "KillSwitch" sur les clients pour éviter les fuites de données en
  • cas de déconnexion intempestive du VPN.

Mise en place d’un KillSwitch

Pour activer un KillSwitch, ajouter sur les clients les lignes suivantes dans la section [Interface] du fichier de configuration :

Sur Linux :

  • PostUp = iptables -I OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT
  • PostDown = iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT

Sur Windows :

  • Utiliser l'option "Block untunneled traffic (KillSwitch)" dans l'interface graphique de WireGuard.

 

8.4 - Surveillance et journalisation

  • Activer la journalisation sur le serveur Wireguard avec : sudo nano /etc/Wireguard/wg0.conf
  • Ajouter la ligne : LogLevel = verbose
  • Surveiller régulièrement les journaux du serveur : sudo journalctl -u wg-quick@wg0
  • Configurer des alertes pour les activités suspectes.
  • Vérifier régulièrement les connexions actives (surtout sur un VPS) avec la commande : wg show

 

8.5 - Politique d'utilisation

S’il y a plusieurs utilisateurs ou pour une entreprise :

  • Établir une politique claire de l'utilisation du VPN.
  • Former les utilisateurs aux bonnes pratiques de sécurité.
  • Documenter les configurations et les procédures.

8.6 - Tests de sécurité

En entreprise surtout, effectuer des tests de pénétration réguliers.

  • Vérifier périodiquement la configuration pour mieux détecter les erreurs.
  • Utiliser des outils comme Wireguard-tools pour vérifier la configuration.

8.7 - Sauvegarde et récupération

  • Effectuer des sauvegardes régulières de la configuration Wireguard : sudo cp /etc/Wireguard/wg0.conf /chemin du répertoire de sauvegarde/wg0.conf.backup
  • Préparer un plan de récupération en cas de compromission du serveur.

 

9 – Conclusion

Ce VPN va permettre dorénavant de naviguer sur Internet ou de se connecter à un réseau distant de manière plus sécurisée et privée, en utilisant l'adresse IP du serveur VPN.

L'utilisation d'un VPN Wireguard personnel offre de nombreux avantages en termes de sécurité et de confidentialité, mais ce n'est qu'une partie d'une stratégie de sécurité globale. Il faut continuer de garder de bonnes pratiques de sécurité en ligne, Notamment :

  • Utiliser des mots de passe forts.
  • Mettre à jour régulièrement les logiciels et le système.
  • Adopter une navigation prudente sur des sites web inconnus.
  • Ne pas ouvrir inconsidérablement des pièces jointes potentiellement suspectes.
  • Ne pas oublier que Wireguard ne protège pas contre les malwares ou autres trojans que l’on peut attraper.
  • Ne pas oublier pas que bien que le trafic soit chiffré entre le PC client et votre serveur VPN, il ne l'est pas nécessairement entre votre serveur VPN et le site Web de sa destination finale. Utiliser toujours HTTPS lors de la navigation sur les sites web.
  • Se renseigner sur les lois de la confidentialité et la protection des données de son pays et du pays où le serveur VPN est hébergé.
  • Ne pas utiliser pas le VPN pour des activités illégales.
  • Utiliser un gestionnaire de mots de passe comme KeePass pour gérer notamment en toute sécurité les clés et configurations Wireguard.

Ne pas hésiter à explorer davantage les fonctionnalités avancées de Wireguard. Sa flexibilité permet de nombreuses configurations avancées, comme la création de réseaux maillés ou l'utilisation de plusieurs serveurs VPN pour une redondance accrue.

Aucun commentaire

We use cookies
Ce site utilise des cookies. Certains sont essentiels au fonctionnement et d’autres peuvent être placés par des services externes (captchas) intégrés. Vous pouvez décider d'autoriser ou non les cookies. Si vous les rejetez certaines fonctionnalités seront désactivées comme par exemple les vidéos YouTube et des problèmes d'authentification pourront alors survenir.