Qu’est-ce que WireGuard et comment fonctionne un VPN WireGuard ?
WireGuard est un protocole de réseau privé virtuel (VPN) moderne qui permet d’établir des connexions sécurisées et chiffrées entre des appareils. Grâce à une base de code simple et à hautes performances, il s’est imposé comme une alternative puissante et économe en ressources aux anciens protocoles VPN comme IPsec et OpenVPN. Dans cet article, vous découvrez ce qui distingue WireGuard des autres protocoles VPN, comment il fonctionne et comment installer cette solution VPN WireGuard sur votre propre système.
Qu’est-ce que WireGuard ?
WireGuard est un protocole VPN open source utilisé pour établir des tunnels chiffrés entre des appareils. Les flux de données sont dirigés via ce tunnel et sont ainsi protégés contre tout accès non autorisé sur Internet. En plus d’un chiffrement robuste, le protocole propose également des optimisations pour les systèmes mobiles et l’Internet des objets (IoT). Le logiciel est publié sous licence libre GPLv2 et est disponible sur plusieurs plateformes. WireGuard est écrit en C et en Golang et fonctionne sous Windows, macOS, BSD, iOS et Android.
Depuis 2020, il est directement intégré au noyau Linux. Comme Linux est largement utilisé sur des milliards d’appareils connectés dans le monde, le protocole peut être utilisé pratiquement partout. Grâce à sa configuration simple et à sa faible charge système, il est de plus en plus utilisé par des services VPN et des entreprises.
Quelles fonctionnalités offre WireGuard ?
Une caractéristique centrale de WireGuard est le Cryptokey Routing. Dans ce procédé, les plages d’adresses IP autorisées à l’intérieur d’un tunnel sont associées à la clé publique d’un partenaire de connexion. Les paquets entrants d’un partenaire sont déchiffrés à l’aide de sa clé publique. Un paquet entrant n’est délivré après déchiffrement que s’il provient d’une adresse IP correspondant à la clé. Dans le cas contraire, le paquet est rejeté.
Contrairement aux anciens protocoles VPN comme IPsec et OpenVPN, WireGuard repose sur un ensemble fixe de primitives de chiffrement modernes, sans négociation. Alors que les protocoles traditionnels définissent les paramètres de chiffrement lors du handshake, le protocole s’appuie sur une combinaison d’algorithmes prédéfinie et versionnée. Si l’un de ces algorithmes de chiffrement est jugé obsolète ou vulnérable à l’avenir, une nouvelle version du protocole est publiée avec des algorithmes mis à jour, garantissant ainsi un niveau de sécurité élevé pour un VPN WireGuard.
Le protocole utilise des algorithmes de chiffrement modernes et hautement sécurisés, parmi lesquels :
- Noise Protocol Framework pour les processus de handshake et d’échange de clés
- Curve25519 pour un échange de clés sécurisé
- ChaCha20 pour le chiffrement symétrique
- Poly1305 pour l’authentification
- BLAKE2 pour une fonction de hachage rapide et sécurisée
- SipHash24 pour la génération de hachages sécurisés
- HKDF pour un processus de dérivation de clés sécurisé
Quels sont les avantages de WireGuard ?
WireGuard offre de nombreux avantages qui en font un choix privilégié pour les connexions VPN modernes. Aperçu des principaux atouts :
- Base de code légère : avec seulement environ 4 000 lignes de code, le protocole dispose d’une base de code nettement plus réduite qu’OpenVPN ou IPsec (environ 100 000 à 600 000 lignes). Cette réduction rend le protocole plus sûr, car les bugs sont plus faciles à détecter, et plus économe en ressources, puisqu’il nécessite moins de puissance de calcul.
- Performances supérieures : grâce à une complexité réduite, WireGuard offre une vitesse de transfert plus élevée et une latence plus faible que de nombreux protocoles concurrents. Cela le rend idéal pour les applications nécessitant une connexion rapide et stable, comme le streaming, le gaming en ligne et la visioconférence.
- Efficacité énergétique : WireGuard n’est actif que lorsqu’il y a réellement des données à transmettre. Cette économie d’énergie est particulièrement avantageuse pour les appareils mobiles, car elle prolonge l’autonomie de la batterie.
- Prise en charge du roaming : WireGuard prend en charge la transition fluide entre le Wi-Fi et les réseaux mobiles sans perte de connexion. Et si la connexion est tout de même interrompue, la reconnexion est généralement plus rapide qu’avec d’autres protocoles VPN.
- Configuration simple : par rapport à d’autres protocoles VPN, WireGuard ne nécessite pas de paramétrage manuel d’une multitude d’options de chiffrement. Il utilise une configuration prédéfinie, accessible aussi bien aux utilisateurs expérimentés qu’aux débutants.
Comment fonctionne WireGuard ?
WireGuard est un protocole VPN Peer-to-Peer décentralisé, qui ne repose pas sur un serveur central obligatoire. À la place, un tunnel peut être établi directement entre deux appareils (« peers »). Un serveur WireGuard est, dans ce cas, simplement un appareil qui contient des données de configuration pour plusieurs peers.
L’établissement de la connexion fonctionne de manière similaire à Secure Shell (SSH) : les peers génèrent des paires de clés publiques et privées, les échangent et les utilisent pour l’authentification et le chiffrement des données transmises. Le chiffrement repose sur des méthodes de chiffrement modernes qui garantissent un haut niveau de sécurité.
Outre la création des clés de chiffrement, il est nécessaire de définir sur les peers des paramètres réseau et de routage (voir notre tutoriel plus bas). Cela comprend la configuration des plages d’adresses IP autorisées, qui sont associées aux clés publiques. Seuls les paquets provenant de ces adresses IP sont acceptés.
L’envoi des données s’effectue via le User Datagram Protocol (UDP), privilégié pour sa rapidité et son efficacité. Il ne nécessite pas une correction d’erreurs étendue comme le Transmission Control Protocol (TCP), ce qui permet une transmission plus rapide.
La configuration s’effectue généralement via l’outil en ligne de commande WireGuard et des outils réseau courants. Pour les utilisateurs moins expérimentés, des services VPN commerciaux proposent des applications conviviales pour une configuration simplifiée.
Comment débuter avec WireGuard ?
En principe, WireGuard peut être installé et configuré avec peu d’effort sur un système Linux. Sur les versions plus récentes d’Ubuntu (à partir de la 20.04 LTS), le protocole est déjà intégré comme module du noyau, ce qui évite l’installation supplémentaire de repositories de type Personal Package Archive (PPA). Exécutez simplement la commande suivante :
sudo apt install wireguardbash
Comment installer WireGuard sur votre propre système ?
L’installation de WireGuard sur votre propre système est simple et peut être effectuée avec quelques commandes.
Pour Ubuntu 20.04 LTS ou version ultérieure :
Le protocole est déjà intégré en tant que module du noyau, de sorte qu’aucun dépôt PPA supplémentaire n’est nécessaire. Exécutez simplement la commande suivante :
sudo apt update
sudo apt install wireguardbashPour les anciennes versions d’Ubuntu :
Ici, vous devez ajouter le PPA de WireGuard pour procéder à l’installation :
sudo add-apt-repository ppa:wireguard/wireguard
sudo apt update
sudo apt install wireguardbashGénérer des clés WireGuard
Comme de nombreux autres protocoles VPN modernes, WireGuard repose sur l’utilisation de clés pour créer des connexions sécurisées entre pairs. Chaque pair a besoin d’une paire de clés privée et publique. La clé privée reste toujours secrète, tandis que la clé publique est partagée avec les autres pairs.
Exécutez les commandes suivantes dans la ligne de commande pour générer une clé privée et une clé publique WireGuard :
# Créer le répertoire des clés et définir les permissions
sudo mkdir -p /etc/wireguard/keys
sudo chmod 700 /etc/wireguard/keys
cd /etc/wireguard/keys
# Définir umask pour que seul root puisse lire/écrire
umask 077
# Générer la clé privée et l’enregistrer dans un fichier
wg genkey | tee privatekey | wg pubkey > publickey
# Vérifier l’affichage des clés générées
sudo cat privatekey
sudo cat publickeybashLes clés doivent être créées et stockées dans un environnement sécurisé. Les commandes ci-dessus conviennent à des fins de test. En environnement de production, des mesures de sécurité supplémentaires doivent être mises en place, comme l’utilisation de répertoires sécurisés et de contrôles d’accès.
Configurer les paramètres réseau
Une fois les clés générées, certaines configurations réseau et de routage doivent être effectuées sur chaque pair. Cette configuration est essentielle pour permettre la communication sécurisée entre les pairs.
Essentiellement, un fichier de configuration est créé, qui contient notamment les informations suivantes :
- Clés privées et publiques des pairs
- Adresses IP autorisées (les plages d’IP avec lesquelles le pair est autorisé à communiquer)
- Adresses des pairs, associées aux clés publiques respectives
Un exemple de configuration de base d’une connexion WireGuard pourrait ressembler à ceci :
[Interface]
# IP VPN interne du serveur
Address = 10.0.0.1/24
# Clé privée (du serveur)
PrivateKey = <SERVER_PRIVATE_KEY>
# Port UDP sur lequel WireGuard accepte les connexions
ListenPort = 51820
# Pair client
[Peer]
# Clé publique du client
PublicKey = <CLIENT_PUBLIC_KEY>
# IP VPN interne attribuée au client
AllowedIPs = 10.0.0.2/32txtTester la connexion et activer WireGuard
Une fois le protocole installé et configuré sur votre système, il est temps de tester la connexion et d’activer l’interface réseau. Cela peut se faire via la ligne de commande en exécutant les commandes suivantes :
1. Activer l’interface réseau
Vous devez d’abord activer l’interface WireGuard que vous venez de configurer :
sudo systemctl enable --now wg-quick@wg0bashCette commande active l’interface WireGuard (wg0) que vous avez créée auparavant. Si cette commande s’exécute avec succès, la connexion doit être prête à envoyer des données.
2. Tester la connexion
Pour vous assurer que la connexion fonctionne, vous pouvez utiliser la commande ping pour vérifier si l’appareil distant est joignable. Exemple :
ping 10.0.0.2bashRemplacez l’adresse IP par celle du pair distant auquel vous êtes connecté. Si le ping réussit, cela signifie que la connexion VPN fonctionne.
3. Dépannage
Si la connexion ne fonctionne pas comme prévu, vérifiez les points suivants :
- Assurez-vous que les adresses IP sont correctement configurées.
- Vérifiez que les clés publiques et privées ont été correctement échangées.
- Assurez-vous que le pare-feu est configuré sur les deux appareils pour autoriser le trafic WireGuard (généralement via le port 51820).
Si les problèmes persistent, vous pouvez également redémarrer le service WireGuard :
sudo systemctl restart wg-quick@wg0bash
