Cybersécurité

VPN en entreprise : déployer un accès distant sécurisé

11 min de lecture

Ce que vous saurez faire à la fin

  1. Choisir entre OpenVPN, WireGuard, IPsec, Tailscale et SD-WAN.
  2. Installer un serveur WireGuard sur un VPS pour 5-50 utilisateurs.
  3. Configurer les clients Windows, Mac, Linux, iOS, Android.
  4. Sécuriser avec MFA, certificats et révocations.
  5. 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 wireguard puis wg-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.

Choisir une offre →

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.

Partager