Warning: file_get_contents(http://maps.google.com/maps/geo?q=Washington+&output=json&oe=utf8&sensor=false&key=) [function.file-get-contents]: failed to open stream: Connection timed out in /var/www/8h00_scripts/whois.class.php on line 131
Géolocalisation et REMOTE-ADDR sur un serveur Apache derriere un reverse proxy
Fermer
Authentification
Zentic le prestataire de service informatique, téléphonie et communication des sociétés, entreprises, TPE, PME : Audit, conseil, dépannage et assistance, maintenance et infogérance, responsable et externalisation informatique..
Mercredi, 14 Juillet 2010 11:52

Géolocalisation et REMOTE-ADDR sur un serveur Apache derriere un reverse proxy

Écrit par  Zentic
Évaluez cet article
(3 votes)

Nous avons vu dans un article précédent comment installer un reverse proxy avec Squid 3 et publier des serveurs web dont un serveur Microsoft Exchange (OWA et Activesync).

Si vous avez mis ce type de solution en place, vous devez être confronté au problème que vos sites web en back-end voient le reverse proxy en tant que client et que l'adresse du client n'apparait que dans l'entête X-Forward-For, l'entête habituellement utilisée REMOTE-ADDR comportant l'adresse IP du serveur reverse proxy en lieu et place de l'adresse IP du client, quels en sont les impacts :

  • Le mode Geoip d'apache ne fonctionne plus aussi vous ne pouvez plus utiliser les fonctionnalités de géolocalisation ;
  • Si vous aviez des scripts sur vos sites web ou dans vos fichiers de configuration (type htaccess), ils ne fonctionnent plus ;
  • Si vous aviez des répertoires protégés par adresse ip, vous ne pouvez plus y accéder.

Nous vous proposons donc de mettre en place une solution pour palier à ces problème en installant et en configurant le mod_rpaf d'Apache.

le mod_rpaf change l'adresse du client distant visible pour les autres modules Apache lorsque deux conditions sont remplies. La première condition est que le client distant visible est en réalité un reverse proxy. Ensuite, si il ya une entête sur une requête entrante X-Forwarded-For et que le reverse proxy est dans sa liste de proxy connus, il prend la dernière adresse IP de l'entête entrante X-Forwarded-For-tête et change l'adresse du client distant dans la structure de la demande. Elle prend également l'en-tête entrant X-hôte et met à jour les paramètres virtualhost en conséquence. Pour mod_proxy Apache2 il gère l'entête X-Forwared-Host et met à jour les serveurs virtuels.

La dernière version est la version 0.6, cette version offre la possibilité de changer l'entête qui doit être modifiée sur le serveur Apache. Avec la directive de configuration RPAFheader vous pouvez maintenant changer la valeur par défaut X-Forwarded-For à X-Real-IP si vous le souhaitez.

Passons donc à la mise en oeuvre de ce module sous Debian et Apache 2. La version disponible de base sous Debian est la version 0.5.3 qui fonctionne à moitié et qui ne permet pas de faire fonctionner notamment ce qui est géolocalisation, nous allons donc télécharger la dernière version et la compiler nous même. Pour ce faire il faut que certaines dépendances soient installées sur notre serveur :

aptitude update
aptitude install devscripts build-essential fakeroot libssl-dev
aptitude install apache2-threaded-dev

Nous pouvons passer ensuite à la compilation et à l'installation du module :

cd /usr/scr
wget -ivh http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
tar -xzf mod_rpaf-0.6.tar.gz
cd mod_rpaf-0.6
make install-2.0

Ensuite nous allons activer le module rpaf pour Apache en plaçant les fichiers rpaf.conf et rpaf.load dans le repertoire /etc/apache2/mos-enabled, si il ne sont pas présent vous pouvez les créer, et commencer la configuration du module :

/etc/apache2/mods-enabled/rpaf.load
1
LoadModule rpaf_module /usr/lib/apache2/modules/mod_rpaf-2.0.so

 

/etc/apache2/mods-enabled/rpaf.conf
1
2
3
4
5
6
<IfModule mod_rpaf-2.0.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips ADRESSE.IP.DE.VOTRE.PROXY
RPAFheader X-Forwarded-For
</IfModule>

Pour valider les changements sur Apache, appliquez les modifications :

/etc/init.d/apache2 reload
Dernière modification le Mercredi, 14 Juillet 2010 12:48

Leave a comment

Calendrier

« Septembre 2010 »
Lun Mar Mer Jeu Ven Sam Dim
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      

Connecté avec nous :

facebook avec Zentictwitter avec Zentic

Login Form