Ce que vous saurez faire à la fin
- Choisir entre OpenVPN, WireGuard, IPsec, Tailscale et SD-WAN.
- Installer un serveur WireGuard sur un VPS pour 5-50 utilisateurs.
- Configurer les clients Windows, Mac, Linux, iOS, Android.
- Sécuriser avec MFA, certificats et révocations.
- Déployer un VPN site-à-site entre 2 bureaux.
Durée : 1 journée pour un déploiement de base. Pré-requis : 1 serveur Linux Ubuntu 22.04 LTS (VPS chez Contabo, OVH, AWS, ~5-30 €/mois selon scale), nom de domaine pour DNS, 1 administrateur Linux confirmé, configuration réseau bureau accessible.
Étape 1 — Choisir le bon protocole VPN
| Protocole | Forces | Faiblesses | Cas d’usage |
|---|---|---|---|
| WireGuard | Très rapide, simple, moderne | Adoption récente | 2026 : choix par défaut |
| OpenVPN | Mature, stable, audité | Lent vs WireGuard | Compatibilité existante |
| IPsec / IKEv2 | Natif iOS / Windows | Configuration complexe | Site-à-site fixe |
| Tailscale (Wireguard managé) | Zéro config, mesh, MFA inclus | SaaS payant pour features | PME sans IT dédié |
| NetBird, Twingate | Open source, zero trust | Setup +long | Alternatives à Tailscale |
| SD-WAN (Cisco, Aruba) | Multi-sites entreprise | Coût élevé | 50+ sites |
Étape 2 — Provisionner le VPS pour le serveur WireGuard
Commande : 1 vCPU + 1 Go RAM suffit pour 50 utilisateurs. Distribution : Ubuntu 22.04 LTS ou Debian 12. Configurez :
# Mise à jour et hardening initial
sudo apt update && sudo apt upgrade -y
sudo apt install -y wireguard ufw qrencode
# Pare-feu : autoriser SSH (changez 22 vers un port custom) et WireGuard
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp comment 'SSH custom'
sudo ufw allow 51820/udp comment 'WireGuard'
sudo ufw enable
Étape 3 — Générer les clés serveur
cd /etc/wireguard
sudo wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey
sudo chmod 600 privatekey
# Affichez la clé publique pour les configs clients
cat publickey
Étape 4 — Créer le fichier de config serveur
sudo nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <CLE_PRIVEE_SERVEUR>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# Premier client (à dupliquer pour chaque utilisateur)
[Peer]
PublicKey = <CLE_PUBLIQUE_CLIENT_1>
AllowedIPs = 10.10.0.2/32
Étape 5 — Activer le forwarding IP et démarrer WireGuard
# Activer IP forwarding
sudo sed -i 's/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
sudo sysctl -p
# Démarrer et activer au boot
sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0
sudo wg show
Étape 6 — Générer une config par utilisateur
Script bash add-client.sh pour automatiser. Il prend en paramètres le nom et l’IP, génère les clés, écrit la config client, ajoute le peer côté serveur, recharge WireGuard et affiche un QR code pour mobile. Vous le distribuez à votre admin réseau qui lance ./add-client.sh awa.diop 10.10.0.5 pour chaque nouvel utilisateur.
Étape 7 — Installer le client Windows
Téléchargez WireGuard pour Windows sur wireguard.com/install. Lancez. Importez le fichier .conf généré (Add Tunnel > Import tunnel from file). Cliquez Activate. Vérifiez : ipconfig dans cmd doit montrer une interface WireGuard avec IP 10.10.0.X.
Étape 8 — Installer le client Mac, iOS, Android
- macOS : WireGuard sur App Store. Drag & drop du fichier .conf.
- iOS : WireGuard sur App Store. Scannez le QR code généré (étape 6).
- Android : WireGuard sur Play Store. Scannez QR ou importez .conf.
- Linux :
sudo apt install wireguardpuiswg-quick up client.conf
Étape 9 — Configurer le DNS et le split-tunneling
Décidez du périmètre :
FULL TUNNEL (tout passe par VPN) :
AllowedIPs = 0.0.0.0/0
+ Sécurité maximale
- Plus lent (latence supplémentaire)
SPLIT TUNNEL (seulement réseaux pro via VPN) :
AllowedIPs = 10.10.0.0/24, 192.168.1.0/24
+ Performance
+ Économie de bande passante
- Pas de protection navigation perso
Étape 10 — Ajouter MFA avec un agent (zero-trust)
WireGuard pur n’a pas de MFA. Pour ajouter MFA :
- Tailscale : intègre Google / Microsoft / Okta SSO + MFA natif (8 $/user/mois)
- NetBird : alternative open-source avec SSO
- Twingate : zero-trust avec MFA + posture check
- WireGuard + Wg-meshconf + script auth : setup complexe
Pour PME < 30 utilisateurs : Tailscale est souvent le meilleur compromis.
Étape 11 — Configurer un VPN site-à-site (2 bureaux)
Cas : reliez bureau Dakar (192.168.1.0/24) à bureau Saint-Louis (192.168.2.0/24). Sur chaque routeur ou serveur Linux, installez WireGuard. Le serveur Dakar a en peer le serveur Saint-Louis :
[Peer]
# Bureau Saint-Louis
PublicKey = <PUB_SAINTLOUIS>
Endpoint = saintlouis.votredomaine.com:51820
AllowedIPs = 192.168.2.0/24, 10.20.0.2/32
PersistentKeepalive = 25
Symétrique côté Saint-Louis. Routes statiques côté pare-feu de chaque bureau.
Étape 12 — Surveiller les connexions VPN
Commandes utiles :
# Liste des peers connectés et trafic
sudo wg show
# Logs WireGuard (errors + handshakes)
sudo journalctl -u wg-quick@wg0 -f
# Monitor temps réel avec wg-easy (UI web)
docker run -d --name wg-easy -e PASSWORD=changeme -e WG_HOST=vpn.votredomaine.com -p 51820:51820/udp -p 51821:51821/tcp -v ~/.wg-easy:/etc/wireguard --cap-add=NET_ADMIN ghcr.io/wg-easy/wg-easy
Interface web admin sur port 51821 : add / remove clients, voir trafic.
Étape 13 — Révoquer un utilisateur compromis
En cas de départ ou compromission :
# Identifier le peer dans /etc/wireguard/wg0.conf
sudo nano /etc/wireguard/wg0.conf
# Supprimer le bloc [Peer] de l'utilisateur
# Recharger sans interruption
sudo wg syncconf wg0 <(sudo wg-quick strip wg0)
# Vérifier qu'il est bien out
sudo wg show
Procédure documentée + délai SLA < 30 min après notification RH.
Étape 14 — Auditer la sécurité du VPN trimestriellement
Checklist :
- Patches OS serveur à jour
- Logs analysés (handshakes anormaux, pic de trafic)
- Liste utilisateurs vs effectifs RH
- Test de coupure : VPN inaccessible 5 min, comportement clients
- Backup des configs et clés (chiffrées)
- Test restauration sur serveur de test
Erreurs courantes en VPN d’entreprise
- Mot de passe SSH faible sur le serveur VPN : on perd tout.
- Clés privées partagées entre utilisateurs : impossible de tracer / révoquer.
- VPN sans MFA : 1 mot de passe volé = accès LAN complet.
- Pas de monitoring : brute force ou exfil non détectés.
- Pas de plan B : serveur VPN tombe = télétravailleurs hors-ligne.
Checklist VPN entreprise
✓ Protocole choisi (WireGuard recommandé)
✓ Serveur Ubuntu sécurisé (firewall, SSH custom, no-root login)
✓ Configs clients par utilisateur (1 clé / personne)
✓ DNS interne + split-tunnel défini
✓ Clients déployés (Win, Mac, Linux, iOS, Android)
✓ MFA ajoutée (Tailscale ou agent SSO)
✓ Site-à-site configuré entre bureaux
✓ Monitoring temps réel (wg-easy ou similaire)
✓ Procédure de révocation documentée et testée
✓ Logs centralisés et alertes
✓ Backup des configs chiffrées
✓ Audit trimestriel calé
✓ Plan B (2e VPS, 4G d'urgence)
Un hébergeur abordable pour vos projets
Hostinger combine prix raisonnable et stabilité. Lien partenaire — pas de surcoût pour vous.
Lien d affiliation. Si vous achetez via ce lien, le blog reçoit une petite commission sans surcoût pour vous.
Étape 1 : cadrer le besoin avant tout déploiement
Avant de choisir une technologie, listez les usages réels : combien de collaborateurs travaillent depuis Dakar, Abidjan ou Cotonou ? Quels services internes (ERP, partages SMB, applications métier) doivent-ils atteindre ? Quel volume de données transitera chaque mois ? Cette étape détermine la bande passante du concentrateur, le nombre de licences et le budget mensuel en FCFA (1 EUR = 655,957 FCFA).
Documentez le résultat dans un tableau simple : utilisateur, ville, terminaux, applications cibles, niveau de sensibilité. Ce document servira de référence pour les étapes 2 à 9. Sans ce cadrage, vous risquez de surdimensionner l’infrastructure ou, pire, de laisser passer un cas d’usage critique.
Étape 2 : choisir le protocole adapté
Trois protocoles dominent en 2026 : WireGuard (rapide, code minimal, intégré au noyau Linux récent), OpenVPN (mature, large compatibilité, configuration TLS détaillée) et IPsec/IKEv2 (standard pour les passerelles site-à-site). Pour un déploiement neuf, WireGuard est généralement le bon choix : moins de 4 000 lignes de code à auditer, performances supérieures sur connexion 4G d’opérateur ouest-africain comme Orange ou Mixx by Yas.
sudo apt update && sudo apt install wireguard
wg genkey | tee privatekey | wg pubkey > publickey
Ces commandes installent WireGuard sur Ubuntu 24.04 LTS et génèrent la paire de clés du serveur. Le fichier privatekey ne doit jamais quitter le concentrateur ; publickey sera distribué aux clients.
Étape 3 : provisionner le concentrateur VPN
Choisissez un VPS dans une région proche de vos utilisateurs (Paris OVH ou Francfort Hetzner offrent une latence d’environ 60-90 ms vers Dakar). Pour 10 à 30 utilisateurs simultanés, un serveur 2 vCPU / 4 Go RAM suffit. Comptez environ 8-12 EUR par mois, soit 5 250 à 7 870 FCFA.
Durcissez le système avant tout : désactivez l’authentification SSH par mot de passe, activez le pare-feu UFW, installez fail2ban. Ouvrez uniquement le port UDP 51820 (WireGuard) et le port SSH déplacé sur un port non standard.
Étape 4 : configurer le serveur WireGuard
Créez le fichier /etc/wireguard/wg0.conf avec l’adresse interne du tunnel et le port d’écoute. L’interface wg0 sera la passerelle de votre réseau privé virtuel.
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <contenu de privatekey>
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
Activez le routage IPv4 en ajoutant net.ipv4.ip_forward=1 dans /etc/sysctl.conf puis relancez avec sysctl -p. Démarrez le tunnel avec wg-quick up wg0 ; la sortie attendue affiche l’interface créée et les règles iptables ajoutées.
Étape 5 : enrôler chaque collaborateur
Pour chaque utilisateur, générez une paire de clés dédiée et un fichier de configuration client. N’utilisez jamais la même clé pour deux postes : la révocation deviendrait impossible sans couper l’accès à tout le monde.
wg genkey | tee client1_priv | wg pubkey > client1_pub
Ajoutez ensuite le pair correspondant dans wg0.conf côté serveur, puis créez un fichier client1.conf que vous transmettrez de manière sécurisée (Signal, gestionnaire de secrets type Bitwarden ou clé USB chiffrée). Évitez les messageries non chiffrées de bout en bout pour le partage initial des clés.
Étape 6 : intégrer l’authentification multifacteur
WireGuard ne gère pas nativement le 2FA, mais vous pouvez ajouter une couche supplémentaire avec un portail captif type Authelia ou un proxy OIDC devant les applications internes. Cette couche complémentaire empêche un terminal volé de se connecter même si la clé privée est compromise.
Pour OpenVPN, l’option est plus directe : plugin openvpn-otp ou intégration FreeRADIUS + générateur TOTP. Le code à six chiffres est demandé après la validation du certificat, ajoutant une seconde barrière indépendante.
Étape 7 : segmenter le réseau interne
Une fois connectés, les utilisateurs ne doivent pas accéder à tout. Définissez des règles iptables (ou nftables) qui restreignent chaque sous-groupe à ses seules ressources : équipe commerciale vers le CRM uniquement, équipe technique vers le serveur Git, etc. Le principe de moindre privilège s’applique au VPN comme au reste du SI.
Documentez chaque règle dans un fichier versionné (Git interne ou GitLab self-hosted). En cas d’incident, vous pourrez auditer rapidement qui avait accès à quoi à un instant T.
Étape 8 : journaliser et superviser
Activez la journalisation des connexions VPN (date, IP source, durée, volume échangé) et exportez-la vers un puits central type Loki ou Graylog. Ces journaux servent à détecter les comportements anormaux : connexion depuis un pays inhabituel, volumes inhabituels en dehors des heures ouvrées.
journalctl -u wg-quick@wg0 -f
Cette commande affiche en temps réel les événements WireGuard. Configurez une alerte Prometheus si plus de cinq tentatives de handshake échouent dans la même minute pour un même pair.
Étape 9 : préparer la révocation et la continuité
Lorsqu’un collaborateur quitte l’entreprise ou perd son terminal, sa clé doit être révoquée en moins d’une heure. Concrètement, supprimez le bloc [Peer] correspondant dans wg0.conf et relancez l’interface avec wg syncconf wg0 <(wg-quick strip wg0). Aucun redémarrage complet n’est nécessaire, les autres pairs ne sont pas interrompus.
Prévoyez aussi un concentrateur de secours dans une seconde région, synchronisé via Ansible. En cas de panne du fournisseur principal, un changement DNS (TTL court de 60 secondes) bascule les utilisateurs sur le serveur de repli.
Étape 10 : auditer trimestriellement
Tous les trois mois, réalisez un audit : liste des pairs actifs vs liste RH, dernière connexion par utilisateur, mise à jour du noyau et de WireGuard. Désactivez les pairs inactifs depuis plus de 90 jours. Vérifiez que les sauvegardes des configurations chiffrées (clés exclues) sont restaurables.
Pour étoffer le tableau, consultez nos guides connexes sécuriser l’accès distant en PME et audit de sécurité SI.
Enfin, formez vos équipes : un VPN n’est utile que si chaque collaborateur sait reconnaître une alerte de sécurité, signaler un terminal perdu rapidement et utiliser un mot de passe unique par service. Une session de sensibilisation annuelle d’une heure suffit pour ancrer ces réflexes essentiels et compléter le dispositif technique mis en place.