TP – Monter un tunnel WireGuard entre un client nomade et un serveur
BTS SIO SISR 1re année – Bloc 3 – S13
Note
But. Situation : Comment permettre à un utilisateur à distance d'accéder au réseau de l'entreprise sans exposer ses échanges ?
Comment ce TP fonctionne. Avant de manipuler, tu écris ce que tu anticipes (« J'anticipe »). Puis tu testes et tu notes ce que tu constates. Tu comprends ce que fait chaque commande (« Je comprends »). Un bilan de compétences clôt la séance. Les manipulations se font sur des machines virtuelles de laboratoire, isolées du réseau de l'établissement. Les identifiants communs d'un TP sont des identifiants de laboratoire : ils ne se réutilisent jamais ailleurs.
Objectif
Monter un tunnel VPN WireGuard entre un poste nomade (client) et un serveur, vérifier que le trafic est chiffré, maîtriser les adresses autorisées, puis analyser des scénarios d'entreprise.
Contraintes
- Binôme, durée : 3 h 20. Deux VM Debian de laboratoire sur un réseau interne isolé.
- Les adresses sont des valeurs de laboratoire. Aucune clé privée ne figure dans le rendu : tu masques les lignes
PrivateKey.
Schéma du laboratoire
| Machine | Interface | Adresse |
|---|---|---|
| Client | réseau interne | 192.168.56.20/24 |
| Client | tunnel wg0 |
10.8.0.2/24 |
| Serveur | réseau interne | 192.168.56.10/24 |
| Serveur | tunnel wg0 |
10.8.0.1/24 |
| Serveur | réseau d'entreprise simulé lan0 |
172.16.0.1/24 |
Partie A. Préparer les machines (30 min)
Sur les deux VM :
sudo apt update && sudo apt install -y wireguard tcpdump
wg --version
sudo mkdir -p /etc/wireguard && sudo chmod 700 /etc/wireguard
Sur le serveur, simule le réseau interne de l'entreprise avec une interface fictive :
sudo ip link add lan0 type dummy
sudo ip addr add 172.16.0.1/24 dev lan0
sudo ip link set lan0 up
ip -br addr
Génère une paire de clés sur chaque machine (jamais sur une autre machine) :
cd /etc/wireguard
wg genkey | sudo tee privee.key | wg pubkey | sudo tee publique.key
sudo chmod 600 privee.key
sudo cat publique.key
Je comprends.
| Commande | Rôle |
|---|---|
wg genkey |
Génère une clé privée |
wg pubkey |
Calcule la clé publique correspondante |
chmod 600 |
La clé privée n'est lisible que par root |
dummy |
Interface virtuelle : simule un réseau derrière le serveur |
Questions.
- Quelle clé échanges-tu avec l'autre machine ? Laquelle ne quitte jamais sa machine ? ______________________
- Quelle est la longueur et l'encodage d'une clé WireGuard ? ______________________
Partie B. Configurer et démarrer le tunnel (50 min)
B1. Serveur : /etc/wireguard/wg0.conf
Remplace <PRIVEE_SERVEUR> par le contenu de privee.key du serveur et <PUBLIQUE_CLIENT> par la clé publique du client.
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <PRIVEE_SERVEUR>
[Peer]
PublicKey = <PUBLIQUE_CLIENT>
AllowedIPs = 10.8.0.2/32
B2. Client : /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.2/24
PrivateKey = <PRIVEE_CLIENT>
[Peer]
PublicKey = <PUBLIQUE_SERVEUR>
Endpoint = 192.168.56.10:51820
AllowedIPs = 10.8.0.1/32, 172.16.0.0/24
PersistentKeepalive = 25
sudo chmod 600 /etc/wireguard/wg0.conf
sudo wg-quick up wg0
sudo wg show
ip -br addr show wg0
ip route
Je comprends.
| Ligne | Rôle |
|---|---|
Address |
Adresse de la machine dans le tunnel |
ListenPort |
Port UDP sur lequel le serveur écoute |
PrivateKey |
Clé privée de cette machine |
[Peer] + PublicKey |
Le pair (l'autre machine) est identifié par sa clé publique |
Endpoint |
Adresse et port réels du serveur (côté client) |
AllowedIPs |
Adresses autorisées pour ce pair : routage à l'envoi, filtrage à la réception |
PersistentKeepalive = 25 |
Envoi d'un paquet toutes les 25 s : maintient le tunnel derrière un NAT |
wg-quick up |
Crée l'interface et ajoute les routes |
J'anticipe. Avant d'essayer : depuis le client, ping 172.16.0.1 va-t-il passer par le tunnel ? Et ping 10.8.0.1 ? ______________________
Éléments de réponse
Oui pour les deux : AllowedIPs du client contient 10.8.0.1/32 et 172.16.0.0/24, donc ces destinations sont routées dans le tunnel. Le serveur accepte les paquets dont la source est 10.8.0.2 (client autorisé).
Questions.
- Que montrent
latest handshakeettransferdanswg show? ______________________ - Quelle route
wg-quicka-t-il ajoutée sur le client pour172.16.0.0/24? ______________________ - Le client peut-il joindre une autre adresse du réseau d'entreprise, par exemple
172.16.0.99? Pourquoi ? ______________________ - Que se passe-t-il si le serveur ne connaît pas (ou a mal recopié) la clé publique du client ? ______________________
Partie C. Observer le trafic (40 min)
Sur le serveur, capture sur l'interface réseau réelle (adapte son nom) pendant que le client fait des ping :
Dans une deuxième console, capture dans le tunnel :
Pendant ce temps, sur le client :
J'anticipe. Sur enp0s3 verras-tu les ping (ICMP) ? Sur wg0 ? ______________________
Éléments de réponse
Sur enp0s3 : seulement des paquets UDP vers le port 51820 dont le contenu est chiffré, pas d'ICMP. Sur wg0 : les ping en clair, car l'interface du tunnel voit le trafic après déchiffrement.
Questions.
- Que voit un observateur placé sur le réseau entre les deux machines ? ______________________
- Que ne voit-il pas ? ______________________
- Que voit-il malgré le chiffrement (adresses, ports, tailles, rythme) ? Pourquoi est-ce acceptable ou non ? ______________________
Partie D. Restreindre et tester (40 min)
D1. Restreindre les adresses autorisées
Sur le client, arrête le tunnel, modifie AllowedIPs pour ne garder que 10.8.0.1/32, puis redémarre :
sudo wg-quick down wg0
# éditer /etc/wireguard/wg0.conf : AllowedIPs = 10.8.0.1/32
sudo wg-quick up wg0
ping -c 2 172.16.0.1
ping -c 2 10.8.0.1
- Le
ping 172.16.0.1fonctionne-t-il encore ? Pourquoi ? ______________________
D2. Tunnel complet
Remets 172.16.0.0/24 et teste AllowedIPs = 0.0.0.0/0 sur le client (sans arrêter l'accès à ton réseau de TP, car la route par défaut passe alors par le tunnel) :
- Quelles routes apparaissent ? Quel est l'effet sur le trafic Internet du client ? ______________________
- Pour quel type de politique de sécurité choisit-on un tunnel complet ? ______________________
D3. Révoquer un client
Sur le serveur, supprime le pair du client sans arrêter le service :
- Le client peut-il encore joindre le serveur ? Comment le constates-tu ? ______________________
- Que faut-il prévoir pour qu'un employé qui perd son ordinateur portable ne laisse pas un accès ouvert ? ______________________
D4. Sécuriser le service
- Quel port le pare-feu de la passerelle doit-il laisser ouvrir pour WireGuard ? ______________________
- Pourquoi ne faut-il pas ouvrir
AllowedIPs = 0.0.0.0/0côté serveur pour un client nomade ? ______________________
Partie E. Analyser des scénarios (20 min)
Pour chaque situation, choisis un type de VPN et un protocole, et justifie.
| # | Situation | Type | Protocole | Mesures de sécurité |
|---|---|---|---|---|
| 1 | 30 télétravailleurs accèdent à l'ERP du siège. | |||
| 2 | Une agence de 8 postes doit être reliée en permanence au siège (deux pare-feu). | |||
| 3 | Un prestataire de maintenance doit accéder à un seul serveur, 2 h par mois. | |||
| 4 | Un salarié veut consulter sa messagerie et l'ERP depuis son téléphone personnel (BYOD). |
Retour en entreprise
Si ta situation le permet : observe comment ton entreprise traite ce sujet, note en quelques lignes l'écart avec le TP, et, avec l'accord de ton tuteur, réalise une partie sur une situation réelle. Anonymise tes captures. Voir Transfert en entreprise.
Bilan de la séance
Remplis ce bilan seul, honnêtement : il sert à décider ce qu'il faut reprendre. Niveau : Non maîtrisé, Maîtrise partielle, Bonne maîtrise ou Excellente maîtrise (le vocabulaire des grilles nationales d'évaluation) ; Non évalué si tu n'as pas travaillé la compétence aujourd'hui.
| Compétence du référentiel | Ce que j'ai fait dans cette séance | Niveau |
|---|---|---|
| B3.4 – Garantir la disponibilité, l'intégrité et la confidentialité des services informatiques et des données de l'organisation face à des cyberattaques | ||
| B3.5A – Assurer la cybersécurité d'une infrastructure réseau, d'un système, d'un service |
Note
Les codes sont ceux du référentiel (l'arrêté numérote des activités : les codes « B… » sont un usage courant).
Je sais faire, sans aide :
- Générer les clés WireGuard d'une machine ;
- Écrire la configuration d'un serveur et d'un client ;
- Vérifier l'état d'un tunnel et son trafic ;
- Restreindre les adresses autorisées dans le tunnel ;
- Distinguer tunnel complet et tunnel partiel.
Ce que je dois reprendre : ______________________
Ma question à poser à l'enseignant : ______________________