1
0
Bifurcation 0
miroir de https://github.com/PAPAMICA/Wiki-Tech.io.git synchronisé 2024-12-29 02:50:22 +01:00

docs: update Sécurité/WireGuard

Cette révision appartient à :
Lucas Meyer 2021-06-28 20:43:57 +00:00 révisé par Mickael Asseline
Parent 9bfc926f3e
révision ebdc2c59fd

Voir le fichier

@ -2,7 +2,7 @@
title: 🔐 WireGuard
description: Comprendre et installer ce VPN nouvelle génération
published: false
date: 2021-06-27T21:11:04.282Z
date: 2021-06-28T20:43:52.648Z
tags: linux, réseau, routage, vpn, wireguard
editor: markdown
dateCreated: 2021-06-27T21:09:12.144Z
@ -19,15 +19,53 @@ WireGuard se veut être plus **simple**, **rapide** et **sécurisé** que les pr
- La **sécurité** est assurée avec l'utilisation de primitives cryptographiques modernes mais aussi par la mise à disposition d'une seule combinaison de méthode de chiffrement. De plus le code complet de WireGuard tient sur environ 4 000 lignes ce qui facilite les audits de sécurité et réduit sa surface d'attaque.
- La **rapidité** tient en grande partie des points précédents mais aussi parce que WireGuard fonctionne au niveau du noyau (seulement sous Linux). Les tests présents sur le site officiel (https://www.wireguard.com/performance/) démontrent un très fort avantage de WireGuard sur OpenVPN et un avantage un peu plus ténu sur IPsec, à la fois en débit maximal atteint et en temps de réponse. A savoir que d'autres tests sont disponibles sur Internet et tendent à placer WireGuard comme le plus performant même si l'écart n'est pas toujours aussi important.
C'est un **VPN de niveau 3** du modèle OSI. C'est-à-dire que c'est la couche *Réseau* (IP, ICMP, ARP et DHCP principalement) qui est redirigée dans le tunnel VPN. Le client VPN pourra atteindre le réseau distant mais ne sera pas vu comme appartenant directement à ce réseau comme on l'aurait avec un VPN de niveau 2 (par exemple avec OpenVPN et l'utilisation de sa carte TAP).
> C'est un **VPN de niveau 3** du modèle OSI. C'est-à-dire que c'est la couche *Réseau* (IP, ICMP, ARP et DHCP principalement) qui est redirigée dans le tunnel VPN. Le client VPN pourra atteindre le réseau distant mais ne sera pas vu comme appartenant directement à ce réseau comme on l'aurait avec un VPN de niveau 2 (par exemple avec OpenVPN et l'utilisation de sa carte TAP).
{.is-info}
# Comment fonctionne WireGuard ?
## Quels sont les prérequis ?
WireGuard est intégré au noyau Linux à partir de la **version 5.6 du noyau Linux**. Toutes distribitions ayant une version égale ou supérieur est donc compatible pour l'utilisation de WireGuard.
Une recherche sur Internet pour vérifier que sa distribution favorite est compatible avec WireGuard est tout de même conseillée.
Pour les autres environnements il est possible d'aller vérifier sur le site WireGuard qu'un portage existe : https://www.wireguard.com/install/. A titre informatif les autres OS principaux sont compatibles à partir de :
- Windows 7 / Windows Server 2012
- macOS 10.14 Mojave
- Android 5.0
- iOS 12.0 / iPadOS 12.0
> Ces informations de compatibilités sont celles annoncées pour la date du 28/06/2021.
{.is-warning}
## Quels flux sont utilisés ?
## Qu'est-ce que le routing cryptographique ?
WireGuard fonctionne uniquement avec le **protocole UDP** (ce qui est recommandé pour un VPN afin d'éviter les problèmes que provoque l'encapsulation TCP dans du TCP).
Aucun port standard n'a été affecté à WireGuard par l'IANA ([liste des ports assignés](https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt)) mais les documentations utilisent généralement le port 51820.
## Qu'est-ce que le routage cryptographique ?
Le nouveau concept central autour du protocole WireGuard est celui du routage cryptographique. Le routage cryptographique associe des adresses IP ou des sous-réseaux à des clefs publiques.
Les clefs cryptographiques fonctionnent à peu près comme celles que l'on retrouve avec le protocole SSH : une paire de clef, l'une dite privé et l'autre publique, sont utilisées afin d'utiliser des mécanismes de chiffrement asymétrique.
Admettons la configuration suivante :
| | IP source | IP WireGuard | Clef privée | Clef publique |
|--------:|:-----------:|:-------------:|:-----------:|:-------------:|
| Serveur | 1.2.3.4/32 | 10.0.0.254/24 | ABC | XYZ |
| Client | 6.7.8.9/32 | 10.0.0.1/24 | 123 | 789 |
Du côté du serveur une association entre l'IP WireGuard du client, *10.0.0.1/24*, sera faite avec sa clef publique, *789*. Le traitement des paquets du côté du serveur seront traités comme ceci :
- Tous paquets entrants seront déchiffrés, à l'aide de la clef privée du serveur *ABC*, et si l'utilisation de la clef publique *789* ainsi que l'IP WireGuard correspond à *10.0.0.1/24* alors les paquets seront acceptés et seront routés normalement.
- Tous paquets sortants ayant pour destination *10.0.0.1/24* seront chiffrées à l'aide de la clef publique associée à l'IP, ici *789*, et envoyée vers la destination via son IP source, ici *6.7.8.9/32*.
> A noter que l'exemple est très simpliste, en condition réelle une clef privée peut être associée à différentes IP ou réseaux pour l'interface WireGuard. De même plusieurs clients sont en général rattachés à un serveur, la non duplication des routes ou adresses est essentielle pour ne pas causer des problèmes de routage ainsi que des difficultés pour retrouver la clef publique du client.
{.is-info}
# Installation et configuration
@ -37,7 +75,9 @@ C'est un **VPN de niveau 3** du modèle OSI. C'est-à-dire que c'est la couche *
### Configuration manuelle
### Générer le QR Code de configuration
### Informations sur les clients connectés
### Générer le QR code de configuration
## Client
@ -45,6 +85,8 @@ C'est un **VPN de niveau 3** du modèle OSI. C'est-à-dire que c'est la couche *
#### Utilisation de wg-quick
#### Configuration manuelle
#### Configuration avancée : utilisation des espaces de noms réseaux
### Configuration du client sur les autres plateformes