Tous les produits
Search
Centre de documentation

Web Application Firewall:Récupérer les adresses IP d'origine des clients

Dernière mise à jour :Aug 10, 2026

Une fois votre site web ajouté à Web Application Firewall (WAF), ce dernier filtre les requêtes entrantes et transfère le trafic légitime vers votre serveur d'origine. WAF agissant en tant que proxy intermédiaire, le serveur d'origine reçoit l'adresse IP de retour vers l'origine de WAF au lieu de l'adresse IP réelle du client. Cette rubrique explique comment configurer votre serveur web ou votre conteneur Kubernetes pour extraire l'adresse IP d'origine du client à partir de l'en-tête X-Forwarded-For.

Accédez directement à la section correspondant à votre type de serveur : NGINX | IIS 6 | IIS 7 | Apache | Tomcat | Kubernetes

Fonctionnement

Avant de transmettre la requête à votre serveur d'origine, WAF insère l'adresse IP du client dans l'en-tête de requête X-Forwarded-For :

X-Forwarded-For: <client IP>

Lorsque les requêtes transitent par plusieurs proxys, tels que WAF, Anti-DDoS Pro ou Anti-DDoS Premium, et Alibaba Cloud CDN, chaque proxy ajoute sa propre adresse. L'en-tête enregistre ainsi une chaîne séparée par des virgules :

X-Forwarded-For: <client IP>, <proxy 1 IP>, <proxy 2 IP>, <proxy 3 IP>, ...

La valeur la plus à gauche correspond toujours à l'adresse IP d'origine du client.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

  • Un site web ajouté à WAF

  • Les blocs CIDR de retour vers l'origine de WAF pour votre région. Consultez la rubrique Autoriser l'accès depuis les blocs CIDR de retour vers l'origine de WAF

  • Des sauvegardes de l'environnement de votre serveur d'origine, y compris les snapshots d'instances Elastic Compute Service (ECS) et les fichiers de configuration du serveur web

Configuration des serveurs NGINX

NGINX utilise le module http_realip_module pour lire l'adresse IP réelle du client à partir de l'en-tête X-Forwarded-For.

Étape 1 : Installer http_realip_module

Vérifiez si le module est déjà installé :

nginx -V | grep http_realip_module

Si le module apparaît dans la sortie, passez directement à l'étape 2. Sinon, recompilez NGINX avec ce module.

Le module n'est pas inclus lors de l'installation de NGINX via un package d'installation rapide.
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2
./configure --user=www --group=www --prefix=/alidata/server/nginx \
  --with-http_stub_status_module \
  --without-http-cache \
  --with-http_ssl_module \
  --with-http_realip_module
make
make install
kill -USR2 `cat /alidata/server/nginx/logs/nginx.pid`
kill -QUIT `cat /alidata/server/nginx/logs/nginx.pid.oldbin`

Étape 2 : Mettre à jour la configuration du serveur

  1. Ouvrez le fichier default.conf.

  2. Ajoutez les directives suivantes dans le bloc location / {}. Remplacez <ip_range1> jusqu'à <ip_rangex> par les blocs CIDR de retour vers l'origine de WAF. Saisissez un bloc CIDR par ligne.

    set_real_ip_from <ip_range1>;
    set_real_ip_from <ip_range2>;
    ...
    set_real_ip_from <ip_rangex>;
    real_ip_header X-Forwarded-For;

    Exemple avec trois blocs CIDR :

    set_real_ip_from 10.0.0.1;
    set_real_ip_from 10.0.0.2;
    set_real_ip_from 10.0.0.3;
    real_ip_header X-Forwarded-For;

Étape 3 : Mettre à jour le format des journaux

  1. Ouvrez le fichier nginx.conf et repérez la directive log_format dans le bloc http.

  2. Remplacez $remote_addr par $http_x_forwarded_for afin que les journaux enregistrent l'adresse IP d'origine du client.

    log_format main '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent"';

Étape 4 : Recharger NGINX

nginx -s reload

Configuration des serveurs IIS 6

IIS 6 utilise le module F5XForwardedFor pour récupérer l'adresse IP d'origine du client.

  1. Copiez le fichier F5XForwardedFor.dll depuis le répertoire x86\Release ou x64\Release vers un répertoire personnalisé, tel que C:\ISAPIFilters\x86 ou C:\ISAPIFilters\x64.

    - Assurez-vous que le processus Internet Information Services (IIS) dispose des permissions de lecture et d'écriture sur le répertoire. - Si le fichier ne se trouve pas dans le répertoire de publication, téléchargez F5XForwardedFor.dll et copiez-le dans le répertoire.
  2. Ouvrez le Gestionnaire IIS, cliquez avec le bouton droit sur votre site web, puis sélectionnez Properties.

  3. Dans l'onglet ISAPI Filters, cliquez sur Add et définissez les paramètres suivants (exemple pour un système d'exploitation 32 bits) :

    Parameter Value
    Filter name x_forwarded_for_x86
    Executable Chemin complet vers F5XForwardedFor.dll, par exemple C:\ISAPIFilters\x86\F5XForwardedFor.dll
  4. Cliquez sur OK, puis redémarrez le serveur IIS 6 pour que les modifications prennent effet.

Configuration des serveurs IIS 7

IIS 7 utilise le module F5XForwardedFor pour récupérer l'adresse IP d'origine du client.

  1. Copiez les fichiers F5XFFHttpModule.dll et F5XFFHttpModule.ini depuis le répertoire x86\Release ou x64\Release vers un répertoire personnalisé, tel que C:\x_forwarded_for\x86 ou C:\x_forwarded_for\x64.

    - Assurez-vous que le processus IIS dispose des permissions de lecture et d'écriture sur le répertoire. - Si les fichiers ne se trouvent pas dans le répertoire de publication, téléchargez F5XForwardedFor et copiez-les dans le répertoire.
  2. Dans le Gestionnaire IIS, double-cliquez sur Modules.

  3. Dans le panneau Actions, cliquez sur Configure Local Module, puis sur Register.

  4. Enregistrez le module avec les paramètres suivants (exemple pour un système d'exploitation 32 bits) :

    Parameter Value
    Name x_forwarded_for_x86
    Path Chemin complet vers F5XFFHttpModule.dll, par exemple C:\x_forwarded_for\x86\F5XFFHttpModule.dll
  5. Dans la boîte de dialogue Configure Local Module, sélectionnez le module nouvellement enregistré, puis cliquez sur OK.

  6. Dans la section ISAPI and CGI Restrictions, ajoutez la DLL enregistrée et définissez Restriction sur Allow.

  7. Redémarrez le serveur IIS 7 pour que les modifications prennent effet.

Configuration des serveurs Apache

Apache sur Windows

Apache 2.4 et versions ultérieures incluent le module mod_remoteip.so, qui lit l'adresse IP réelle du client à partir de l'en-tête X-Forwarded-For.

  1. Créez le fichier conf/extra/httpd-remoteip.conf.

    L'utilisation d'un fichier de configuration distinct réduit les modifications directes apportées au fichier httpd.conf et évite les interruptions de service dues à des erreurs de configuration.
  2. Ajoutez le contenu suivant au fichier httpd-remoteip.conf. Remplacez <ip_range1> jusqu'à <ip_rangex> par les blocs CIDR de retour vers l'origine de WAF, séparés par des espaces.

    # Load the mod_remoteip.so module.
    LoadModule remoteip_module modules/mod_remoteip.so
    # Configure the RemoteIPHeader header.
    RemoteIPHeader X-Forwarded-For
    # Specify the back-to-origin CIDR blocks.
    RemoteIPInternalProxy <ip_range1> <ip_range2> ... <ip_rangex>

    Exemple avec trois blocs CIDR :

    RemoteIPInternalProxy 10.0.0.1 10.0.0.2 10.0.0.3
  3. Ajoutez la ligne suivante au fichier conf/httpd.conf pour charger le nouveau fichier de configuration :

    Include conf/extra/httpd-remoteip.conf
  4. Mettez à jour le format des journaux dans le fichier httpd.conf pour utiliser %a, qui enregistre l'adresse IP distante résolue par mod_remoteip :

    LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%a %l %u %t \"%r\" %>s %b" common
  5. Redémarrez Apache pour que les modifications prennent effet.

Apache sur Linux

Apache 2.4 et versions ultérieures : le module remoteip_module est intégré. Suivez les mêmes étapes que pour Apache sur Windows.

Apache antérieur à la version 2.4 : Installez le module tiers mod_rpaf.

  1. Installez mod_rpaf :

    wget https://github.com/gnif/mod_rpaf/archive/v0.6.0.tar.gz
    tar zxvf mod_rpaf-0.6.tar.gz
    cd mod_rpaf-0.6
    /alidata/server/httpd/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
  2. Ajoutez les lignes suivantes à la fin du fichier /alidata/server/httpd/conf/httpd.conf. Pour le paramètre RPAFproxy_ips, utilisez les adresses IP du module mod_rpaf issues de vos journaux Apache, et non les adresses IP des serveurs proxy WAF. Dans la plupart des cas, deux adresses IP sont répertoriées.

    LoadModule rpaf_module modules/mod_rpaf-2.0.so
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 10.XX.XX.65 10.XX.XX.131
    RPAFheader X-Forwarded-For
  3. Redémarrez Apache :

    /alidata/server/httpd/bin/apachectl restart

Pour plus d'informations sur le module mod_remoteip d'Apache, consultez la documentation du module Apache.

Configuration des serveurs Tomcat

Tomcat lit l'adresse IP du client à partir de l'en-tête X-Forwarded-For via son composant AccessLogValve.

  1. Ouvrez le fichier tomcat/conf/server.xml.

  2. Mettez à jour l'entrée AccessLogValve pour journaliser %{X-FORWARDED-FOR}i au lieu de l'hôte distant par défaut :

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%{X-FORWARDED-FOR}i %l %u %t %r %s %b %D %q %{User-Agent}i %T"
           resolveHosts="false"/>

Configuration des conteneurs Kubernetes

Lorsque votre serveur d'origine s'exécute dans Kubernetes, le contrôleur Ingress stocke l'adresse IP d'origine du client dans l'en-tête X-Original-Forwarded-For et les adresses IP de retour vers l'origine de WAF dans l'en-tête X-Forwarded-For. Pour restaurer l'adresse IP d'origine dans l'en-tête X-Forwarded-For, mettez à jour la configuration du contrôleur Ingress.

  1. Modifiez la ConfigMap kube-system/nginx-configuration :

    kubectl -n kube-system edit cm nginx-configuration
  2. Ajoutez les clés suivantes :

    compute-full-forwarded-for: "true"
    forwarded-for-header: "X-Forwarded-For"
    use-forwarded-headers: "true"
  3. Enregistrez le fichier. Les modifications prennent effet immédiatement ; aucun redémarrage n'est nécessaire.

  4. Mettez à jour votre application pour qu'elle lise l'adresse IP d'origine du client à partir de l'en-tête X-Original-Forwarded-For au lieu de X-Forwarded-For.

Étapes suivantes