Par défaut, en passant par un proxy http, Apache loggue l'adresse IP du proxy et non celle à l'origine de la connexion dans les fichiers access. Pour résoudre ce problème, on va utiliser le module apache mod_remoteip. On active ce module en créant le fichier /etc/httpd/conf.modules.d/00-remoteip.conf

LoadModule remoteip_module modules/mod_remoteip.so

et on le configure dans le fichier /etc/httpd/conf.d/remoteip.conf

<IfModule mod_remoteip.c>
    RemoteIPHeader X-Forwarded-For
    RemoteIPInternalProxy 127.0.0.1
    LogFormat "%a %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
</IfModule>

On redémarre Apache et le tour est joué

systemctl restart httpd

On ne peut pas déclarer notre proxy de manière générique avec la directive

RemoteIPProxiesHeader X-Forwarded-By

car notre proxy fait partie d'un block IP privé: dixit la page de documentation officielle du module

Tous les blocs d'adresses internes 10/8, 172.16/12, 192.168/16, 169.254/16 and 127/8 (ainsi que les adresses IPv6 en dehors du bloc public 2000::/3 block) ne sont évaluées par mod_remoteip que lorsque des mandataires internes (intranet) RemoteIPInternalProxy sont enregistrés.

Article précédent Article suivant