Todos los productos
Search
Centro de documentos

Web Application Firewall:Obtención de las direcciones IP de origen de los clientes

Última actualización: Sep 04, 2026

Después de agregar su sitio web a Web Application Firewall (WAF), el servicio filtra las solicitudes entrantes y reenvía el tráfico legítimo a su servidor de origen. Dado que WAF actúa como un proxy intermedio, el servidor de origen recibe la dirección IP de retorno al origen de WAF en lugar de la dirección IP real del cliente. Este tema explica cómo configurar su servidor web o contenedor Kubernetes para extraer la dirección IP de origen del cliente desde el encabezado X-Forwarded-For.

Vaya a su tipo de servidor: NGINX | IIS 6 | IIS 7 | Apache | Tomcat | Kubernetes

Funcionamiento

WAF inserta la dirección IP del cliente en el encabezado de solicitud X-Forwarded-For antes de reenviar la solicitud a su servidor de origen:

X-Forwarded-For: <client IP>

Cuando las solicitudes pasan por varios proxies —como WAF, Anti-DDoS Pro o Anti-DDoS Premium y Alibaba Cloud CDN— cada proxy agrega su dirección. El encabezado registra una cadena separada por comas:

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

El valor más a la izquierda siempre corresponde a la dirección IP de origen del cliente.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • Un sitio web agregado a WAF

  • Los bloques CIDR de retorno al origen de WAF correspondientes a su región. Consulte Allow access from the back-to-origin CIDR blocks of WAF

  • Copias de seguridad del entorno de su servidor de origen, incluidas las instantáneas de instancias de Elastic Compute Service (ECS) y los archivos de configuración del servidor web

Configuración de servidores NGINX

NGINX utiliza el módulo http_realip_module para leer la dirección IP real del cliente desde el encabezado X-Forwarded-For.

Paso 1: Instalación de http_realip_module

Compruebe si el módulo ya está instalado:

nginx -V | grep http_realip_module

Si el módulo aparece en la salida, omita este paso y continúe con el Paso 2. De lo contrario, recompile NGINX con el módulo incluido.

El módulo no se incluye cuando NGINX se instala mediante un paquete de instalación rápida.
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`

Paso 2: Actualización de la configuración del servidor

  1. Abra el archivo default.conf.

  2. Agregue las siguientes directivas dentro del bloque location / {}. Reemplace desde <ip_range1> hasta <ip_rangex> con los bloques CIDR de retorno al origen de WAF. Introduzca un bloque CIDR por línea.

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

    Ejemplo con tres bloques 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;

Paso 3: Actualización del formato de registro

  1. Abra nginx.conf y localice la directiva log_format dentro del bloque http.

  2. Reemplace $remote_addr por $http_x_forwarded_for para que los registros capturen la dirección IP de origen del cliente.

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

Paso 4: Recarga de NGINX

nginx -s reload

Configuración de servidores IIS 6

IIS 6 utiliza el módulo F5XForwardedFor para recuperar la dirección IP de origen del cliente.

  1. Copie F5XForwardedFor.dll desde el directorio x86\Release o x64\Release hacia un directorio personalizado, como C:\ISAPIFilters\x86 o C:\ISAPIFilters\x64.

    - Asegúrese de que el proceso de Internet Information Services (IIS) tenga permisos de lectura y escritura sobre el directorio. - Si el archivo no se encuentra en el directorio de publicación, descargue F5XForwardedFor.dll y cópielo al directorio correspondiente.
  2. Abra el Administrador de IIS, haga clic derecho en su sitio web y seleccione Properties.

  3. En la pestaña ISAPI Filters, haga clic en Add y establezca los siguientes parámetros (ejemplo para un sistema operativo de 32 bits):

    Parámetro

    Valor

    Filter name

    x_forwarded_for_x86

    Executable

    Ruta completa a F5XForwardedFor.dll, por ejemplo C:\ISAPIFilters\x86\F5XForwardedFor.dll

  4. Haga clic en OK y reinicie el servidor IIS 6 para que los cambios surtan efecto.

Configuración de servidores IIS 7

IIS 7 utiliza el módulo F5XForwardedFor para recuperar la dirección IP de origen del cliente.

  1. Copie F5XFFHttpModule.dll y F5XFFHttpModule.ini desde el directorio x86\Release o x64\Release hacia un directorio personalizado, como C:\x_forwarded_for\x86 o C:\x_forwarded_for\x64.

    - Asegúrese de que el proceso de IIS tenga permisos de lectura y escritura sobre el directorio. - Si los archivos no se encuentran en el directorio de publicación, descargue F5XForwardedFor y cópielos al directorio correspondiente.
  2. En el Administrador de IIS, haga doble clic en Modules.

  3. En el panel Actions, haga clic en Configure Local Module y luego en Register.

  4. Registre el módulo con los siguientes parámetros (ejemplo para un sistema operativo de 32 bits):

    Parámetro

    Valor

    Name

    x_forwarded_for_x86

    Path

    Ruta completa a F5XFFHttpModule.dll, por ejemplo C:\x_forwarded_for\x86\F5XFFHttpModule.dll

  5. En el cuadro de diálogo Configure Local Module, seleccione el módulo recién registrado y haga clic en OK.

  6. En la sección ISAPI and CGI Restrictions, agregue la DLL registrada y configure Restriction como Allow.

  7. Reinicie el servidor IIS 7 para que los cambios surtan efecto.

Configuración de servidores Apache

Apache en Windows

Apache 2.4 y versiones posteriores incluyen mod_remoteip.so, que lee la dirección IP real del cliente desde el encabezado X-Forwarded-For.

  1. Cree el archivo conf/extra/httpd-remoteip.conf.

    El uso de un archivo de configuración independiente reduce las ediciones directas en httpd.conf y evita interrupciones del servicio causadas por configuraciones incorrectas.
  2. Agregue el siguiente contenido a httpd-remoteip.conf. Reemplace desde <ip_range1> hasta <ip_rangex> con los bloques CIDR de retorno al origen de WAF, separados por espacios.

    # 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>

    Ejemplo con tres bloques CIDR:

    RemoteIPInternalProxy 10.0.0.1 10.0.0.2 10.0.0.3
  3. Agregue la siguiente línea a conf/httpd.conf para cargar el nuevo archivo de configuración:

    Include conf/extra/httpd-remoteip.conf
  4. Actualice el formato de registro en httpd.conf para usar %a, que registra la dirección IP remota resuelta por 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. Reinicie Apache para que los cambios surtan efecto.

Apache en Linux

Apache 2.4 y versiones posteriores: remoteip_module viene integrado. Siga los mismos pasos descritos para Apache en Windows.

Versiones anteriores a Apache 2.4: Instale el módulo de terceros mod_rpaf.

  1. Instale 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. Anexe lo siguiente a /alidata/server/httpd/conf/httpd.conf. Para RPAFproxy_ips, utilice las direcciones IP del módulo mod_rpaf que aparecen en sus registros de Apache, no las direcciones IP del servidor proxy de WAF. En la mayoría de los casos, se listan dos direcciones IP.

    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. Reinicie Apache:

    /alidata/server/httpd/bin/apachectl restart

Para obtener más detalles sobre mod_remoteip de Apache, consulte la documentación del módulo de Apache.

Configuración de servidores Tomcat

Tomcat lee la dirección IP del cliente desde el encabezado X-Forwarded-For a través de su componente AccessLogValve.

  1. Abra tomcat/conf/server.xml.

  2. Actualice la entrada AccessLogValve para registrar %{X-FORWARDED-FOR}i en lugar del host remoto predeterminado:

    <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"/>

Configuración de contenedores Kubernetes

Cuando su servidor de origen se ejecuta en Kubernetes, el controlador Ingress almacena la dirección IP de origen del cliente en X-Original-Forwarded-For y las direcciones IP de retorno al origen de WAF en X-Forwarded-For. Para restaurar la dirección IP de origen en X-Forwarded-For, actualice la configuración del controlador Ingress.

  1. Edite el ConfigMap kube-system/nginx-configuration:

    kubectl -n kube-system edit cm nginx-configuration
  2. Agregue las siguientes claves:

    compute-full-forwarded-for: "true"
    forwarded-for-header: "X-Forwarded-For"
    use-forwarded-headers: "true"
  3. Guarde el archivo. Los cambios surten efecto de inmediato; no es necesario reiniciar.

  4. Actualice su aplicación para que lea la dirección IP de origen del cliente desde el encabezado X-Original-Forwarded-For en lugar de X-Forwarded-For.

Pasos siguientes