WireGuard — un VPN prometteur pour l'avenir ?

WireGuard — un VPN prometteur pour l'avenir ?

Le moment est venu oĂč le VPN n'est plus un outil exotique rĂ©servĂ© aux administrateurs systĂšmes barbus. Les utilisateurs ont des besoins variĂ©s, mais il est indĂ©niable que le VPN est devenu nĂ©cessaire pour tout le monde.

Le problÚme des solutions VPN actuelles est qu'elles sont difficiles à configurer correctement, coûteuses à entretenir et qu'elles contiennent beaucoup de code hérité de qualité douteuse.

Il y a quelques annĂ©es, le spĂ©cialiste canadien de la sĂ©curitĂ© de l'information Jason A. Donenfeld a dĂ©cidĂ© qu'il en avait assez et a commencĂ© Ă  travailler sur WireGuard. Actuellement, WireGuard est en cours d'intĂ©gration dans le noyau Linux, il a mĂȘme reçu des Ă©loges de la part de Linus Torvalds et dans au sĂ©nat amĂ©ricain.

Les avantages déclarés de WireGuard par rapport à d'autres solutions VPN :

  • Facile Ă  utiliser.
  • Utilise une cryptographie moderne : Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Code compact et lisible, plus facile Ă  analyser pour les vulnĂ©rabilitĂ©s.
  • Haute performance.
  • Clair et bien pensĂ© spĂ©cification.

Est-ce qu'une solution miracle a été trouvée ? Est-il temps de mettre OpenVPN et IPSec au placard ? J'ai décidé de me pencher sur la question et j'ai également créé un script pour l'installation automatique d'un serveur VPN personnel.

Principes de fonctionnement

Les principes de fonctionnement peuvent ĂȘtre dĂ©crits comme suit :

  • Une interface WireGuard est créée, Ă  laquelle une clĂ© privĂ©e et une adresse IP sont attribuĂ©es. Les paramĂštres des autres pairs sont chargĂ©s : leurs clĂ©s publiques, adresses IP, etc.
  • Tous les paquets IP entrants sur l'interface WireGuard sont encapsulĂ©s dans UDP et livrĂ©s en toute sĂ©curitĂ© Ă  d'autres pairs.
  • Les clients saisissent l'adresse IP publique du serveur dans les paramĂštres. Le serveur prend automatiquement connaissance des adresses externes des clients lorsqu'il reçoit des donnĂ©es correctement authentifiĂ©es.
  • Le serveur peut changer d'adresse IP publique sans interrompre le service. Dans ce cas, il envoie une notification aux clients connectĂ©s et ceux-ci mettent Ă  jour leur configuration Ă  la volĂ©e.
  • Le concept de routage est utilisĂ© Cryptokey Routing. WireGuard reçoit et envoie des paquets sur la base de la clĂ© publique du pair. Lorsque le serveur dĂ©chiffre un paquet correctement authentifiĂ©, il vĂ©rifie son champ src. S'il correspond Ă  la configuration allowed-ips du pair authentifiĂ©, le paquet est acceptĂ© par l'interface WireGuard. Lors de l'envoi d'un paquet sortant, une procĂ©dure similaire est appliquĂ©e : le champ dst est pris en compte et, sur cette base, le pair correspondant est sĂ©lectionnĂ©, le paquet est signĂ© avec sa propre clĂ©, chiffrĂ© avec la clĂ© du pair et envoyĂ© Ă  l'endpoint distant.

Toute la logique principale de WireGuard occupe moins de 4000 lignes de code, tandis qu'OpenVPN et IPSec en comptent des centaines de milliers. Pour prendre en charge les algorithmes cryptographiques modernes, il est proposé d'intégrer une nouvelle API cryptographique dans le noyau de Linux. Zinc. Actuellement, une discussion est en cours pour déterminer si c'est une bonne idée.

Performance

Le maximum des performances (comparé à OpenVPN et IPSec) sera particuliÚrement visible sur les systÚmes Linux, car WireGuard y est implémenté sous forme de module noyau. De plus, il prend en charge macOS, Android, iOS, FreeBSD et OpenBSD, mais dans ces systÚmes, WireGuard s'exécute en espace utilisateur avec toutes les conséquences sur les performances. Un support pour Windows est promis dans un avenir proche.

Les résultats des benchmarks avec le site officiel:

WireGuard — un VPN prometteur pour l'avenir ?

Mon expérience d'utilisation

Je ne suis pas un expert en configuration VPN. Une fois, j'ai configurĂ© OpenVPN Ă  la main et cela a Ă©tĂ© trĂšs laborieux, et je n'ai mĂȘme pas tentĂ© IPSec. Il y a trop de dĂ©cisions Ă  prendre, et il est trĂšs facile de se tirer une balle dans le pied. C'est pourquoi j'ai toujours utilisĂ© des scripts prĂȘts Ă  l'emploi pour configurer le serveur.

Donc, à mon avis, WireGuard est vraiment idéal pour l'utilisateur. Toutes les solutions de bas niveau sont incluses dans la spécification, c'est pourquoi le processus de préparation d'une infrastructure VPN typique ne prend que quelques minutes. Il est presque impossible de se tromper dans la configuration.

Processus d'installation décrit en détail sur le site officiel, il convient de souligner l'excellente prise en charge d'OpenWRT.

Les clés de chiffrement sont générées par l'outil wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

Ensuite, il faut créer un fichier de configuration serveur /etc/wireguard/wg0.conf avec le contenu suivant :

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

et établir le tunnel avec le script wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

Dans les systĂšmes avec systemd, on peut utiliser Ă  la place sudo systemctl start wg-quick@wg0.service.

Sur la machine cliente, créer un fichier de configuration /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # IP externe du serveur
PersistentKeepalive = 25 

Et Ă©tablir le tunnel de la mĂȘme maniĂšre :

sudo wg-quick up /etc/wireguard/wg0.conf

Il ne reste plus qu'Ă  configurer le NAT sur le serveur pour que les clients puissent accĂ©der Ă  Internet, et c'est tout prĂȘt !

Cette simplicité d'utilisation et la compacité de la base de code ont été réalisées en renonçant à la fonctionnalité de distribution de clés. Il n'y a pas de systÚme complexe de certificats ou tout cet horrible corporate, les clés de chiffrement courtes se distribuent à peu prÚs comme des clés SSH. Cependant, cela pose un problÚme : il ne sera pas si facile d'intégrer WireGuard dans certains réseaux existants.

Parmi les inconvénients, il faut noter que WireGuard ne fonctionnera pas via un proxy HTTP, car il n'utilise que le protocole UDP comme transport. La question se pose, est-il possible d'obfusquer le protocole ? Bien sûr, ce n'est pas la tùche directe d'un VPN, mais pour OpenVPN, par exemple, il existe des moyens de se camoufler sous HTTPS, ce qui aide les habitants des pays totalitaires à utiliser Internet pleinement.

Conclusions

En résumé, c'est un projet trÚs intéressant et prometteur, que l'on peut déjà utiliser sur des serveurs personnels. Quels sont les avantages ? Haute performance sur les systÚmes Linux, simplicité d'installation et de support, base de code compacte et lisible. Cependant, il est encore prématuré de tout transférer sur WireGuard, il vaut mieux attendre son inclusion dans le noyau Linux.

Pour Ă©conomiser mon temps (et le vĂŽtre), j'ai dĂ©veloppĂ© un installateur automatique de WireGuard. Avec celui-ci, vous pouvez mettre en place un VPN personnel pour vous et vos connaissances sans mĂȘme rien y comprendre.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster