Todos os produtos
Search
Central de documentação

Web Application Firewall:Obter os endereços IP de origem dos clientes

Última atualização: Jul 03, 2026

Após adicionar seu site ao Web Application Firewall (WAF), o WAF filtra as requisições recebidas e encaminha o tráfego normal para o servidor de origem. Como o WAF atua como proxy intermediário, o servidor de origem recebe o IP de back-to-origin do WAF em vez do IP real do cliente. Este tópico explica como configurar seu servidor web ou contêiner Kubernetes para extrair o endereço IP de origem do cliente do cabeçalho X-Forwarded-For.

Selecione o tipo do seu servidor: NGINX | IIS 6 | IIS 7 | Apache | Tomcat | Kubernetes

Como funciona

O WAF insere o IP do cliente no cabeçalho de requisição X-Forwarded-For antes de encaminhar a requisição ao servidor de origem:

X-Forwarded-For: <client IP>

Quando as requisições passam por múltiplos proxies — como WAF, Anti-DDoS Pro ou Anti-DDoS Premium e Alibaba Cloud CDN — cada proxy adiciona seu próprio endereço. O cabeçalho registra uma cadeia separada por vírgulas:

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

O valor mais à esquerda é sempre o IP de origem do cliente.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Um site adicionado ao WAF

  • Os blocos CIDR de back-to-origin do WAF para sua região. Consulte Permitir acesso dos blocos CIDR de back-to-origin do WAF

  • Backups do ambiente do servidor de origem, incluindo snapshots de instâncias do Elastic Compute Service (ECS) e arquivos de configuração do servidor web

Configurar servidores NGINX

O NGINX usa o módulo http_realip_module para ler o IP real do cliente no cabeçalho X-Forwarded-For.

Etapa 1: Instale o http_realip_module

Verifique se o módulo já está instalado:

nginx -V | grep http_realip_module

Se o módulo aparecer na saída, pule para a Etapa 2. Caso contrário, recompile o NGINX com o módulo.

O módulo não vem incluído quando se instala o NGINX por pacote de instalação 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`

Etapa 2: Atualize a configuração do servidor

  1. Abra o arquivo default.conf.

  2. Adicione as seguintes diretivas dentro do bloco location / {}. Substitua de <ip_range1> até <ip_rangex> pelos blocos CIDR de back-to-origin do WAF. Insira um bloco CIDR por linha.

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

    Exemplo com três blocos 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;

Etapa 3: Atualize o formato de log

  1. Abra o arquivo nginx.conf e localize a diretiva log_format no bloco http.

  2. Substitua $remote_addr por $http_x_forwarded_for para que os logs registrem o IP de origem do cliente.

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

Etapa 4: Recarregar o NGINX

nginx -s reload

Configurar servidores IIS 6

O IIS 6 usa o módulo F5XForwardedFor para obter o IP de origem do cliente.

  1. Copie o arquivo F5XForwardedFor.dll do diretório x86\Release ou x64\Release para um diretório personalizado, como C:\ISAPIFilters\x86 ou C:\ISAPIFilters\x64.

    - Certifique-se de que o processo do Internet Information Services (IIS) tenha permissões de leitura e gravação no diretório. - Se o arquivo não estiver no diretório release, baixe o F5XForwardedFor.dll e copie-o para o diretório.
  2. Abra o Gerenciador do IIS, clique em com o botão direito no site e selecione Properties.

  3. Na guia ISAPI Filters, clique em Add e defina os seguintes parâmetros (exemplo para SO de 32 bits):

    Parâmetro

    Valor

    Filter name

    x_forwarded_for_x86

    Executable

    Caminho completo para F5XForwardedFor.dll, por exemplo C:\ISAPIFilters\x86\F5XForwardedFor.dll

  4. Clique em OK e reinicie o servidor IIS 6 para aplicar as alterações.

Configurar servidores IIS 7

O IIS 7 usa o módulo F5XForwardedFor para obter o IP de origem do cliente.

  1. Copie os arquivos F5XFFHttpModule.dll e F5XFFHttpModule.ini do diretório x86\Release ou x64\Release para um diretório personalizado, como C:\x_forwarded_for\x86 ou C:\x_forwarded_for\x64.

    - Certifique-se de que o processo do IIS tenha permissões de leitura e gravação no diretório. - Se os arquivos não estiverem no diretório release, baixe o F5XForwardedFor e copie-os para o diretório.
  2. No Gerenciador do IIS, clique em duas vezes em Modules.

  3. No painel Actions, clique em Configure Local Module e depois em Register.

  4. Registre o módulo com os seguintes parâmetros (exemplo para SO de 32 bits):

    Parâmetro

    Valor

    Name

    x_forwarded_for_x86

    Path

    Caminho completo para F5XFFHttpModule.dll, por exemplo C:\x_forwarded_for\x86\F5XFFHttpModule.dll

  5. Na caixa de diálogo Configure Local Module, selecione o módulo recém-registrado e clique em OK.

  6. Na seção ISAPI and CGI Restrictions, adicione a DLL registrada e defina Restriction como Allow.

  7. Reinicie o servidor IIS 7 para aplicar as alterações.

Configurar servidores Apache

Apache no Windows

O Apache 2.4 e versões posteriores incluem o módulo mod_remoteip.so, que lê o IP real do cliente no cabeçalho X-Forwarded-For.

  1. Crie o arquivo conf/extra/httpd-remoteip.conf.

    Usar um arquivo de configuração separado reduz edições diretas no httpd.conf e evita interrupções de serviço causadas por configurações incorretas.
  2. Adicione o seguinte conteúdo ao arquivo httpd-remoteip.conf. Substitua de <ip_range1> até <ip_rangex> pelos blocos CIDR de back-to-origin do WAF, separados por espaços.

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

    Exemplo com três blocos CIDR:

    RemoteIPInternalProxy 10.0.0.1 10.0.0.2 10.0.0.3
  3. Adicione a seguinte linha ao arquivo conf/httpd.conf para carregar o novo arquivo de configuração:

    Include conf/extra/httpd-remoteip.conf
  4. Atualize o formato de log no arquivo httpd.conf para usar %a, que registra o IP remoto resolvido pelo módulo 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 o Apache para aplicar as alterações.

Apache no Linux

Apache 2.4 e versões posteriores: O módulo remoteip_module é nativo. Siga as mesmas etapas descritas para Apache no Windows.

Versões anteriores ao Apache 2.4: Instale o módulo de terceiros mod_rpaf.

  1. Instale o módulo 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 o seguinte conteúdo ao arquivo /alidata/server/httpd/conf/httpd.conf. Para RPAFproxy_ips, use os IPs do módulo mod_rpaf encontrados nos logs do Apache, e não os IPs do servidor proxy do WAF. Na maioria dos casos, há dois endereços IP listados.

    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 o Apache:

    /alidata/server/httpd/bin/apachectl restart

Para obter detalhes sobre o módulo mod_remoteip do Apache, consulte a documentação de módulos do Apache.

Configurar servidores Tomcat

O Tomcat lê o IP do cliente no cabeçalho X-Forwarded-For por meio da classe AccessLogValve.

  1. Abra o arquivo tomcat/conf/server.xml.

  2. Atualize a entrada AccessLogValve para registrar %{X-FORWARDED-FOR}i em vez do host remoto padrão:

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

Configurar contêineres Kubernetes

Quando o servidor de origem roda no Kubernetes, o controlador Ingress armazena o IP de origem do cliente em X-Original-Forwarded-For e os IPs de back-to-origin do WAF em X-Forwarded-For. Para restaurar o IP de origem em X-Forwarded-For, atualize a configuração do controlador Ingress.

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

    kubectl -n kube-system edit cm nginx-configuration
  2. Adicione as seguintes chaves:

    compute-full-forwarded-for: "true"
    forwarded-for-header: "X-Forwarded-For"
    use-forwarded-headers: "true"
  3. Salve o arquivo. As alterações entram em vigor imediatamente, sem necessidade de reinicialização.

  4. Atualize sua aplicação para ler o IP de origem do cliente no cabeçalho X-Original-Forwarded-For em vez de X-Forwarded-For.

Próximos passos