đ Proxy â Forward, Reverse, Caching & SĂ©curitĂ©
Guide complet IDEO-Lab sur les proxys, médiateurs essentiels du réseau (L7).
Définition (Proxy)
Médiateur (intermédiaire) de Couche 7.
Proxy Couche 7 Médiateurvs. NAT & VPN
Proxy (L7) vs NAT (L3/L4) vs VPN (Tunnel L3/L4).
Proxy NAT VPNForward vs. Reverse
La distinction clé (Client vs Serveur).
Forward Proxy Reverse ProxyForward Proxy (Sortant)
Le proxy "au nom du client" (filtrage, anonymat).
Client-side FiltrageUsage : Caching (Forward)
Mise en cache (Squid) pour économiser la bande passante.
Caching SquidUsage : Filtrage (Forward)
ContrĂŽle d'accĂšs entreprise (blocage URL/Contenu).
Filtrage ContrĂŽleUsage : Anonymat
Masquage de l'adresse IP du client.
Anonymat IPTypes : Transparent
Non-anonyme (X-Forwarded-For), souvent forcé (FAI).
Types : Anonymous & Elite
Anonyme (cache l'IP) vs Elite (cache l'IP & son existence).
Anonymous EliteReverse Proxy (Entrant)
Le proxy "au nom du serveur" (façade).
Server-side NginxUsage : Load Balancing
Répartition de charge (Round Robin, Least Conn).
Load Balancing HAUsage : SSL Offloading
Terminaison SSL (HTTPS -> HTTP). (Performance).
SSL Offloading TLSUsage : WAF
Web Application Firewall (Filtrage L7, anti-XSS/SQLi).
WAF Sécurité OWASPUsage : Caching (Reverse)
Cache statique/dynamique (Varnish, Nginx).
Caching VarnishOutil : Nginx
Le standard de facto pour le Reverse Proxy.
Nginx HAProxyProtocoles : HTTP vs SOCKS
HTTP (L7, web) vs SOCKS (L4/L5, tout TCP/UDP).
HTTP Proxy SOCKS5Outil : Squid
Le standard de facto pour le Forward Proxy (Cache/Filtre).
Squid Open SourceCheat-sheet
Résumé Forward vs Reverse (Usages).
Checklist RésuméLe Médiateur (Intermédiaire)
Un Proxy (Serveur mandataire) est un serveur (un appareil ou une application) qui agit comme intermĂ©diaire pour les requĂȘtes des clients (ex: votre navigateur) cherchant des ressources auprĂšs d'autres serveurs (ex: un site web).
Il opĂšre principalement Ă la Couche 7 (Application) du modĂšle OSI. Il "comprend" le protocole (ex: HTTP) et peut analyser, modifier, et mettre en cache le trafic.
La Double Connexion
Un proxy brise la connexion directe. Il établit deux connexions distinctes :
- Connexion 1 : Le Client se connecte au Proxy.
- Connexion 2 : Le Proxy se connecte au Serveur (au nom du client).
[CLIENT] <---- (Connexion 1) ----> [PROXY] <---- (Connexion 2) ----> [SERVEUR WEB]
Ces trois technologies masquent l'IP, mais sont fondamentalement différentes.
| CritĂšre | Proxy | NAT (PAT) | VPN |
|---|---|---|---|
| Niveau OSI | Couche 7 (Application) | Couche 3/4 (Réseau/Transport) | Couche 3/4 (Tunnel) |
| Fonction | Médiateur (Intermédiaire) | Traducteur (IP/Port) | Tunnel (Encapsulation) |
| Conscience (Client) | Conscient (Le client *doit* ĂȘtre configurĂ© pour utiliser le proxy). | Transparent (Le client ne sait pas que le NAT existe). | Conscient (Le client *doit* lancer un logiciel VPN). |
| Protocole | Spécifique (HTTP, SOCKS) | Agnostique (Tout trafic IP) | Agnostique (Tout trafic IP) |
| Chiffrement | Non (par défaut) | Non | Oui (Objectif principal) |
| Exemple | Filtrage web (Squid), Nginx | Votre Box Internet (Routeur) | OpenVPN, WireGuard |
C'est le concept le plus important. La technologie est la mĂȘme, mais le "propriĂ©taire" et l'objectif changent.
Forward Proxy (Proxy Sortant)
"Agit au nom du CLIENT."
Un proxy utilisé par un (ou plusieurs) client(s) pour accéder à Internet. Le serveur web externe ne voit que l'IP du proxy.
[CLIENT 1] âââș [FORWARD PROXY] âââș [Internet] [CLIENT 2] âââș (IP: 80.1.2.3) (RĂ©seau Interne)
- Qui le gĂšre ? L'entreprise (client), ou l'utilisateur.
- Objectifs :
- Filtrage de contenu (ContrĂŽle parental/Entreprise).
- Anonymat (Masquer l'IP du client).
- Caching (Ăconomiser la bande passante).
Reverse Proxy (Proxy Inverse)
"Agit au nom du SERVEUR."
Un proxy utilisĂ© par un (ou plusieurs) serveur(s) pour recevoir les requĂȘtes d'Internet. Le client ne sait pas qu'il parle Ă un proxy ; il pense parler au serveur web final.
[Internet] âââș [REVERSE PROXY] âââș [Serveur Web 1]
(IP: 80.1.2.3) âââș [Serveur Web 2]
(Réseau Interne)- Qui le gÚre ? L'administrateur systÚme (serveur).
- Objectifs :
- Load Balancing (Répartition de charge).
- SSL Offloading (Terminaison HTTPS).
- Sécurité (WAF) (Filtrage des attaques).
- Caching (Mise en cache du contenu du serveur).
Le Forward Proxy est l'intermédiaire cÎté client. Il est explicitement configuré dans le navigateur du client ou au niveau de l'OS.
Il intercepte toutes les requĂȘtes HTTP/HTTPS/FTP du client et dĂ©cide s'il faut les autoriser, les bloquer, ou les servir depuis son cache.
Usages principaux
- Entreprise/Ăcole : C'est le cas d'usage le plus courant. Le proxy est la seule porte de sortie vers Internet. Il permet Ă l'administrateur de filtrer (bloquer les rĂ©seaux sociaux, la pornographie) et de surveiller (logger) le trafic web des employĂ©s/Ă©tudiants.
- Anonymat (Public) : (Voir 3.1) Un utilisateur se connecte Ă un proxy public pour masquer son IP d'origine.
- Contournement : Utilisé pour contourner les géo-restrictions (ex: se connecter à un proxy US pour voir un site US).
Historiquement, c'était l'un des rÎles majeurs des Forward Proxies (ex: FAI, universités) : économiser la bande passante (lente et chÚre).
Logiciel type : Squid.
Exemple de Flux (Cache)
1. [User 1] demande "google.com/logo.png" 2. [Proxy Squid] ne l'a pas en cache. 3. [Proxy Squid] -> [Google] : "Donne-moi logo.png" 4. [Google] -> [Proxy Squid] : (Envoie logo.png) 5. [Proxy Squid] stocke "logo.png" dans son cache disque. 6. [Proxy Squid] -> [User 1] : (Envoie logo.png) --- (Plus tard) --- 7. [User 2] demande "google.com/logo.png" 8. [Proxy Squid] l'a en cache. 9. [Proxy Squid] -> [User 2] : (Envoie logo.png depuis son cache) (Aucune connexion vers Internet n'est établie)
Note : C'est beaucoup moins efficace aujourd'hui à cause du HTTPS. Le trafic étant chiffré, le proxy ne peut pas "voir" ce qui est demandé (google.com/logo.png) ni le mettre en cache. (Sauf s'il effectue une interception SSL/MITM, ce qui est courant en entreprise).
C'est le cas d'usage n°1 en entreprise. Le Forward Proxy (associé à un logiciel comme SquidGuard) agit comme un filtre de contenu.
Types de Filtrage
- Filtrage URL : (Le plus simple) Bloquer l'accĂšs Ă une liste de domaines (ex:
facebook.com,youtube.com). - Filtrage par Catégorie : Utilisation de listes noires (Blacklists) (ex: bloquer les catégories "Adulte", "Jeux d'argent", "Réseaux Sociaux").
- Filtrage par Mots-clés : Analyser le contenu des pages (HTTP) à la recherche de mots-clés interdits.
- Filtrage d'Authentification : Exiger une authentification (ex: Active Directory) pour accéder au web.
Un des usages grand public du Forward Proxy est de masquer l'adresse IP d'origine du client.
Le serveur web de destination (ex: Google) ne voit que l'adresse IP du Proxy dans ses logs. Il ne voit pas l'adresse IP réelle du client.
Cependant, le "niveau" d'anonymat dĂ©pend de la configuration du proxy et des en-tĂȘtes HTTP qu'il ajoute (ou supprime).
Proxy Transparent
Un proxy "transparent" n'est pas anonyme. Il est souvent utilisé par les FAI ou les entreprises pour le caching ou le filtrage sans que le client n'ait à configurer quoi que ce soit (le trafic est "intercepté").
Il s'identifie lui-mĂȘme (ex: Via: 1.1 proxy.fai.com) et, surtout, il ajoute l'en-tĂȘte X-Forwarded-For (XFF) qui contient l'adresse IP rĂ©elle du client.
RequĂȘte reçue par le serveur (de la part du Proxy) : GET / HTTP/1.1 Host: www.example.com X-Forwarded-For: 1.2.3.4 (IP rĂ©elle du Client) Via: 1.1 proxy.fai.com
Proxy Anonyme (Simple)
Objectif : Cacher l'IP du client.
Il ne transmet pas l'en-tĂȘte X-Forwarded-For (ou le remplace par sa propre IP).
Mais : Il s'identifie quand mĂȘme comme un proxy (ex: Via: ProxyServer).
Le serveur de destination sait que vous utilisez un proxy, mais il ne connaĂźt pas votre IP.
Proxy Elite (Haut Anonymat)
Objectif : Cacher l'IP du client ET cacher le fait qu'il utilise un proxy.
Il ne transmet aucun en-tĂȘte d'identification (ni XFF, ni Via).
Le serveur de destination pense qu'il reçoit une connexion directe de la part d'un client normal (qui est en fait le proxy).
Le Reverse Proxy (Proxy Inverse) est l'inverse du Forward Proxy. Il est placé cÎté serveur et agit "au nom du serveur".
Les clients (Internet) ne se connectent jamais directement aux serveurs d'application (Back-end). Ils se connectent tous au Reverse Proxy, qui est la seule façade (Gateway) publique.
Usages Principaux (La pile "moderne")
- Load Balancing (Répartition de charge) : Distribuer le trafic sur plusieurs serveurs back-end.
- SSL Offloading (Terminaison SSL) : Gérer le HTTPS à la place des serveurs back-end.
- Sécurité (WAF) : Filtrer les attaques (SQLi, XSS) avant qu'elles n'atteignent l'application.
- Caching Statique : Servir les images/CSS/JS (Varnish, Nginx).
- Routing : (
/api-> Serveur Node.js,/blog-> Serveur WordPress).
Outils : Nginx, HAProxy, Caddy, Varnish.
C'est l'un des rÎles majeurs du Reverse Proxy (Nginx, HAProxy). Il permet la Haute Disponibilité (HA) et la Scalabilité Horizontale.
Il gĂšre un "pool" de serveurs back-end et distribue les requĂȘtes entrantes parmi eux.
Algorithmes de Répartition
- Round Robin (Tourniquet) : (Défaut) 1er clic -> Srv A, 2e clic -> Srv B, 3e clic -> Srv A... (Simple).
- Least Connections (Moins de Connexions) : Envoie la requĂȘte au serveur ayant actuellement le moins de connexions actives (plus Ă©quitable).
- IP Hash : Assigne un client (basĂ© sur son IP) au mĂȘme serveur (utile pour les sessions "sticky").
Health Checks
Le Load Balancer "ping" (teste) en permanence ses serveurs back-end. S'il détecte qu'un serveur (ex: Srv B) ne répond plus, il le retire automatiquement du pool et n'envoie du trafic qu'aux serveurs sains.
SSL Offloading (ou Terminaison TLS) est une fonction du Reverse Proxy oĂč il gĂšre 100% des opĂ©rations de chiffrement/dĂ©chiffrement.
Le Flux
Le trafic est chiffré (HTTPS) sur Internet, mais en clair (HTTP) sur le LAN interne.
[CLIENT] <--- (Connexion 1 : HTTPS - Cryptée) ---> [REVERSE PROXY (Nginx)]
â (Port 443)
â (DĂ©chiffre)
â
<--- (Connexion 2 : HTTP - Non cryptée) ---> [Serveur App 1]
â (Port 80)
â
<--- (Connexion 2 : HTTP - Non cryptée) ---> [Serveur App 2]
(Port 80)
Avantages
- Performance : Le chiffrement est lourd (CPU). Les serveurs d'application (PHP, Node) sont "déchargés" (offloaded) de cette tùche.
- Centralisation : Un seul endroit oĂč gĂ©rer (installer, renouveler) les certificats SSL, au lieu de 10 serveurs.
- SimplicitĂ© : Les serveurs back-end n'ont mĂȘme pas besoin de savoir que le HTTPS existe.
Un WAF est un type spécifique de Reverse Proxy (Couche 7) axé sur la sécurité applicative.
Il se place devant le serveur web et inspecte le contenu des requĂȘtes HTTP (URLs, Headers, Body) Ă la recherche de signatures d'attaques (ex: OWASP Top 10).
Exemple de rĂšgle WAF
Client envoie : GET /login.php?user=' OR '1'='1' 1. [WAF] (ex: ModSecurity) reçoit la requĂȘte. 2. Il analyse le paramĂštre "user". 3. Il dĂ©tecte la signature d'une Injection SQL. 4. Il bloque (Drop) la requĂȘte. 5. Il logge l'attaque et bannit l'IP. (Le trafic n'atteint jamais le serveur applicatif vulnĂ©rable).
Il protĂšge contre : Injection SQL, XSS, SSRF, LFI/RFI...
Similaire au Caching "Forward", mais cÎté serveur. Le Reverse Proxy met en cache le contenu (statique ou dynamique) de ses serveurs back-end pour réduire la charge.
Exemple (Nginx / Varnish)
1. [User 1] demande "/blog/article-1" 2. [Proxy Cache] ne l'a pas. 3. [Proxy Cache] -> [Serveur App (PHP)] : "GénÚre-moi /blog/article-1" 4. [Serveur App] (génÚre la page) -> [Proxy Cache] 5. [Proxy Cache] stocke le HTML de la page (ex: pour 60 sec). 6. [Proxy Cache] -> [User 1] (Envoie la page) --- (10 sec plus tard) --- 7. [User 2] demande "/blog/article-1" 8. [Proxy Cache] l'a en cache. 9. [Proxy Cache] -> [User 2] (Envoie la page depuis son cache) (Le serveur PHP n'est jamais contacté).
Outils : Varnish (spécialisé), Nginx (trÚs bon).
Nginx (prononcé "Engine-X") est le logiciel open-source leader du marché pour le Reverse Proxy. (Il est aussi un excellent serveur web statique).
Il est réputé pour sa haute performance (architecture "event-driven", non bloquante) et sa faible consommation mémoire.
Configuration (Exemple de Reverse Proxy)
# /etc/nginx/sites-available/default
# Définir le pool de serveurs back-end
upstream my_app {
server 10.0.0.1:8080; # App 1
server 10.0.0.2:8080; # App 2
}
server {
listen 80;
server_name www.ideolab.com;
# Caching statique
location ~* \.(jpg|css|js)$ {
root /var/www/static;
expires 30d;
}
# Reverse Proxy
location / {
proxy_pass http://my_app; # Envoie le trafic au pool
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}La plupart des "Forward Proxies" utilisent l'un de ces two protocoles.
HTTP(S) Proxy (L7)
C'est le plus courant. Il opĂšre Ă la Couche 7 (Application).
- Spécialisé : Il ne comprend que le trafic HTTP, HTTPS (via CONNECT) et parfois FTP.
- Intelligent (L7) : Il peut lire et comprendre les requĂȘtes HTTP (headers, URL). C'est ce qui lui permet de faire du caching ou du filtrage d'URL.
SOCKS Proxy (L4/L5)
(Surtout SOCKS5, qui gĂšre l'authentification et l'UDP).
Il opĂšre plus bas, aux Couches 4/5 (Transport/Session).
- Agnostique : Il ne comprend pas le HTTP. Il se contente de relayer n'importe quel trafic TCP ou UDP.
- Usage : Permet de "proxyfier" des applications non-web (SSH, SMTP, BitTorrent, jeux en ligne).
Squid est le logiciel open-source historique et le plus connu pour le Forward Proxy (HTTP/HTTPS).
Il est extrĂȘmement robuste et configurable (via son fichier squid.conf).
Fonctions Principales
- Proxy Caching : (Son rĂŽle historique) Mettre en cache le contenu web pour les FAI/Entreprises.
- Filtrage : Agit comme proxy de sortie.
- SquidGuard / DansGuardian : Des plugins populaires pour Squid qui gĂšrent le filtrage d'URL (listes noires) et de contenu.
- Authentification : Peut s'intégrer à LDAP/Active Directory pour authentifier les utilisateurs avant de leur donner accÚs au web.
| Type | Position | "Agit au nom du..." | Usages Clés | Outils |
|---|---|---|---|---|
| Forward Proxy (Sortant) | CÎté Client (Dans le LAN) | Client | Filtrage de contenu, Caching (Bande passante), Anonymat (Masquage IP). | Squid, Proxys Web |
| Reverse Proxy (Entrant) | CÎté Serveur (Façade Internet) | Serveur | Load Balancing, SSL Offloading, Sécurité (WAF), Caching (Serveur). | Nginx, HAProxy, Varnish |
