Récupération de la vrai IP dans WordPress
|hello
Il arrive souvent que derrière un proxy ou une installation spécifique les logs WordPress ne voit pas la vrai IP
Il existe bien entendu des headers spécifiques que les reverses ajoutent (ou peuvent ajouter) pour indiquer l’ip source de la requête.
Il faut cependant indiquer à Apache2 de le prendre en compte. Voyons comment faire cela.
Deux en-tête HTTP sont utilisées pour transmettre cette information. Il s’agit de X-Real-IP
et de X-Forwarded-For
.
X-Forwarded-For
peut contenir plusieurs ip si la requête est forwardé plusieurs fois, tandis que X-Real-IP
a plutôt vocation à contenir l’ip d’origine
Quoi qu’il en soit, les deux sont souvent renseignés et, dans le cas où l’on a la maîtrise du reverse, on le configure bien comme on l’entend.
Voici une solution qui fonctionne :
Apache peut donc lire l’ip d’origine depuis n’importe laquelle des deux deux en-tête.
Pour se faire, à partir d’Apache 2.4 nous utiliserons le mod_remoteip
.
Ce module permet simplement d’indiquer à Apache de prendre en compte l’une des en-têtes précitées comme ip d’origine.
On commence par activer le module, puis on spécifie sa configuration car il n’en possède pas d’office. Enfin, on fini par charger la configuration et on redémarre le serveur.
# active le mode remoteip
a2enmod remoteip
# dans /etc/apache2/conf-available/remoteip.conf
# on utilise ici X-Forwarded-For
# libre à vous de remplacer par X-Real-IP
RemoteIPHeader X-Forwarded-For
# ici les adresse distantes auxquelles on fait confiance pour présenter une valeur, ajustez en fonction de votre installation bien sur
RemoteIPHeader RemoteIPTrustedProxy 127.0.0.1 172.27.0.1 ::1
# on charge la conf nouvellement créée
a2enconf remoteip
# on redémarre apache pour que tout soit pris en compte
service apache2 restart
Et voilà, sans plus d’effort, Apache prend maintenant automatiquement en compte la vraie source des requêtes au lieu de celle de votre proxy !