Votre VPN de bureau fonctionne — jusqu’à ce qu’il fonctionne trop bien. Quelqu’un se connecte, obtient une IP sur un grand sous‑réseau interne, et soudainement « accès distant » devient silencieusement « proximité distante ». Un ordinateur portable compromis plus tard, vous êtes en intervention d’incident pendant que Slack se remplit de l’équivalent corporatif de la fumée.
Les réseaux plats de VPN rassurent parce qu’ils sont familiers. Ils constituent aussi une taxe de fiabilité et de sécurité que vous continuez de payer avec intérêts. Zero trust n’est pas un produit que vous achetez ; c’est un ensemble de contraintes que vous appliquez : identité, posture de l’appareil et autorisation explicite par application. L’objectif est ennuyeux : rendre le chemin sûr le plus simple, et rendre le mouvement latéral coûteux.
Ce que vous remplacez : le VPN de bureau plat
Un modèle typique de « VPN de bureau » ressemble à ceci :
- L’utilisateur s’authentifie auprès d’un concentrateur VPN (souvent avec MFA, parfois sans).
- Le client obtient une IP interne (ou des routes vers des sous‑réseaux internes).
- Les règles de pare‑feu autorisent un large accès est‑ouest parce qu’« ils sont sur le VPN ».
- Le contrôle d’accès est majoritairement implicite : si vous pouvez router vers une ressource, vous pouvez tenter de vous y connecter.
Cela n’est pas du « zero trust avec un VPN ». C’est du « château‑et‑douves avec un téléporteur ». Ça échoue de façons prévisibles :
- Le mouvement latéral devient bon marché. Les attaquants adorent l’adjacence car elle transforme « un identifiant » en « de nombreux systèmes ».
- L’autorisation est fragmentée. Les équipes applicatives implémentent l’authentification différemment ; les équipes réseau atténuent le problème avec la simple possibilité d’accès.
- La segmentation réseau pourrit. On crée des exceptions, puis elles se copient, et vous vous retrouvez essentiellement à plat.
- La complexité opérationnelle se cache dans le routage. Les débats split tunnel vs full tunnel deviennent des guerres religieuses, pas des décisions d’ingénierie.
Zero trust n’est pas de la poudre magique. C’est un contrat différent : aucun utilisateur ni appareil n’obtient par défaut « l’accès réseau interne ». Ils obtiennent un accès à des applications spécifiques, sur des ports spécifiques, sous des conditions spécifiques, avec une journalisation capable de survivre à une mauvaise journée.
Règle pratique : si votre politique s’exprime par « les utilisateurs VPN peuvent accéder à 10.0.0.0/8 », vous n’avez pas de politique. Vous avez un haussement d’épaules.
Faits et contexte historique qui comptent
Zero trust est souvent commercialisé comme s’il avait été inventé le trimestre dernier. Ce n’est pas le cas. Voici des points concrets qui vous aident à raisonner :
- Les VPN sont devenus courants à la fin des années 1990 avec la standardisation d’IPsec (IKE, ESP). L’objectif était la confidentialité sur des réseaux hostiles, pas l’autorisation fine.
- Les SSL VPN (début des années 2000) ont popularisé l’accès web « sans client » puis des clients full‑tunnel. Ils ont amélioré le déploiement, pas la résistance au mouvement latéral.
- Les hypothèses du périmètre réseau se sont fortement affaiblies à mesure que le SaaS et le cloud déplaçaient les apps « internes » sur l’internet public derrière des connexions plutôt que derrière des sous‑réseaux.
- La microsegmentation est devenue à la mode quand la virtualisation et le SDN ont rendu le filtrage est‑ouest possible sans recâbler les bâtiments. La plupart des organisations ont appris que l’écriture des règles est la partie difficile.
- Le modèle BeyondCorp de Google (mi‑2010s) a promu l’idée que le réseau d’entreprise n’est pas une frontière de sécurité ; l’identité et l’état de l’appareil le sont.
- Le vol d’identifiants a dépassé les maliciels dans de nombreux incidents parce qu’il est moins coûteux de hameçonner un utilisateur que d’exploiter dix hôtes différents.
- « Réseau plat » est souvent un accident, pas un design : fusions, VLAN temporaires et « on nettoiera plus tard » deviennent permanents.
- MFA est nécessaire mais pas suffisante : elle stoppe certaines attaques, mais une fois à l’intérieur d’un VPN plat, le rayon d’impact reste énorme.
- Les produits Zero Trust convergent souvent vers quelques primitives : un fournisseur d’identité, un moteur de politiques, un connecteur/proxy et une télémetrie robuste.
Leçon d’histoire terminée. À retenir : les VPN ont résolu la confidentialité et la connectivité. Zero trust résout l’autorisation et le confinement, en supposant que le réseau est déjà hostile.
Résultat visé : accès basé sur les rôles, pas espoir basé sur les rôles
« Accès basé sur les rôles » dans un contexte Zero Trust pour le bureau signifie :
- Les utilisateurs s’authentifient auprès d’un fournisseur d’identité (IdP).
- Ils sont mappés à des rôles/groupes (Ingénierie, Finance, IT, Fournisseur‑ACME).
- Les politiques accordent l’accès à des applications/services spécifiques selon rôle + posture de l’appareil + contexte.
- La connectivité est scopée à l’application (ou au service), pas au sous‑réseau.
- Chaque événement d’accès est journalisé avec l’identité, l’appareil et la raison de la décision.
L’erreur est de penser que « RBAC » signifie « ajouter des groupes et en rester là ». Le vrai RBAC nécessite :
- Hygiène des rôles : rôles stables, peu de prolifération, propriétaires clairs.
- Inventaire des ressources : vous ne pouvez pas protéger ce que vous ne pouvez pas nommer.
- Frontières d’autorisation : les applications doivent toujours authentifier ; la politique réseau est une seconde ligne, pas le seul verrou.
- Temps de révocation : si le retrait d’accès prend des heures, il se produira pendant les heures que vous ne vouliez pas.
Idée paraphrasée d’une voix SRE notable (citation attribuée) : Werner Vogels a souligné que tout finit par échouer, donc les systèmes doivent être conçus pour tolérer la défaillance.
Appliquez cela ici : supposez que des identifiants fuguent, que des laptops soient compromis et que des réseaux se mal‑routent. Concevez pour que le rayon d’impact soit petit et que la piste d’audit soit exploitable.
Deuxième règle pratique : votre politique doit être lisible par un humain à 2h du matin lors d’une panne. Si la seule personne qui la comprend est en congé parental, vous avez un risque — pas un système.
Blague #1 : Un VPN plat, c’est comme donner à tout le monde une clé passe‑partout parce que vous leur faites confiance pour ne pas ouvrir le local fournitures. Le local fournitures n’est pas d’accord.
Options d’architecture : choisissez votre bataille
Il existe trois grands schémas que vous verrez. Tous peuvent fonctionner ; chacun échoue différemment.
1) ZTNA via un proxy conscient de l’identité (idéal pour HTTP/S et apps modernes)
Les utilisateurs accèdent aux applications web internes via un proxy qui applique l’identité, la posture de l’appareil et la politique. Le proxy se connecte aux services internes via des connecteurs (agents) ou un routage privé. Cela brille pour :
- Apps web (tableaux de bord internes, Git, interfaces CI/CD)
- APIs
- Portails d’administration qui supportent déjà le SSO
Ça peut être maladroit pour :
- Services TCP bruts (bases de données, SSH) à moins que le produit ne les prenne bien en charge
- Clients lourds hérités qui supposent une proximité LAN
2) Tunnels par application (idéal pour TCP/SSH/accès DB avec ciblage explicite)
Au lieu de « se connecter au VPN », l’utilisateur se connecte à « prod-db-readonly » ou « k8s-admin » via un courtier. La connectivité est établie uniquement vers la/les destinations spécifiques autorisées par la politique. C’est là que vous poussez les développeurs et admins quand ils insistent pour « avoir SSH ». Très bien. Ils ont SSH vers des hôtes spécifiques, avec des identifiants de courte durée et de la journalisation.
3) VPN microsegmenté (un pattern de transition, pas l’état final)
Vous conservez un VPN, mais vous arrêtez de router les utilisateurs dans un sous‑réseau interne partagé. Vous émettez des pools IP par rôle et appliquez des ACL strictes. C’est encore une confiance basée sur le réseau, mais au moins ce n’est pas un rayon d’impact unique. Utilisez‑le comme étape si votre paysage applicatif est profondément legacy.
Conseil orienté : préférez le proxy conscient de l’identité pour le web, les tunnels par application pour les protocoles d’administration, et ne gardez un VPN général que pour des cas rares avec une date de retrait.
Modèle de politique : identités, rôles et « qui peut atteindre quoi »
Commencez par un graphe d’accès, pas une carte de sous‑réseaux
Les ingénieurs réseau aiment les plages d’IP parce qu’elles sont concrètes. Le zero trust vous oblige à modéliser quelque chose de plus proche d’un graphe d’accès :
- Sujets : utilisateurs, comptes de service, appareils
- Attributs : rôle, département, score de risque, géré/non géré, version OS, niveau de correctif
- Objets : apps, APIs, bases de données, points d’administration, bastions SSH
- Actions : HTTP GET/POST, SSH, RDP, connexion base de données, kubectl
- Conditions : MFA, posture appareil, géolocalisation, horaire, réseau, référence ticket
Une bonne politique se lit comme une phrase :
- « Les ingénieurs sur appareils gérés avec chiffrement disque et niveau de correctif récent peuvent accéder à Git et CI via HTTPS. »
- « Les SREs d’astreinte peuvent SSHer vers le bastion de production avec MFA et une approbation juste‑à‑temps, sessions enregistrées. »
- « Finance peut accéder à l’application de paie depuis appareils gérés uniquement ; bloquer les appareils non‑gérés et BYOD. »
Définissez les rôles de manière ennuyeuse
Les rôles doivent être stables et grossiers. Vous pouvez toujours ajouter des permissions plus fines ensuite. Vous ne pouvez pas facilement supprimer 400 micro‑rôles une fois que chaque équipe en a un. Commencez par :
- Employé vs contractuel vs fournisseur
- Rôles au niveau du département (Ing, Ventes, Finance, RH)
- Rôles privilégiés (Admin IT, SRE d’astreinte, Sécurité)
- Rôles d’environnement (Accès Prod, Accès Staging)
Puis imposez des contraintes :
- Propriété des rôles : chaque rôle a un propriétaire humain qui approuve l’appartenance.
- Source de vérité de l’appartenance : idéalement HRIS → IdP → système d’accès, avec les exceptions tracées.
- Élévation limitée dans le temps : rôles break‑glass qui expirent.
Ne confondez pas authentification et autorisation
Une identité forte est requise. Mais vous avez toujours besoin de décisions d’autorisation proches de la ressource. En pratique :
- Pour les apps web : utilisez le SSO et appliquez des rôles au niveau de l’app ; le proxy est une porte, pas votre seul verrou.
- Pour SSH : utilisez des certificats de courte durée et des commandes forcées quand possible.
- Pour les bases de données : évitez les mots de passe partagés ; utilisez une auth IAM ou des identifiants par utilisateur ; restreignez le chemin réseau comme seconde couche.
Blague #2 : « Mets‑le derrière le VPN » est l’équivalent sécurité de « redémarre‑le ». Parfois ça marche ; ce n’est jamais une stratégie.
Listes de contrôle / plan étape par étape : migrer sans se brûler
Étape 0 : inventoriez l’usage réel du VPN
- Listez les destinations : sous‑réseaux, noms d’hôte, services, ports.
- Listez les groupes d’utilisateurs : qui se connecte, quand et pourquoi.
- Classez le trafic : apps web, SSH/RDP, bases de données, partages de fichiers, DNS interne, services AD.
Résultat attendu : vous découvrirez que 80 % de l’usage est prévisible et peut être déplacé vers l’accès par application. Les 20 % restants contiennent la bizarrerie.
Étape 1 : choisissez votre point d’application des règles
- Proxy conscient de l’identité pour HTTP/S et apps compatibles SSO.
- Tunnels par application pour SSH/DB/Kubernetes et autres protocoles TCP.
- Conservez le VPN legacy seulement pour « ne peut pas migrer encore », mais réduisez les routes.
Étape 2 : définissez « appareil géré » et imposez la posture
- Choisissez les signaux MDM/EDR auxquels vous faites confiance : chiffrement, niveau de correctif OS, verrouillage écran, agent EDR connu.
- Décidez comment traiter le BYOD : rôle séparé avec accès limité, ou aucun accès aux apps sensibles.
Résultat attendu : l’accès n’est pas seulement « qui vous êtes » mais « ce que vous utilisez ». Les attaquants détestent ça.
Étape 3 : migrez d’abord les apps peu dramatiques
- Wiki interne, tableaux de bord, ticketing, portails de documentation.
- Apps déjà derrière le SSO.
- Apps avec noms d’hôte propres et TLS.
Étape 4 : traitez les protocoles d’administration avec des workflows explicites
- Introduisez un bastion ou un courtier d’accès pour SSH/RDP.
- Mettez en place une élévation juste‑à‑temps pour la production.
- Activez l’enregistrement de session quand c’est faisable.
Étape 5 : réduisez le VPN jusqu’à ce que ce soit embarrassant
- Remplacez les routes 10.0.0.0/8 par uniquement les sous‑réseaux legacy spécifiques.
- Segmentez les utilisateurs par rôle en pools IP séparés et pare‑feu agressivement.
- Fixez une date : « cette route VPN meurt ». Puis tuez‑la réellement.
Étape 6 : mesurez et itérez
- Suivez : requêtes refusées, temps d’intégration de nouvelles apps, tickets support, latence médiane.
- Révisez les politiques trimestriellement comme vous révisez l’astreinte : taillez, simplifiez, réattribuez.
Tâches pratiques (avec commandes) : vérifier, diagnostiquer, décider
Ce sont les types de tâches que vous lancez pendant la migration et lors des tickets « pourquoi je n’atteins pas X ». Chacune inclut ce que la sortie signifie et la décision à prendre.
Task 1: Identify what routes the VPN client is actually installing
cr0x@server:~$ ip route show
default via 192.168.1.1 dev wlp2s0 proto dhcp metric 600
10.0.0.0/8 via 10.8.0.1 dev tun0 proto static metric 50
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.23 metric 50
Ce que cela signifie : Le VPN route un super‑réseau RFC1918 entier (10/8) via tun0. C’est l’adjacence classique du réseau plat.
Décision : Remplacez la route large par un accès par application ou, au minimum, resserrez les routes vers les destinations legacy qui en ont vraiment besoin.
Task 2: Confirm split tunnel vs full tunnel behavior
cr0x@server:~$ curl -s https://ifconfig.me
203.0.113.47
Ce que cela signifie : Votre IP de sortie est celle du FAI public (split tunnel) plutôt que la sortie corporative (full tunnel). Si vous attendez une sortie corporative pour conformité, c’est manqué.
Décision : Pour le zero trust, préférez l’accès scopié par application et évitez d’imposer un full tunnel sauf si vous avez une exigence spécifique (et la capacité) pour cela.
Task 3: Check DNS resolution path (a common migration footgun)
cr0x@server:~$ resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Current DNS Server: 10.0.0.53
DNS Servers: 10.0.0.53 1.1.1.1
DNS Domain: corp.example
Ce que cela signifie : Vous utilisez un serveur DNS interne plus un secours public. Cela peut fuiter des requêtes ou provoquer une résolution incohérente si les zones corp ne sont pas gérées correctement.
Décision : Dans un modèle Zero Trust, décidez quels noms doivent se résoudre en interne et assurez‑vous que votre chemin d’accès fournit le DNS de façon appropriée (split‑horizon, politique DoH ou routage par proxy).
Task 4: Verify that a specific internal service is reachable by policy (TCP)
cr0x@server:~$ nc -vz git.corp.example 443
Connection to git.corp.example 443 port [tcp/https] succeeded!
Ce que cela signifie : Le chemin réseau existe vers le port 443. Si l’app échoue encore, le problème est probablement TLS/SSO/auth app plutôt que le routage.
Décision : Orientez le débogage vers les couches HTTP/TLS/identité, pas les règles de pare‑feu.
Task 5: Diagnose whether the problem is DNS vs connectivity
cr0x@server:~$ dig +short git.corp.example
10.20.30.40
Ce que cela signifie : Le nom se résout en une IP privée. Si vous utilisez un proxy conscient de l’identité, vous ne voudrez peut‑être pas que les utilisateurs résolvent des adresses privées du tout.
Décision : Soit (a) publiez l’app via le proxy avec un nom public qui ne fuit pas d’IP interne, soit (b) assurez‑vous que le tunnel par application couvre cette IP/ce port et que le DNS est cohérent.
Task 6: Confirm TLS and SNI behavior to an app endpoint
cr0x@server:~$ openssl s_client -connect git.corp.example:443 -servername git.corp.example -brief
CONNECTION ESTABLISHED
Protocol version: TLSv1.3
Ciphersuite: TLS_AES_256_GCM_SHA384
Peer certificate: CN=git.corp.example
Verification: OK
Ce que cela signifie : TLS est sain, le certificat correspond, SNI fonctionne. Si les utilisateurs voient des avertissements navigateur, c’est probablement des problèmes d’interception/proxy ou de magasin de confiance sur l’appareil.
Décision : Si votre solution ZTNA effectue la terminaison TLS, assurez‑vous qu’elle présente une chaîne de certificats de confiance et ne casse pas les attentes de l’app.
Task 7: Inspect firewall rules that accidentally kept the network flat
cr0x@server:~$ sudo nft list ruleset | sed -n '1,120p'
table inet filter {
chain forward {
type filter hook forward priority filter; policy drop;
iifname "tun0" ip daddr 10.0.0.0/8 accept
ct state established,related accept
}
}
Ce que cela signifie : Il y a un accept explicite de l’interface VPN vers 10/8. C’est votre autoroute de mouvement latéral.
Décision : Remplacez l’autorisation générique par des règles spécifiques aux apps ou éliminez le forwarding au profit d’un accès via proxy/tunnel.
Task 8: Confirm identity group membership used for RBAC (IdP via SSO token introspection)
cr0x@server:~$ jq -r '.email, .groups[]' /tmp/id_token_claims.json
alex@example.com
role:engineering
env:staging
priv:none
Ce que cela signifie : Les claims de l’utilisateur montrent engineering + staging, sans élévation privilégiée.
Décision : S’ils ont besoin d’accès prod, vous ne « les ajoutez pas juste ». Vous implémentez un groupe privilégié à durée limitée avec approbations et audit.
Task 9: Check device posture signal (managed vs unmanaged) from the endpoint
cr0x@server:~$ sudo osqueryi "select * from disk_encryption;"
device_name = /dev/nvme0n1p3
encrypted = 1
type = luks
Ce que cela signifie : Le chiffrement du disque est activé (bien). C’est un des rares contrôles de posture qui corrèle avec le risque d’un laptop perdu.
Décision : Si le chiffrement est désactivé, bloquez l’accès aux apps sensibles et orientez l’utilisateur vers l’enrôlement. Ne négociez pas avec la physique.
Task 10: Validate that a per-app tunnel is only exposing intended destinations
cr0x@server:~$ ss -tnlp | grep 127.0.0.1:15432
LISTEN 0 4096 127.0.0.1:15432 0.0.0.0:* users:(("ztna-client",pid=2214,fd=9))
Ce que cela signifie : Le client local écoute sur localhost seulement. Bien : il n’ouvre pas un port sur votre LAN ou sur le monde entier.
Décision : Gardez le bind local à 127.0.0.1 pour les tunnels DB ; imposez ce schéma dans vos procédures opérationnelles standard.
Task 11: Confirm audit trail exists for an access attempt
cr0x@server:~$ sudo journalctl -u ztna-connector --since "10 min ago" | tail -n 8
Dec 28 12:11:02 connector-01 ztna-connector[1189]: allow user=alex@example.com app=git-web device=managed policy=eng-web-mfa
Dec 28 12:11:04 connector-01 ztna-connector[1189]: deny user=alex@example.com app=prod-bastion reason=missing_jit_approval
Ce que cela signifie : Vous avez des événements allow/deny explicites avec des raisons. C’est de l’or pendant les incidents et les revues d’accès.
Décision : Si votre système ne peut pas expliquer un deny, il sera contourné. Réparez l’observabilité avant d’étendre le déploiement.
Task 12: Identify latency sources (DNS, connect time, TLS, TTFB)
cr0x@server:~$ curl -o /dev/null -s -w "dns=%{time_namelookup} connect=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n" https://git.corp.example/
dns=0.012 connect=0.031 tls=0.112 ttfb=0.487 total=0.512
Ce que cela signifie : DNS/connect/TLS sont corrects ; la réponse serveur (TTFB) domine. C’est probablement la charge applicative/back‑end ou le buffering du proxy, pas « le VPN est lent ».
Décision : Escaladez vers la performance applicative ou la capacité du proxy ; ne perdez pas des jours à bricoler le MTU si le back‑end est le goulot.
Task 13: Check MTU and path MTU issues (classic VPN pain, still shows up in tunnels)
cr0x@server:~$ ip link show dev tun0
6: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 500
link/none
Ce que cela signifie : Le MTU est à 1280 (commun en environnements tunnellisés). Certains services legacy cassent si vous supposez 1500 et que l’ICMP est blackholed.
Décision : Si vous voyez des blocages sur de gros transferts, validez PMTUD et autorisez les types ICMP nécessaires, ou clamppez MSS à l’edge du tunnel.
Task 14: Confirm whether a “blocked” app is actually being accessed directly instead of via proxy
cr0x@server:~$ traceroute -n git.corp.example | head -n 6
traceroute to git.corp.example (10.20.30.40), 30 hops max, 60 byte packets
1 192.168.1.1 1.103 ms 0.921 ms 0.877 ms
2 203.0.113.1 9.902 ms 10.004 ms 9.811 ms
3 * * *
Ce que cela signifie : Vous tentez de router vers une IP privée via l’internet public (ça va échouer). Cela arrive quand le DNS pointe vers des IP internes mais que les utilisateurs ne sont plus sur le VPN.
Décision : Corrigez le DNS et la publication : les IP privées ne doivent pas fuir vers des clients qui ne sont pas censés avoir un accès au niveau réseau.
Task 15: Verify segmentation boundaries inside the office network (east-west reality check)
cr0x@server:~$ sudo tcpdump -ni eth0 'tcp port 445' -c 5
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), snapshot length 262144 bytes
12:20:11.102938 IP 10.50.12.34.51322 > 10.50.0.10.445: Flags [S], seq 122233, win 64240, options [mss 1460,sackOK,TS val 1 ecr 0,nop,wscale 7], length 0
Ce que cela signifie : Vous voyez des tentatives SMB à l’intérieur d’un environnement supposé segmenté. C’est une surface de mouvement latéral en tenue de camouflage.
Décision : Assurez‑vous que les VLANs postes utilisateurs ne peuvent pas atteindre les VLANs serveurs sauf via des autorisations explicites ; supprimez l’exposition legacy des partages de fichiers là où c’est possible.
Task 16: Validate who is still using the legacy VPN and for what
cr0x@server:~$ sudo awk '{print $1,$2,$3,$9}' /var/log/openvpn/status.log | tail -n 5
CLIENT_LIST alex@example.com 10.8.0.23 192.0.2.44
CLIENT_LIST sam@example.com 10.8.0.24 198.51.100.19
ROUTING_TABLE 10.30.0.0/16 10.8.0.23
ROUTING_TABLE 10.40.0.0/16 10.8.0.24
GLOBAL_STATS Max_bcast_mcast_queue_length 0
Ce que cela signifie : Des utilisateurs tirent encore des routes vers de larges réseaux internes. Les entrées de table de routage montrent ce qu’ils peuvent atteindre.
Décision : Utilisez ces données pour prioriser les cibles de migration et justifier la suppression des routes avec des preuves plutôt qu’avec des impressions.
Playbook de diagnostic rapide : trouver le goulot rapidement
Quand quelqu’un dit « le zero trust a cassé mon accès », ne commencez pas par changer les politiques. Commencez par déterminer quelle couche échoue. Voici l’ordre qui fait gagner du temps.
Premier : résolution de nom et justesse de la destination
- Le nom d’hôte se résout‑il ? Vers quoi — adresse proxy publique ou IP privée ?
- L’utilisateur utilise‑t‑il la bonne URL (porte d’entrée du proxy) vs l’ancien nom interne ?
- Tape‑t‑il dans un favori obsolète qui contourne vos contrôles ?
Deuxième : établissement du chemin (réseau + tunnel/proxy)
- Pouvez‑vous établir un TCP vers le endpoint du proxy/tunnel ?
- Le MTU/PMTUD cause‑t‑il des blocages partiels (gros téléchargements, clones git, pulls d’images) ?
- Y a‑t‑il un routage asymétrique entre le connecteur et l’app ?
Troisième : identité et décision de politique
- L’utilisateur a‑t‑il les bons claims de groupe/rôle ?
- La posture de l’appareil passe‑t‑elle ? (géré, chiffré, conforme)
- La politique refuse‑t‑elle avec une raison visible dans les logs ?
Quatrième : auth applicative et performance
- Boucles SSO ? Erreurs de domaine de cookie ? Confusion de terminaison TLS ?
- Lenteur du back‑end attribuée à tort au « VPN » ?
- Limites de débit ou WAF bloquant à cause de l’IP de sortie du proxy ?
Règle raccourci : si vous ne voyez pas une raison de refus dans les logs en cinq minutes, votre système n’est pas encore exploitable. Réparez la télémétrie avant de poursuivre le déploiement.
Erreurs courantes : symptômes → cause racine → correction
1) « Les utilisateurs n’atteignent pas les apps internes sauf via l’ancien VPN »
Symptômes : Timeouts navigateur ; traceroute montre des sauts publics ; DNS résout des IP privées.
Cause racine : Le DNS split‑horizon renvoie encore des adresses internes aux clients hors réseau ; l’app n’est pas correctement publiée via proxy/tunnel.
Correction : Publiez l’app derrière une porte d’entrée consciente de l’identité avec un nom résoluble pour les clients distants ; arrêtez de laisser fuir des IP internes dans des contextes DNS externes.
2) « ZTNA est plus lent que le VPN » (dit fort, en majuscules)
Symptômes : Clones git lents ; gros téléchargements qui stagnent ; shells interactifs qui laggent.
Cause racine : MTU non adapté, PMTUD bloqué, ou connecteur/proxy sous‑dimensionné. Parfois c’est juste le back‑end qui est lent et que vous le voyez maintenant.
Correction : Mesurez la décomposition des temps (DNS/connect/TLS/TTFB). Autorisez l’ICMP nécessaire pour PMTUD ou clamppez MSS. Scalez horizontalement les connecteurs et placez‑les proches des workloads.
3) « On a ajouté des groupes RBAC, mais les gens ont encore trop d’accès »
Symptômes : Utilisateurs d’un département atteignent des services non liés ; un pentest montre que le mouvement latéral reste possible.
Cause racine : La politique réseau accorde encore une large reachabilité de sous‑réseau ; l’accès applicatif n’est pas réellement scoped par application.
Correction : Retirez les routes de sous‑réseau des appareils utilisateurs. Remplacez par des connecteurs/proxies par application et des listes d’autorisation explicites par identité de service.
4) « Les contractuels accèdent à la prod parce qu’ils sont dans le même ‘Engineering’ »
Symptômes : Drapeaux d’audit ; réunions inconfortables ; intérêt soudain pour la séparation des fonctions.
Cause racine : Les rôles sont modélisés autour de l’organigramme, pas des frontières de risque. Le statut de contractuel n’est pas encodé dans les attributs d’identité.
Correction : Créez des identités/rôles séparés pour contractuels et fournisseurs ; exigez des conditions renforcées (VDI géré, approbations JIT) pour tout accès sensible.
5) « Le SSO boucle indéfiniment » après le proxy d’une app interne
Symptômes : Boucle de redirection ; cookies non persistants ; l’utilisateur voit des invites de connexion répétées.
Cause racine : URLs de callback mal configurées, problèmes de domaine de cookie, hypothèses HTTP/HTTPS mélangées, ou double terminaison TLS qui embrouille l’app.
Correction : Standardisez HTTPS de bout en bout. Alignez l’URL de base de l’app avec l’URL externe du proxy. Validez les redirect URIs de l’IdP et les paramètres des cookies (Secure, SameSite).
6) « L’accès marche depuis les laptops mais échoue depuis les téléphones »
Symptômes : Utilisateurs mobiles refusés ; bureau OK.
Cause racine : Les exigences de posture excluent les appareils non‑gérés ; ou les mobiles manquent du client/certificat requis.
Correction : Décidez explicitement : autoriser un accès mobile limité aux apps à faible risque ou exiger l’enrôlement mobile géré. Ne le supportez pas à moitié en silence.
7) « On a activé le full tunnel pour la ‘sécurité’ et tout a cassé »
Symptômes : Connexions SaaS échouent ; appels vidéo dégradés ; trafic hairpin ; file d’attente helpdesk qui grossit.
Cause racine : La capacité d’egress corporative n’était pas dimensionnée ; les exceptions split tunnel sont désordonnées ; DNS et politiques proxy se contredisent.
Correction : Préférez l’accès scopié par application. Si le full tunnel est requis, investissez dans la capacité, des egress locaux et des règles de routage claires. Mesurez avant et après.
8) « Nos politiques sont correctes, mais les logs sont inutiles »
Symptômes : Événements deny sans contexte ; pas d’ID de corrélation ; incapacité à répondre « qui a accédé à quoi ».
Cause racine : La journalisation n’est pas traitée comme une exigence de première classe ; les données ne sont pas centralisées ; problèmes de synchronisation de l’heure.
Correction : Standardisez les champs de logs (utilisateur, appareil, app, décision, raison). Centralisez dans un SIEM/stockage de logs. Assurez NTP partout.
Trois mini‑histoires d’entreprise issues du terrain
Mini‑histoire 1 : L’incident causé par une mauvaise hypothèse
Une entreprise de taille moyenne a migré vers une nouvelle plateforme d’accès brillante. Le plan de projet disait : « Plus de VPN. Tout est derrière le proxy. » Ils ont coupé le bouton pour l’accès distant et se sont félicités avec une invitation calendrier intitulée « ZTNA done ». Cette invitation a mal vieilli.
L’hypothèse erronée était subtile : ils croyaient que supprimer le client VPN supprimait l’adjacence réseau. En réalité, le Wi‑Fi du bureau restait plat, et les utilisateurs distants avaient encore un profil « VPN legacy » de secours pour des « exceptions ». La liste d’exceptions a grandi tranquillement parce que c’est ce que font les exceptions. Quelques services dépendaient encore de noms DNS internes se résolvant en IP privées, et les gens étaient formés à « utilisez le VPN » quand quelque chose ne se chargeait pas.
Puis un laptop de contractuel a été phishé. L’attaquant n’a pas eu besoin d’exploits sophistiqués ; il a utilisé l’accès VPN du contractuel, a atterri sur un VLAN poste, et a scanné. Les partages de fichiers ont répondu. Une interface de gestion sur un vieil hyperviseur a répondu. La plateforme d’accès n’a pas été contournée ; elle était simplement sans rapport avec les chemins choisis par l’attaquant.
Pendant la réponse, les dashboards de l’équipe étaient pleins de logs proxy montrant « rien de suspect ». Vrai, et aussi inutile. L’activité suspecte se trouvait sur les anciennes routes VPN et le réseau plat du bureau. Le proxy gardait la porte avant pendant que la porte arrière était calée ouverte pour « juste quelques semaines ».
La correction n’a pas été un nouvel outil. Ce fut une décision de frontière : supprimer les routes VPN larges, appliquer la segmentation basée sur les rôles sur les réseaux de bureau, et publier les apps d’une façon qui ne repose pas sur la fuite DNS interne. Ils ont aussi reclassifié les contractuels comme un niveau de risque distinct avec des conditions différentes. Leçon : le zero trust meurt quand vous gardez un chemin réseau de confiance « temporairement ».
Mini‑histoire 2 : L’optimisation qui s’est retournée contre eux
Une équipe IT d’entreprise voulait réduire la latence. Ils ont déplacé leurs connecteurs vers un datacenter central et ont forcé tout le trafic utilisateur distant à transiter par là parce que « une sortie unique est plus facile à surveiller ». La sécurité a accepté, parce que la surveillance rassure et que tout le monde aime les graphiques.
Les plaintes de performance ont commencé en une semaine. Pas parce que la plateforme d’accès était intrinsèquement lente, mais parce que le chemin du trafic était désormais absurde : utilisateur → proxy → connecteur central → workload cloud dans une autre région → retour. Les RTT supplémentaires étaient mortels pour les protocoles bavards et pour les apps avec de nombreuses petites requêtes HTTP. Le volume de tickets a augmenté, et les gens ont commencé à chuchoter la phrase interdite : « On revient au VPN ? »
L’équipe a doublé la CPU et la bande passante des connecteurs. Les coûts ont grimpé ; l’expérience utilisateur s’est à peine améliorée. Le goulot n’était pas le débit brut ; c’était la latence et la conception du chemin. Ils avaient optimisé pour la commodité de la surveillance, pas pour la physique.
La récupération a été de l’ingénierie terre‑à‑terre. Ils ont déployé des connecteurs plus proches des workloads (y compris dans les VPC cloud), utilisé un egress régional lorsque la conformité le permettait, et gardé la surveillance en centralisant les logs plutôt qu’en centralisant les paquets. Ils ont aussi scindé les politiques par sensibilité d’app : la paie a gardé le chemin plus strict ; le wiki interne a pris le plus rapide.
Leçon d’optimisation : « un point de contrôle » est attractif opérationnellement jusqu’à ce qu’il devienne littéralement le point d’étranglement.
Mini‑histoire 3 : La pratique ennuyeuse mais correcte qui a sauvé la mise
Une entreprise avec une culture SRE mature a déployé l’accès par application pour l’administration de production. Rien de spectaculaire : ils ont exigé une élévation juste‑à‑temps pour le SSH prod, utilisé des certificats de courte durée, et enregistré les sessions. L’implémentation était peu glamour. Elle a aussi fonctionné.
Des mois plus tard, le laptop d’un ingénieur senior a été volé dans une voiture. L’ingénieur a fait la bonne chose et signalé rapidement. La sécurité a fait tourner les tokens, révoqué des sessions et retiré la confiance de l’appareil. Tout le monde était quand même tendu parce que « laptop volé » est une phrase qui fait apprendre du vocabulaire aux dirigeants.
Voici ce qui ne s’est pas produit : il n’y a aucune preuve d’accès production depuis cet appareil après le vol. Les logs de session montraient la dernière élévation réussie, et le système d’accès montrait des événements deny pour des tentatives de réutilisation depuis un état d’appareil non‑géré. L’attaquant avait une machine, mais pas la posture, pas les certificats et pas l’approbation JIT.
L’incident s’est résolu sans rotation massive des identifiants de production. Ils n’ont pas dû arrêter la moitié de la flotte pour être sûrs. Ils ont fait une revue ciblée, confirmé que les contraintes tenaient, et sont passés à autre chose. L’actif le plus précieux de l’équipe n’était pas un outil ; c’était une pratique : privilèges limités dans le temps plus pistes d’audit propres.
L’ennuyeux a sauvé la journée. C’est le boulot.
FAQ
1) Le zero trust, c’est juste du « MFA partout » ?
Non. Le MFA aide à prouver l’identité une fois. Le zero trust limite aussi ce que cet utilisateur peut atteindre, depuis quel appareil, sous quelles conditions, et il journalise la décision.
2) Faut‑il éliminer totalement le VPN ?
Non. Mais vous devriez éliminer le routage VPN plat. Gardez un VPN legacy uniquement pour des exceptions clairement définies, avec des routes étroites et un plan de fin de vie.
3) Quelle est la différence entre ZTNA et la microsegmentation ?
ZTNA se concentre sur les décisions d’accès utilisateur→application en se basant sur l’identité et la posture. La microsegmentation se concentre sur les contrôles est‑ouest des workloads. Vous avez généralement besoin des deux : ZTNA réduit le rayon d’impact des utilisateurs ; la microsegmentation réduit ce qu’un serveur compromis peut atteindre.
4) Comment gère‑t‑on l’accès SSH dans un modèle zero trust ?
Utilisez un broker/bastion avec des identifiants de courte durée (certificats), élévation JIT pour la production, et journalisation/enregistrement de sessions. Évitez les clés partagées de longue durée et évitez d’accorder aux laptops un routage large vers les sous‑réseaux serveurs.
5) L’accès basé sur les rôles va‑t‑il exploser en prolifération de rôles ?
Ça arrivera si vous laissez chaque équipe inventer des rôles librement. Mettez des garde‑fous : rôles stables, propriétaires, revues trimestrielles, et préférence pour des rôles grossiers + autorisation au niveau applicatif.
6) Et les comptes de service et l’automatisation — font‑ils aussi du « zero trust » ?
Oui, sinon vous avez construit une porte d’entrée sécurisée et laissé une entrée robotique latérale. Utilisez l’identité workload, des tokens courts et des politiques explicites service→service. Ne tunnelisez pas des réseaux entiers pour des runners CI.
7) Comment éviter de casser les apps legacy qui supposent l’accès LAN ?
Commencez par les isoler : tunnels par application, listes de destinations restreintes et posture stricte. Ensuite planifiez la modernisation : SSO, TLS et suppression des dépendances sur le broadcast, protocoles anciens et partages de fichiers partagés.
8) Quel est le gain rapide avec la plus grande réduction de risque ?
Arrêtez de router les utilisateurs distants vers de larges sous‑réseaux internes. Déplacez les chemins d’administration les plus sensibles (SSH/RDP prod, admin DB) vers des accès par application avec JIT et journalisation.
9) Comment prouver aux auditeurs que ça marche ?
Montrez des politiques explicites, le contrôle des adhésions de groupe, les exigences de posture et des logs d’audit qui répondent : qui a accédé à quoi, quand, depuis quel appareil et pourquoi cela a été autorisé.
10) Si le proxy d’accès tombe — perd‑on tout ?
Si vous le concevez mal, oui. Construisez la redondance : plusieurs connecteurs, health checks et procédures de break‑glass claires avec des élévations de courte durée et auditées. La disponibilité est une exigence de sécurité parce que les pannes créent des contournements.
Conclusion : prochaines étapes qui résistent au réel
Si vous ne retenez qu’une chose, que ce soit celle‑ci : votre objectif n’est pas de remplacer un client VPN par un autre client. Votre objectif est de remplacer la confiance réseau implicite par un accès explicite, basé sur les rôles et conscient de l’identité.
Prochaines étapes
- Inventaire des routes VPN réelles, des destinations et des populations d’utilisateurs. Utilisez les logs, pas des suppositions.
- Publiez les apps web via un accès conscient de l’identité d’abord. C’est la manière la plus rapide de réduire la dépendance aux sous‑réseaux.
- Déplacez l’accès admin (SSH/RDP/kubectl/admin DB) vers des tunnels par application avec identifiants courts et élévation JIT.
- Réduisez le routage VPN agressivement : retirez 10/8 et compagnons. Si quelqu’un « a besoin de tout », il lui faut une revue d’architecture, pas une route.
- Rendez la posture réelle : définissez les appareils gérés, imposez chiffrement et niveau de correctif, et traitez le BYOD comme un niveau séparé.
- Opérationnalisez : journalisation avec raisons de refus, playbook de diagnostic rapide, revue trimestrielle des rôles, et un chemin break‑glass clair qui ne devient pas la valeur par défaut.
Faites cela correctement et votre réseau de bureau cesse d’être un club privilégié où tout le monde reçoit un bracelet qui ouvre toutes les portes. Il redevient ce qu’il aurait toujours dû être : un ensemble de chemins étroitement définis qui existent seulement lorsqu’il y a une raison, et disparaissent quand il n’y en a plus.