{{tag>webadmin apache proxy log journalisation remoteip}} ====== Journaliser l'IP du client derrière un proxy ====== Lorsque le serveur Apache se trouve derrière un serveur mandataire, les IP journalisées dans les logs sont toutes identiques: elles correspondent à l'IP du serveur mandataire. Pour enregistrer l'IP du client à l'origine de la requête, il faut modifier la configuration du serveur Apache. Le serveur mandataire ne doit pas être en mode transparent et doit fournir le champ XFORWARDED-FOR Coté serveur Apache, activer le mode **remoteip** La documentation spécifie que le module ne doit être activé que pour des serveurs mandataires identifiés et de confiance (définir la directive **RemoteIPTrustedProxy** car il est trivial pour un client distant de générer un header et d'usurper l'identité d'un autre client. a2enmod remoteip Ajouter la configuration vim /etc/apache2/conf-available/remoteip.conf Le fichier remoteip.conf contient les directives suivantes: # Variable du header désignant le client d'origine. # Elle peut différer selon le service (répartiteur ou mandataire) # Exemple de variable utilisée par le répartiteur de charge # RemoteIPHeader X-Client-IP RemoteIPHeader X-Forwarded-For # Spécifier dans quel header le module relève les adresses IP # RemoteIPProxiesHeader X-Forwarded-By # Les mandataires autorisés pour lesquels le module remoteip # prendra en compte le header et les variables RemoteIPHeader RemoteIPTrustedProxy 172.16.2.1 # Les serveurs mandataires de confiance peuvent également être # listés dans un fichier # RemoteIPTrustedProxyList # Définition d'un format de log spécifique "combined_proxy" LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined_proxy Modifier la chaine de génération des logs dans apache2.conf ou l'hote virtuel Apache : # Utilise le module remoteip pour journaliser l'IP originelle du client CustomLog /srv/nextcloud/log/access.log combined_proxy Activer la configuration et relancer le service : a2enconf remoteip systemctl reload apache2.service ===== Références ===== * [[https://trick77.com/apache2-2-4-logging-remote-ip-address-using-mod_remoteip/|Journalisation de l'adresse IP via le module remoteip (trick77.com) (en)]] * [[http://httpd.apache.org/docs/trunk/fr/mod/mod_remoteip.html|Apache2 : le module remoteip (apache.org) (en)]]