Debian – Récupérer les IP publiques des utilisateurs via un reverse proxy

Debian – Récupérer les IP publiques des utilisateurs via un reverse proxy

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 !

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *