Security
Difficulte: Intermediate
4 min de lecture

WireGuard : VPN simple et performant

Tutoriel pour installer et configurer WireGuard, une solution VPN moderne, simple et performante pour sécuriser vos connexions réseau.

Retour aux tutoriels
Qu'est-ce que WireGuard ?
WireGuard est une technologie VPN (Virtual Private Network) extrêmement simple, rapide et moderne. Elle vise à remplacer les protocoles plus anciens et complexes comme IPsec et OpenVPN. Avec une base de code beaucoup plus petite, elle est plus facile à auditer et offre des performances de premier ordre, tout en utilisant des algorithmes cryptographiques de pointe.

Pourquoi utiliser WireGuard ?

  • Simplicité : La configuration ressemble à celle de SSH : on échange simplement des clés publiques.
  • Performance : Étant intégré au noyau Linux, il est beaucoup plus rapide que les solutions VPN qui tournent en espace utilisateur comme OpenVPN.
  • Sécurité : Utilise des algorithmes modernes et réputés (ChaCha20, Poly1305, Curve25519).
  • Stabilité : Idéal pour les connexions mobiles, il gère très bien les changements de réseau (ex: passer du Wi-Fi à la 4G).

Prérequis

  • Un serveur Linux (Ubuntu 20.04+ ou Debian 10+ sont parfaits car WireGuard est inclus dans leur noyau).
  • Accès root ou privilèges sudo.
  • Une adresse IP publique statique sur le serveur.

Installation

Sur les distributions récentes, l'installation est très simple.

sudo apt-get update
sudo apt-get install -y wireguard

Configuration Serveur

Étape 1 : Générer les clés

Chaque pair (le serveur et chaque client) a besoin d'une paire de clés (privée et publique).

# Se placer dans le répertoire de configuration
cd /etc/wireguard/

# Générer la clé privée du serveur, et la rendre lisible uniquement par root
umask 077
wg genkey | sudo tee server_private.key

# Dériver la clé publique à partir de la clé privée
sudo cat server_private.key | wg pubkey | sudo tee server_public.key

Faites de même pour chaque client que vous souhaitez connecter. Pour cet exemple, nous en créons une pour `client1` :

wg genkey | sudo tee client1_private.key
sudo cat client1_private.key | wg pubkey | sudo tee client1_public.key

Étape 2 : Créer le fichier de configuration du serveur

Créez le fichier /etc/wireguard/wg0.conf. Le nom `wg0` correspond à l'interface réseau virtuelle qui sera créée.

sudo nano /etc/wireguard/wg0.conf

Collez la configuration suivante, en l'adaptant :

[Interface]
# Adresse IP privée du serveur sur le réseau VPN
Address = 10.0.0.1/24
# Port d'écoute pour les connexions entrantes
ListenPort = 51820
# Clé privée du serveur (à coller ici)
PrivateKey = COLLER_LE_CONTENU_DE_server_private.key

# Ces lignes activent le NAT pour que les clients puissent accéder à Internet via le serveur
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]
# Ceci est la configuration du client1
# Clé publique du client1
PublicKey = COLLER_LE_CONTENU_DE_client1_public.key
# IP privée qui sera assignée à ce client sur le réseau VPN
AllowedIPs = 10.0.0.2/32

Étape 3 : Activer le forwarding IP

Pour que le serveur puisse router le trafic des clients vers Internet, il faut activer le forwarding IP.

sudo nano /etc/sysctl.conf

Décommentez la ligne net.ipv4.ip_forward=1. Puis appliquez la modification :

sudo sysctl -p

Démarrer le VPN

L'outil `wg-quick` permet de gérer facilement les interfaces WireGuard.

# Démarrer l'interface wg0
sudo wg-quick up wg0

# Activer le démarrage automatique au boot du serveur
sudo systemctl enable wg-quick@wg0.service

Configuration Client

Sur la machine cliente, installez WireGuard, puis créez un fichier de configuration /etc/wireguard/wg0.conf.

[Interface]
# Adresse IP privée du client
Address = 10.0.0.2/24
# Clé privée du client
PrivateKey = COLLER_LE_CONTENU_DE_client1_private.key

[Peer]
# Clé publique du serveur
PublicKey = COLLER_LE_CONTENU_DE_server_public.key
# IP publique et port du serveur
Endpoint = IP_PUBLIQUE_DU_SERVEUR:51820
# AllowedIPs = 0.0.0.0/0 permet de router TOUT le trafic du client via le VPN
AllowedIPs = 0.0.0.0/0
# Garde la connexion active
PersistentKeepalive = 25

Démarrez l'interface sur le client avec sudo wg-quick up wg0. Vous êtes connecté !

Vérifier la connexion
Sur le serveur, la commande sudo wg vous montrera l'interface, la clé publique et les informations sur les pairs connectés, y compris le dernier "handshake".

Conclusion

WireGuard a révolutionné le monde des VPN par sa simplicité et ses performances. Sa méthode de configuration, basée sur l'échange de clés publiques, est à la fois intuitive et très sécurisée. Pour des connexions point-à-point ou pour un accès à distance sécurisé, c'est aujourd'hui l'une des meilleures solutions disponibles, et son intégration dans le noyau Linux en fait un standard de facto.

Morgann Riu

Écrit par

Morgann Riu

Expert en cybersécurité et administration Linux. Je partage mes connaissances à travers des tutoriels gratuits et des formations pour aider les administrateurs systèmes et développeurs à sécuriser leurs infrastructures.

Partager ce tutoriel

Cet article vous a plu ?

Commentaires

Checklist Sécurité Linux

30 points essentiels pour sécuriser un serveur Linux. Recevez aussi les nouveaux tutoriels par email.

Pas de spam. Désabonnement en 1 clic.