Tutoriels gratuits et ouverts à toutes et à tous · conçus au Lycée Chevrollier — AngersÀ propos

Série « Recettage informatique » · partie 2 / 3

Exemple de recettage : VPN site à site WireGuard

Cas complet rédigé : recette d’un VPN WireGuard entre deux pare-feux pfSense, du cahier de recette au procès-verbal, avec une anomalie de sécurité détectée et corrigée.

Méthodologie✎ B. Jousseaume📅 16 octobre 2026⏱ 1 h📶 Intermédiaire

Présentation du cas

Une entreprise relie son siège (site A) et une agence (site B) par un VPN site à site WireGuard, configuré sur deux pare-feux pfSense CE. Les postes du siège doivent accéder au serveur de fichiers de l’agence, et uniquement à lui.

Environnement de recette

ÉlémentSite A (siège)Site B (agence)Remarque
Pare-feufw-siteafw-sitebpfSense CE + paquet WireGuard
Adresse WAN203.0.113.10198.51.100.20Plages de documentation
LAN192.168.10.0/24192.168.20.0/24Passerelles en .254
Adresse de tunnel10.10.10.1/3010.10.10.2/30Interface tun_wg0
Machine de testpc-a01 (192.168.10.50)srv-fic-b (192.168.20.10)Poste Windows 11 / serveur de fichiers

Exigences retenues

Réf.Exigence du cahier des charges
E1Un tunnel WireGuard est établi entre fw-sitea et fw-siteb (UDP 51820).
E2Les deux extrémités du tunnel communiquent (10.10.10.1 ↔ 10.10.10.2).
E3Les postes du LAN A joignent le LAN B en passant par le tunnel.
E4Depuis le LAN A, seuls le ping et le partage de fichiers (TCP 445) vers srv-fic-b sont autorisés.
E5Sur le WAN de fw-siteb, seul le flux UDP 51820 provenant de fw-sitea est accepté ; l’interface d’administration n’est pas exposée.
E6Les clés privées ne sont pas divulguées.
E7Le tunnel se rétablit automatiquement après le redémarrage d’un pare-feu.

Fiches de test et preuves

Test 1 : état du tunnel WireGuard

Fiche de test n° 1
Exigence couverteE1, E6
Objectif du testVérifier que le tunnel est configuré et qu’une poignée de main récente a eu lieu avec le pair.
Type de testFonctionnel / Sécurité
PrérequisTunnel et pair configurés sur les deux pfSense.
Procédure1. Sur fw-sitea, ouvrir Diagnostics > Command Prompt.
2. Exécuter wg show.
Résultat attenduPair 198.51.100.20:51820 ; réseaux autorisés 10.10.10.2/32 et 192.168.20.0/24 ; poignée de main de moins de 2 minutes ; clé privée non affichée.
Résultat obtenuConforme.
Preuve(s)Capture 1
Statut☒ Conforme
Anomalie / commentaireAucune.
Re-test après correctionSans objet.

Capture 1 : sortie de wg show sur fw-sitea

interface: tun_wg0
  public key: kP3x…Hc8=
  private key: (hidden)
  listening port: 51820

peer: Q9fZ…a2E=
  endpoint: 198.51.100.20:51820
  allowed ips: 10.10.10.2/32, 192.168.20.0/24
  latest handshake: 38 seconds ago
  transfer: 1.24 MiB received, 2.87 MiB sent
  persistent keepalive: every 30 seconds

Test 2 : communication entre les extrémités du tunnel

Fiche de test n° 2
Exigence couverteE2
Objectif du testVérifier que les deux adresses de tunnel se joignent.
Type de testFonctionnel
PrérequisTest 1 conforme.
Procédure1. Sur fw-sitea, Diagnostics > Ping vers 10.10.10.2, source 10.10.10.1, 3 paquets.
Résultat attendu3 réponses, 0 % de perte.
Résultat obtenuConforme.
Preuve(s)Capture 2
Statut☒ Conforme
Anomalie / commentaireAucune.
Re-test après correctionSans objet.

Capture 2 : ping de 10.10.10.1 vers 10.10.10.2

PING 10.10.10.2 (10.10.10.2) from 10.10.10.1: 56 data bytes
64 bytes from 10.10.10.2: icmp_seq=0 ttl=64 time=4.812 ms
64 bytes from 10.10.10.2: icmp_seq=1 ttl=64 time=4.655 ms
64 bytes from 10.10.10.2: icmp_seq=2 ttl=64 time=4.701 ms
3 packets transmitted, 3 packets received, 0.0% packet loss

Test 3 : routage entre les deux LAN

Fiche de test n° 3
Exigence couverteE3
Objectif du testVérifier qu’un poste du LAN A joint le serveur du LAN B en passant par le tunnel.
Type de testFonctionnel
PrérequisTests 1 et 2 conformes ; route vers 192.168.20.0/24 via le tunnel.
Procédure1. Sur pc-a01, ouvrir PowerShell.
2. Exécuter tracert -d 192.168.20.10.
Résultat attenduTrois sauts : 192.168.10.254, puis 10.10.10.2, puis 192.168.20.10.
Résultat obtenuConforme.
Preuve(s)Capture 3
Statut☒ Conforme
Anomalie / commentaireAucune.
Re-test après correctionSans objet.

Capture 3 : itinéraire de pc-a01 vers srv-fic-b

PS C:\Users\test.user> tracert -d 192.168.20.10
Détermination de l'itinéraire vers 192.168.20.10 avec un maximum de 30 sauts.
  1    <1 ms    <1 ms    <1 ms  192.168.10.254
  2     5 ms     4 ms     5 ms  10.10.10.2
  3     5 ms     5 ms     5 ms  192.168.20.10
Itinéraire déterminé.

Test 4 : filtrage des flux dans le tunnel

Fiche de test n° 4
Exigence couverteE4
Objectif du testVérifier que seuls le ping et TCP 445 vers srv-fic-b sont autorisés depuis le LAN A.
Type de testSécurité
PrérequisTest 3 conforme. Services 445 (SMB) et 3389 (RDP) actifs sur srv-fic-b.
Procédure1. Sur pc-a01, tester le port 445 de srv-fic-b.
2. Tester le port 3389 (non autorisé).
Résultat attenduPort 445 : TcpTestSucceeded True. Port 3389 : TcpTestSucceeded False.
Résultat obtenu1er passage : 3389 joignable (non conforme). 2e passage : 3389 bloqué.
Preuve(s)Captures 4a et 4b
Statut☒ Conforme après correction
Anomalie / commentaireAnomalie majeure (sécurité) : règle « autoriser tout » sur l’interface WireGuard de fw-siteb. Remplacée par des règles restrictives.
Re-test après correction15/10/2026 — Conforme (capture 4b).

Capture 4a : premier passage

PS C:\Users\test.user> Test-NetConnection 192.168.20.10 -Port 445 | Select-Object RemotePort, TcpTestSucceeded
RemotePort TcpTestSucceeded
---------- ----------------
       445             True
PS C:\Users\test.user> Test-NetConnection 192.168.20.10 -Port 3389 | Select-Object RemotePort, TcpTestSucceeded
      3389             True

Correction appliquée sur fw-siteb (Firewall > Rules > WireGuard)

ActionSourceDestinationProtocole / port
AvantToutToutTout (règle supprimée)
Passer192.168.10.0/24192.168.20.10ICMP echo-request
Passer192.168.10.0/24192.168.20.10TCP 445
BloquerToutToutTout (règle explicite, journalisée)

Capture 4b : re-test après correction

PS C:\Users\test.user> Test-NetConnection 192.168.20.10 -Port 445 | Select-Object RemotePort, TcpTestSucceeded
       445             True
PS C:\Users\test.user> Test-NetConnection 192.168.20.10 -Port 3389 | Select-Object RemotePort, TcpTestSucceeded
AVERTISSEMENT : TCP connect to (192.168.20.10 : 3389) failed
      3389            False

Test 5 : exposition du WAN de fw-siteb

Fiche de test n° 5
Exigence couverteE5
Objectif du testVérifier que le pare-feu de l’agence n’expose rien d’autre que WireGuard au pair autorisé.
Type de testSécurité
PrérequisPoste de test autorisé placé sur le réseau WAN du laboratoire (203.0.113.50), différent de fw-sitea.
Procédure1. Relever la règle WAN de fw-siteb.
2. Depuis le poste de test, analyser les ports TCP d’administration de 198.51.100.20.
Résultat attenduUne seule règle WAN : UDP 51820 depuis 203.0.113.10. Ports 22, 80 et 443 non joignables.
Résultat obtenuConforme.
Preuve(s)Capture 5
Statut☒ Conforme
Anomalie / commentaireAucune.
Re-test après correctionSans objet.

Capture 5 : règle WAN et analyse depuis l’extérieur

# Règle WAN de fw-siteb (relevée dans Firewall > Rules > WAN)
Pass  IPv4 UDP  source 203.0.113.10  dest. WAN address  port 51820   « WireGuard site A »

test@poste-wan:~$ nmap -Pn -p 22,80,443 198.51.100.20
Nmap scan report for 198.51.100.20
PORT    STATE    SERVICE
22/tcp  filtered ssh
80/tcp  filtered http
443/tcp filtered https

Test 6 : rétablissement après redémarrage

Fiche de test n° 6
Exigence couverteE7
Objectif du testVérifier que le tunnel remonte seul après le redémarrage de fw-siteb.
Type de testRobustesse
PrérequisTests 1 à 5 conformes.
Procédure1. Sur pc-a01, lancer ping -t 192.168.20.10.
2. Redémarrer fw-siteb.
3. Observer la reprise, puis contrôler wg show sur fw-sitea.
Résultat attenduInterruption pendant le redémarrage, puis reprise sans intervention ; nouvelle poignée de main.
Résultat obtenuInterruption d’environ 1 min 30, reprise automatique.
Preuve(s)Captures 6a et 6b
Statut☒ Conforme
Anomalie / commentaireAucune.
Re-test après correctionSans objet.

Capture 6a : ping continu pendant le redémarrage (extrait)

Réponse de 192.168.20.10 : octets=32 temps=5 ms TTL=126
Délai d'attente de la demande dépassé.
Délai d'attente de la demande dépassé.
   (… 44 lignes identiques non reproduites …)
Réponse de 192.168.20.10 : octets=32 temps=6 ms TTL=126
Réponse de 192.168.20.10 : octets=32 temps=5 ms TTL=126

Capture 6b : wg show sur fw-sitea après la reprise (extrait)

peer: Q9fZ…a2E=
  endpoint: 198.51.100.20:51820
  latest handshake: 12 seconds ago

Synthèse des tests

N°TestStatutAnomalie / réserveRe-test
1État du tunnelConforme——
2Extrémités du tunnelConforme——
3Routage entre LANConforme——
4Filtrage des fluxConforme après correctionMajeure : règle « tout autoriser »Conforme
5Exposition du WANConforme——
6Rétablissement après redémarrageConforme——

Procès-verbal de recette

Procès-verbal de recette
Projet / installationVPN site à site WireGuard fw-sitea ↔ fw-siteb
Bilan des tests6 tests réalisés : 6 conformes (dont 1 après correction), 0 non conforme, 0 avec réserve
Décision☒ Recette prononcée sans réserve
☐ Recette prononcée avec réserves
☐ Recette refusée
Réserves éventuellesAucune.
ObservationPrévoir la sauvegarde des configurations des deux pfSense (fichiers chiffrés : ils contiennent les clés privées) et une supervision de l’état du tunnel.
TesteurNom Prénom — 15/10/2026 — signature
ValideurNom Prénom — 15/10/2026 — signature

🧠 Testez vos connaissances

4 questions. Répondez puis cliquez sur « Corriger ». Rien n’est enregistré : c’est de l’auto-évaluation.

1. Dans la sortie de wg show, quel élément prouve que le tunnel est établi ?

💬 Une poignée de main récente prouve que les deux pare-feux se sont authentifiés mutuellement avec leurs clés.

2. Pourquoi utiliser tracert plutôt qu’un simple ping pour le test 3 ?

💬 Un ping prouve seulement que la destination répond ; le traçage prouve le chemin emprunté.

3. Le tunnel fonctionne, mais le port 3389 du serveur est joignable alors qu’il ne devrait pas l’être. Que conclut-on ?

💬 Un tunnel « qui marche » n’est pas forcément conforme : la règle « tout autoriser » est une anomalie majeure.

4. Après la correction des règles, pourquoi re-tester aussi le port 445 ?

💬 Le re-test vérifie que la correction bloque le flux interdit sans casser le flux attendu.

© 2026 Bruno Jousseaume. Ce cours est publié sous licence CC BY-NC-SA 4.0 : vous pouvez le partager et l’adapter en citant l’auteur et un lien vers cette page, sans usage commercial, et en partageant vos adaptations sous la même licence.

Pour aller plus loin