Il y a PPTP, L2TP, IPsec, SSTP, OpenVPN … et le petit « nouveau » Wireguard. Quels avantages trouvons-nous à utiliser ce nouvel outil ?
Un système VPN intégré dans les kernels et performant
Wireguard a un avantage assez intéressant vis à vis de ses concurrents, c’est qu’il n’y a aucun daemon qui tourne, c’est le noyau (kernel) qui fait tourner directement la solution. Ainsi, en principe, tant le kernel est vivant, les connexions VPN sont fonctionnelles, on bénéficie également de performances accrues puisque l’intégration est directe
IPSec par exemple, sous Linux,vous demandera strongSwan par exemple pour que les tunnels fonctionnent
Le système fonctionne très bien sous Windows, Linux et FreeBSD
Une sécurité renforcée
Grâce à un code minimaliste (seulement ~4 000 lignes de code contre ~100 000 pour OpenVPN), WireGuard limite les risques de vulnérabilités et facilite les audits de sécurité. Il utilise également un chiffrement moderne par l’utilisation de protocoles éprouvés comme ChaCha20 (chiffrement) et Poly1305 (authentification), combinés à des clés éphémères pour une protection maximale.
Une configuration très simple
Grâce à un système de clé privée / publique et quelques paramètres à indiquer dans le fichier de configuration, il est possible d’avoir une solution de VPN fonctionnelle très rapidement
Dans quel(s) cas est-il utilisé chez Devclic ?
Nous nous en servons beaucoup pour fournir des accès distant à notre réseau (pour nos collaborateurs par exemple), là où par exemple, nous ne voulons pas déployer une alternative comme une FTTH ou bien une FTTO
Il permet facilement d’implémenter du Split Tunnel, ce qui veut dire que vous pouvez choisir de facilement router les paquets vers votre tunnel ou laisser la connexion normale les prendre en charge
Nous nous en servons également pour interconnecter logiquement, certaines parties de notre réseau, si par exemple, nous réalisons un extend to cloud vers un cloud provider quelconque.
Comment le configurer facilement ?
Après avoir installé wireguard, on doit générer une clé privée et une clé publique, pour cela, wireguard propose une commande pour ce faire
# Génération de la clé privée
wg genkey > private/server.key
# Génération de la clé publique
wg pubkey < private/server.key > public/server.keySur chaque client, on réalise cette opération.
Concernant le serveur, on renseigne la clé privée que nous avons générée et sur les clients, on renseigne un Peer contenant la publickey du serveur
Chaque Peer sur le serveur doit contenir la clé publique associée au client et côté client, il faut réaliser l’inverse, renseigner sa clé privée et fournir la clé publique au serveur
[Interface]
Address = 192.168.250.1/24
ListenPort = 51820 # listener port
PrivateKey = XXXXXXXXX
Table = off
[Peer]
AllowedIPs = 192.168.250.2/32
PublicKey = XXXXXXXXX
[Peer]
AllowedIPs = 192.168.250.3/32
PublicKey = XXXXXXXXXXUne petite erreur que nous avons rencontrée au niveau de la partie Address qui est dans l’interface. Il faut bien renseigner le masque réseau global et non un /32. Si vous ne le faites pas, une partie des paquets ne sera pas gérée correctement.
Le /32 ne soit se mettre uniquement que sur le Peer

