Logo N0ctua IT
← Cas clients Sécurité Secteur public

Collectivité territoriale — Troubleshooting WAF & accès distants

WAF/WAAP · RD Gateway · Erreurs 502 · Analyse protocolaire WebSocket · Correction reverse proxy

502 Erreur HTTP constatée
1 Cause racine identifiée
WebSocket Protocole en cause
100% Utilisateurs impactés

Le contexte

Notre client est une collectivité territoriale qui met à disposition de ses agents un accès distant à leurs applications internes via Microsoft RD Gateway (Remote Desktop Gateway). Cet accès permet aux agents en télétravail ou en déplacement de se connecter à leur environnement de bureau à distance, à travers un navigateur ou le client RDP natif de Windows.

L'architecture de sécurité repose sur une solution WAF/WAAP positionnée en frontal, qui inspecte et filtre le trafic entrant avant de le relayer vers les serveurs internes. C'est une bonne pratique : le WAF protège les applications exposées sur Internet contre les attaques web classiques (injections, XSS, requêtes malformées, etc.).

Le problème : depuis la mise en place de cette architecture, les utilisateurs distants rencontraient des erreurs 502 (Bad Gateway) de manière systématique lorsqu'ils tentaient de se connecter via le RD Gateway. Les sessions ne s'établissaient pas, rendant l'accès distant totalement inopérant.

Le diagnostic

Ce que les équipes avaient déjà vérifié

Avant notre intervention, l'équipe IT de la collectivité avait déjà réalisé un certain nombre de vérifications :

Tout semblait en ordre, et pourtant le 502 persistait. C'est à ce stade que nous sommes intervenus.

Notre analyse

On a commencé par analyser le flux réseau de bout en bout pour comprendre à quel moment précis la connexion échouait. Le RD Gateway utilise un mécanisme en deux temps :

  1. Phase initiale en HTTPS — le client établit une connexion HTTPS classique vers le Gateway pour l'authentification et la négociation de la session.
  2. Upgrade en WebSocket — une fois authentifié, le client demande un upgrade de la connexion HTTP vers le protocole WebSocket (via l'en-tête Upgrade: websocket). C'est par ce canal WebSocket que transite ensuite le flux RDP encapsulé.

C'est précisément à la phase 2 que le problème se produisait.

💡 Pourquoi WebSocket ?

Le protocole WebSocket permet une communication bidirectionnelle persistante entre le client et le serveur, contrairement au HTTP classique qui fonctionne en requête/réponse. C'est indispensable pour le bureau à distance : le serveur doit pouvoir envoyer des mises à jour d'écran au client en continu, sans que celui-ci ait à les demander à chaque fois.

La cause racine

Le WAF/WAAP était configuré pour relayer le trafic vers le RD Gateway en utilisant son module de reverse proxy HTTP standard. Ce module sait parfaitement gérer les requêtes HTTP/HTTPS classiques : il reçoit la requête du client, l'inspecte, et la transmet au serveur backend.

Mais quand le client RDP demandait l'upgrade en WebSocket, le reverse proxy HTTP ne savait pas gérer cette transition. Concrètement :

En résumé : le trafic passait par le mauvais module de proxy. Il fallait utiliser le module dédié au WebSocket au lieu du module HTTP standard.

⚠️ Un problème fréquent et mal documenté

Ce type de dysfonctionnement est particulièrement piégeux car tout semble correctement configuré côté WAF : les règles de routage sont bonnes, le trafic HTTPS passe, l'authentification fonctionne. Le problème n'apparaît qu'au moment de l'upgrade WebSocket, ce qui le rend invisible dans les logs HTTP classiques. Sans analyse protocolaire fine, on peut tourner en rond pendant des jours.

La préconisation

La correction consistait à reconfigurer la règle de reverse proxy du WAF pour que le trafic à destination du RD Gateway soit traité par le module de proxy WebSocket plutôt que par le module de proxy HTTP standard.

Concrètement, au lieu de faire transiter l'intégralité du flux via le handler HTTP classique, la règle devait :

  1. Détecter la demande d'upgrade WebSocket dans les en-têtes HTTP
  2. Basculer le flux vers le module de proxy dédié WebSocket qui sait maintenir la connexion bidirectionnelle persistante
  3. Conserver le proxy HTTP standard pour la phase initiale d'authentification HTTPS
💡 Approche en deux modules

La bonne architecture pour un RD Gateway derrière un WAF/WAAP repose sur deux modules de proxy complémentaires : le module HTTP pour la phase d'authentification et la négociation initiale, et le module WebSocket pour le tunnel RDP une fois la session établie. Les deux doivent coexister sur la même règle de routage.

Avant / Après

❌ Avant l'intervention

  • Trafic RD Gateway routé intégralement via le module proxy HTTP
  • Upgrade WebSocket non pris en charge
  • Erreurs 502 systématiques pour tous les utilisateurs distants
  • Accès distant totalement inopérant

✅ Après correction

  • Module proxy WebSocket activé pour le trafic RD Gateway
  • Upgrade WebSocket correctement relayé au backend
  • Sessions RDP établies avec succès à travers le WAF
  • Accès distant opérationnel pour l'ensemble des agents

Les livrables

Ce qu'on retient de cette mission

Ce cas illustre un problème classique mais sous-estimé dans les architectures de sécurité applicative : la majorité des WAF/WAAP gèrent très bien le trafic HTTP/HTTPS, mais le support des protocoles basés sur WebSocket nécessite une configuration spécifique qui n'est pas toujours activée par défaut — ni même documentée clairement par les éditeurs.

Le RD Gateway n'est pas le seul service concerné : toute application utilisant WebSocket (visioconférence, outils collaboratifs temps réel, applications métier modernes) peut rencontrer le même problème derrière un reverse proxy ou un WAF mal configuré.

L'autre enseignement : un diagnostic protocolaire rigoureux, couche par couche, permet souvent de résoudre en quelques heures un problème sur lequel les équipes butent depuis des semaines. Ici, l'infrastructure fonctionnait, la configuration semblait correcte, les certificats étaient valides. Seule l'analyse fine du flux au moment de l'upgrade WebSocket a permis d'identifier la cause racine.

À retenir

Si vous publiez un service utilisant WebSocket derrière un WAF ou un reverse proxy, vérifiez systématiquement que le module de proxy WebSocket est activé et correctement configuré pour ce service. Un test fonctionnel complet (pas seulement l'accès à la page d'authentification) est indispensable avant la mise en production.

Un problème applicatif derrière un WAF ?

Erreurs 502, timeouts, services inaccessibles — nous diagnostiquons les dysfonctionnements à la couche applicative et protocolaire.

Discuter de votre projet

N0ctua IT — Intégrateur réseau & sécurité spécialisé en audit Wi-Fi, conception LAN et cybersécurité pour les entreprises.

Sécurité web/API · Audit de sécurité · Contact