X-Forward

X-Forward est un header HTTP qui permet de conserver l’adresse IP d’origine des requêtes HTTP lors du passage à travers des proxy, reverse-proxy, load-balanceurs…

Il faut le configurer au sein des équipements intermédiaires et des serveurs web, et parfois dans les applications.

.

Equipements intermédiaires

Dans varnish, /etc/varnish/default.vcl :

sub vcl_recv {
remove req.http.X-Forwarded-For;
set req.http.X-Forwarded-For = client.ip;
...
} 

.
Dans Apache mod_proxy, ajouter :

 ProxyPreserveHost On 

.

Nginx, dans le vhost du proxy :

 location / {
proxy_pass http://localhost:8000;
proxy_set_header X-Real-IP $remote_addr;
}

.

OpenBSD PF :

protocol http {
protocol http
header append "$REMOTE_ADDR" to "X-Forwarded-For"
header append "$SERVER_ADDR:$SERVER_PORT" to "X-Forwarded-By"
header change "Connection" to "close"
} 

.

Dans F5 / Big-IP :
Local Traffic > Profiles > Services > HTTP
Créer / mettre à jour un profile avec l’option « Insert X-Forwarded For » activée et cochée

.

.

Serveurs HTTP

Nginx :
il faut le module realip compilé puis dans /etc/nginx/nginx.conf

 # X-Forward
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;

.

Apache :
Il faut définir un nouveau log_format dans /etc/apache2/apache2.conf

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_proxy 

Et indiquer ce mode de log dans les fichiers de config des vhosts :

CustomLog ${APACHE_LOG_DIR}/access.log combined_proxy</pre> 

.

.

Applications

.

Dans un code en PHP :

$headers = apache_request_headers();
$real_client_ip = $headers["X-Forwarded-For"];

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Time limit is exhausted. Please reload the CAPTCHA.