Il est intéressant de configurer le serveur pour récupérer les IP publiques des utilisateurs afin de garantir une analyse précise des logs, détecter les comportements malveillants, et appliquer des règles de sécurité basées sur l’origine des requêtes. Cela permet également de personnaliser l’expérience utilisateur et de répondre aux exigences légales de conformité ou d’audit en conservant des informations fiables sur les connexions.
Prérequis :
- VM Debian 11 – serveur reverse proxy, si vous ne l’avez pas déjà fait, il est içi 😉
- VM Debian 11 – serveur web
Étape 1 :
Sur le reverse proxy, activez le mode headers et redémarrez le service apache2
a2enmod headers
systemctl restart apache2
Sur le serveur web, activez le mode remoteip et redémarrez le service apache2
a2enmod remoteip
systemctl restart apache2
Étape 2 :
Éditez votre virtualhost sur le reverse proxy :
<VirtualHost *:80>
ServerName nom_de_domaine.fr
# Préserver le host original
ProxyPreserveHost On
# Transmettre les en-têtes nécessaires au serveur web
RequestHeader set X-Forwarded-For "%{REMOTE_ADDR}s"
# Configuration du proxy
ProxyPass / ip_serveur_web
ProxyPassReverse / ip_serveur_web
# Logs
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Puis, rechargez le fichier de configuration et relancez le service apache2 :
a2ensite virtualhost.conf
systemctl restart apache2
Éditez votre virtualhost sur le serveur web :
<VirtualHost *:80>
ServerAdmin test@exemple.fr
DocumentRoot /var/www/html
RemoteIPHeader X-Forwarded-For
RemoteIPTrustedProxy ip_serveur_reverse_proxy
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Puis, rechargez le fichier de configuration et relancez le service apache2 :
a2ensite virtualhost.conf
systemctl restart apache2
Sur le routeur, désactivez le NAT :
Sur le serveur web, vérifiez les logs :
sudo tail -f /var/log/apache2/access.log
Et voilà ! L’ip publique des utilisateurs remonte jusqu’à votre serveur web !