Obtenir l'adresse IP réelle d'un visiteur accédant à un serveur Apache 2 à travers un reverse proxy
Utiliser un reverse proxy peut répondre à plusieurs problématiques: cacher les pages servies (Varnish), mettre en place une répartition de charge (HAProxy) ou présenter le contenu de plusieurs serveurs sur une seule et même adresse IP (Apache 2). Le Reverse Proxy fournit l'IP réelle du visiteur dans l'entête HTTP X-Forwarded-For. Ce guide propose une méthode pour récupérer l'IP présente dans cette entête et la présenter comme l'adresse IP du client en lieu et place de l'adresse IP du reverse proxy.
Ce guide est testé sur:
- Debian 6.0 Squeeze
- Debian 7.0 Wheezy
Paramètres
Renseignez les adresses IP du ou des reverse proxy vues depuis l'hôte local, séparées par des espaces:
REVERSE_PROXY_IPS="127.0.0.1"
Installation
Détectez le proxy de commande (command ou sudo):
cmdProxy='command'
command type -f 'sudo' &>'/dev/null' && cmdProxy='sudo'
Installez le module RPAF:
${cmdProxy} apt-get install libapache2-mod-rpaf
Activez le module:
${cmdProxy} a2enmod rpaf
Configurez les adresses IP des reverse proxy:
${cmdProxy} sed -i \
-e "s/^[ \t]*RPAFproxy_ips.*$/& ${REVERSE_PROXY_IPS}/" \
'/etc/apache2/mods-available/rpaf.conf'
Rechargez la configuration:
${cmdProxy} service apache2 force-reload
Remerciements
- Merci aux développeurs du reverse proxy add forward module for Apache (mod_rpaf) (en).
- Merci à Be-Root.com (fr) pour Protéger Apache de slowloris (fr).