🔒 VPN — IPsec, OpenVPN & WireGuard
| Formation | BTS SIO option SISR — IRIS Mediaschool |
|---|---|
| Bloc | B2 — Administration Systèmes & Réseaux |
| Module | M2.3 — Infrastructure Réseau Avancée |
| Prérequis | Connaissances TCP/IP, notions de chiffrement, routage de base |
🎯 Objectifs
- Comprendre les principes et cas d'usage d'un VPN
- Différencier les architectures site-to-site et client-to-site
- Maîtriser les mécanismes d'IPsec : IKE, ESP, AH
- Configurer un tunnel OpenVPN avec certificats TLS
- Découvrir WireGuard et son approche moderne
- Comparer les trois technologies et choisir la plus adaptée
📖 Qu'est-ce qu'un VPN ?
Définition
Un VPN (Virtual Private Network) est un tunnel chiffré établi au-dessus d'un réseau public (Internet) qui permet de relier de manière sécurisée deux réseaux distants ou un utilisateur nomade à son réseau d'entreprise. Le trafic qui transite dans le tunnel est chiffré et authentifié, garantissant confidentialité et intégrité des données.
Objectifs d'un VPN
- Confidentialité : les données sont chiffrées, rendant impossible leur lecture par un tiers
- Intégrité : toute modification des paquets en transit est détectée
- Authentification : seuls les pairs autorisés peuvent établir le tunnel
- Extension du réseau : un site distant ou un utilisateur nomade accède au LAN comme s'il était sur place
📖 VPN site-to-site vs client-to-site
VPN site-to-site
Relie deux réseaux d'entreprise de manière permanente. Le tunnel est établi entre deux passerelles VPN (routeurs ou firewalls). Les utilisateurs n'ont aucune configuration à faire : le trafic entre les deux sites est automatiquement encapsulé et chiffré.
VPN client-to-site (roadwarrior)
Permet à un utilisateur individuel (télétravail, déplacement) de se connecter au réseau de l'entreprise. Un logiciel client VPN est installé sur le poste de l'utilisateur. La connexion est établie à la demande.
| Critère | Site-to-site | Client-to-site |
|---|---|---|
| Extrémités | Passerelle ↔ Passerelle | Client ↔ Passerelle |
| Connexion | Permanente | À la demande |
| Configuration utilisateur | Aucune | Client VPN requis |
| Cas d'usage | Interconnexion de sites | Télétravail, mobilité |
📖 IPsec
Architecture IPsec
IPsec est une suite de protocoles standardisée (RFC 4301) qui opère au niveau de la couche réseau (couche 3). Elle se compose de plusieurs mécanismes :
- IKE (Internet Key Exchange) : négocie les paramètres de sécurité et échange les clés
- ESP (Encapsulating Security Payload) : assure le chiffrement et l'intégrité des données
- AH (Authentication Header) : assure uniquement l'authentification et l'intégrité (pas de chiffrement)
Négociation IKE
L'établissement d'un tunnel IPsec se déroule en deux phases :
- Phase 1 (IKE SA) : les deux pairs s'authentifient mutuellement et négocient un canal sécurisé (ISAKMP SA). Paramètres négociés : algorithme de chiffrement (AES-256), algorithme de hachage (SHA-256), méthode d'authentification (PSK ou certificats), groupe Diffie-Hellman
- Phase 2 (IPsec SA) : les pairs négocient les paramètres du tunnel de données (transform set). Une paire de SA (Security Association) unidirectionnelles est créée, identifiées par un SPI (Security Parameter Index)
Modes tunnel et transport
| Mode | Encapsulation | Usage |
|---|---|---|
| Tunnel | L'intégralité du paquet IP original est encapsulé dans un nouveau paquet IP | VPN site-to-site (le plus courant) |
| Transport | Seule la charge utile (payload) est chiffrée, l'en-tête IP reste intact | Communication hôte-à-hôte, L2TP/IPsec |
SA (Security Association) : contrat unidirectionnel définissant les algorithmes et clés utilisés. SPI (Security Parameter Index) : identifiant unique d'une SA dans un paquet ESP/AH. Chaque tunnel IPsec utilise une paire de SA (une par direction).
📖 OpenVPN
Architecture
OpenVPN est une solution VPN open source qui fonctionne en espace utilisateur (userspace). Il utilise la bibliothèque OpenSSL/TLS pour le chiffrement et crée une interface réseau virtuelle (tun pour le mode routé, tap pour le mode pont).
Protocole et ports
OpenVPN encapsule le trafic VPN dans des paquets UDP (port 1194 par défaut) ou TCP. Le mode UDP est recommandé pour les performances. Le mode TCP est utile pour traverser les firewalls restrictifs.
Authentification par certificats TLS
OpenVPN utilise une PKI (Public Key Infrastructure) avec :
- Un certificat CA (autorité de certification) racine
- Un certificat serveur + clé privée
- Un certificat client + clé privée par utilisateur
- Un paramètre DH (Diffie-Hellman) pour l'échange de clés
Configuration serveur OpenVPN
# /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh2048.pem
server 10.8.0.0 255.255.255.0
push "route 192.168.1.0 255.255.255.0"
push "dhcp-option DNS 192.168.1.1"
keepalive 10 120
cipher AES-256-GCM
persist-key
persist-tun
status /var/log/openvpn-status.log
verb 3
Configuration client OpenVPN
# client.ovpn
client
dev tun
proto udp
remote vpn.entreprise.fr 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
cipher AES-256-GCM
verb 3
📖 WireGuard
Architecture moderne
WireGuard est un VPN moderne intégré au noyau Linux (depuis la version 5.6). Il se distingue par sa simplicité (environ 4 000 lignes de code contre 600 000 pour OpenVPN) et ses performances exceptionnelles. Il utilise des primitives cryptographiques modernes et fixes :
- Curve25519 pour l'échange de clés (ECDH)
- ChaCha20 pour le chiffrement symétrique
- Poly1305 pour l'authentification
- BLAKE2s pour le hachage
Clés publiques / privées
WireGuard utilise une paire de clés asymétriques (publique/privée) par pair. Chaque pair connaît la clé publique de ses correspondants. Pas besoin de PKI complète ni de certificats.
# Générer une paire de clés
wg genkey | tee privatekey | wg pubkey > publickey
Configuration WireGuard
# /etc/wireguard/wg0.conf — Serveur
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <clé_privée_serveur>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <clé_publique_client>
AllowedIPs = 10.0.0.2/32
# /etc/wireguard/wg0.conf — Client
[Interface]
Address = 10.0.0.2/24
PrivateKey = <clé_privée_client>
DNS = 192.168.1.1
[Peer]
PublicKey = <clé_publique_serveur>
Endpoint = vpn.entreprise.fr:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
📖 Comparaison IPsec vs OpenVPN vs WireGuard
| Critère | IPsec | OpenVPN | WireGuard |
|---|---|---|---|
| Couche OSI | Couche 3 | Couche 3-4 (userspace) | Couche 3 (kernel) |
| Protocole | ESP/AH sur IP | TLS sur UDP/TCP | UDP |
| Port par défaut | UDP 500, 4500 | UDP 1194 | UDP 51820 |
| Chiffrement | AES, 3DES (configurable) | AES, ChaCha20 (configurable) | ChaCha20 (fixe) |
| Authentification | PSK, certificats | Certificats TLS, LDAP | Clés publiques |
| Performances | Bonnes | Moyennes | Excellentes |
| Complexité | Élevée | Moyenne | Faible |
| Code source | Implémentations variées | ~600 000 lignes | ~4 000 lignes |
| Compatibilité | Routeurs, firewalls, OS | Multiplateforme | Linux, Windows, macOS, mobile |
📖 Split tunneling vs full tunneling
Full tunneling
Tout le trafic du client passe par le tunnel VPN, y compris le trafic Internet. Cela offre une sécurité maximale (tout le trafic est inspecté) mais augmente la charge sur le concentrateur VPN et la latence pour l'accès Internet.
Split tunneling
Seul le trafic destiné au réseau de l'entreprise passe par le tunnel. Le trafic Internet sort directement par la connexion locale du client. Cela réduit la charge sur le VPN mais présente un risque si le poste client est compromis.
En split tunneling, le poste client a simultanément accès à Internet et au réseau interne. Un malware sur le poste pourrait servir de passerelle pour attaquer le réseau d'entreprise. Appliquez des règles de sécurité strictes sur les postes nomades (EDR, pare-feu local, MFA).
📖 Bonnes pratiques sécurité VPN
- Utiliser des algorithmes de chiffrement forts : AES-256, ChaCha20
- Privilégier l'authentification par certificats plutôt que par clé partagée (PSK)
- Activer l'authentification multi-facteurs (MFA) pour les VPN client-to-site
- Renouveler régulièrement les clés et certificats
- Restreindre les accès réseau via le tunnel (ACL, segmentation)
- Surveiller les logs de connexion et détecter les anomalies
- Maintenir les logiciels VPN à jour (correctifs de sécurité)
- Désactiver les protocoles obsolètes : DES, 3DES, MD5, DH group 1/2
📝 QCM — Testez vos connaissances
- Que signifie VPN ?
- Quel protocole VPN est le plus utilisé en entreprise ?
- Quelle est la différence entre un VPN site-à-site et un VPN client ?
- Quel logiciel open source est populaire pour les VPN ?
- Sur quelle couche OSI opère IPsec ?
- Qu'est-ce que WireGuard ?
📝 Afficher les corrections
- Virtual Private Network — Un VPN crée un tunnel chiffré entre deux points à travers un réseau non sécurisé (Internet).
- IPsec — IPsec (Internet Protocol Security) est le standard pour les VPN site-à-site en entreprise.
- Site-à-site relie deux réseaux, client relie un utilisateur à un réseau — Le VPN site-à-site interconnecte deux réseaux d'entreprise, le VPN client permet l'accès distant d'un utilisateur.
- OpenVPN — OpenVPN est une solution VPN SSL/TLS open source, flexible et multi-plateforme.
- Couche 3 (Réseau) — IPsec chiffre et authentifie au niveau IP (couche 3), transparent pour les applications.
- Un protocole VPN moderne et léger — WireGuard est un VPN récent avec un code minimal, des performances élevées et une configuration simple.
IPsec est le standard pour les VPN site-to-site sur équipements réseau. OpenVPN offre une grande flexibilité avec les certificats TLS. WireGuard est la solution moderne la plus performante et la plus simple à déployer. Le choix dépend du contexte : équipements existants, compétences, exigences de performance.
