Réseau
Intermédiaire qui relaie les requêtes pour le compte d'un tiers : côté clients (proxy direct) pour sortir vers Internet, ou devant une application (proxy inverse) pour recevoir le trafic à sa place. Dans les deux cas, chaque partie parle à l'intermédiaire et jamais directement à l'autre.
Proxy direct (sortant) : Placé du côté des postes, il relaie leur trafic vers l'extérieur, applique le filtrage et journalise les accès. On le déclare par les variables HTTP_PROXY et HTTPS_PROXY (NO_PROXY liste les destinations qui le contournent) ou par un fichier PAC (Proxy Auto-Config), une fonction JavaScript FindProxyForURL qui choisit le proxy URL par URL ; pour HTTPS, le client ouvre un tunnel avec la méthode CONNECT.
Proxy inverse : Placé devant une ou plusieurs applications, il termine TLS, route selon le nom d'hôte ou le chemin et transmet l'adresse d'origine dans X-Forwarded-For. Rien n'oblige cet en-tête à dire la vérité, puisque n'importe quel client peut l'écrire lui-même : une application qui le croit sans vérifier qu'il vient de son propre proxy accorde sa confiance au premier client capable de taper une ligne de plus.
Ce que l'intermédiaire voit : En HTTP non chiffré, il voit tout. Derrière un tunnel CONNECT, il voit la destination (hôte et port demandés dans le CONNECT, ou le nom annoncé dans le SNI quand il intercepte sans être déclaré), les volumes et les horaires, mais pas le contenu, sauf interception TLS avec une autorité de certification installée sur les postes ; un proxy inverse qui termine TLS voit, lui, toutes les requêtes en clair.
Ce qui arrive si on s'en passe
Sans proxy direct, chaque poste sort vers Internet par ses propres connexions. Le pare-feu doit alors autoriser le trafic sortant de toutes les machines, aucun point unique ne filtre les destinations et aucun journal central ne relie une requête sortante à son émetteur. Un logiciel malveillant peut ainsi joindre son serveur de commande ou faire sortir des fichiers sans passer par aucun contrôle. Sans proxy inverse, l'application reçoit le trafic en direct : son adresse réelle, son logiciel serveur et ses en-têtes sont visibles, et toute requête malformée atteint son code sans tri préalable. Le chiffrement TLS, la limitation de débit et la journalisation doivent alors être gérés application par application, au risque d'en oublier une. Enfin, remplacer ou redémarrer un serveur devient visible pour les clients, puisqu'aucun intermédiaire ne peut rediriger le trafic.
Explication de la marmotte
Imaginons le gardien d'un grand immeuble. Les habitants ne postent pas leurs lettres eux-mêmes : ils les lui confient, et c'est lui qui les envoie. Il peut refuser certaines adresses et noter qui écrit à qui. Si la lettre est dans une enveloppe fermée, il lit l'adresse, mais pas ce qu'il y a dedans. Il existe aussi le cas inverse : l'accueil d'une entreprise, où tous les visiteurs se présentent d'abord à la même hôtesse, qui les oriente vers le bon bureau. Le visiteur ne sait pas où se trouvent vraiment les bureaux, et l'entreprise n'a qu'une seule porte d'entrée à surveiller.
Où ce terme est utilisé
- Cloudbleed 2017 : fuite mémoire d'un proxy TLS mutualisé (28 occurrences)
- Auditer la couverture réelle du mTLS service mesh (23 occurrences)
- QUIC, HTTP moderne, TLS et proxys applicatifs (21 occurrences)
- Contourner un contrôle proxy par confusion de chemin (19 occurrences)
- Le VPN d'entreprise est-il mort ? (16 occurrences)
- Comment prévenir une attaque Host header injection (14 occurrences)
- Fuite Samsung ChatGPT : code source collé dans un assistant IA (14 occurrences)
- DNSSEC, DoH, DoT, ODoH et perte de visibilité pour la défense (12 occurrences)
- Attaque de l'intercepteur par ARP, DHCP, DNS, Wi-Fi et proxy TLS (11 occurrences)
- Comment contourner un rate limit par rotation d’en-têtes (10 occurrences)
