Restaurar os IPs originais dos visitantes
Restaurar os IPs originais dos visitantes
Saiba como configurar o mod_cloudflare para registrar o endereço de IP original do seu visitante com base no seu tipo de servidor web de origem (incluindo Apache, NGINX, Microsoft IIS e outros).
Neste artigo
- Visão geral
- mod_remoteip
- mod_cloudflare
- Instruções do servidor web
- Restaurar o IP original do visitante com HAProxy
- Recursos relacionados
Visão geral
Quando o tráfego do seu site é roteado pela rede da Cloudflare, atuamos como um proxy reverso. Dessa forma, a Cloudflare pode diminuir o tempo de carregamento da página, roteando pacotes com mais eficiência e armazenando em cache os recursos estáticos (imagens, JavaScript, CSS etc.). Como resultado, ao responder a solicitações e registrá-las, seu servidor de origem retorna um endereço de IP da Cloudflare.
Por exemplo, se você instalar aplicativos que dependem do endereço de IP de entrada original do visitante, um endereço de IP da Cloudflare é registrado por padrão.O endereço de IP original do visitante aparece em um cabeçalho HTTP anexado chamado CF-Connecting-IP. Seguindo nossas instruções do servidor web, você pode registrar o endereço de IP original do visitante em seu servidor de origem.Se este cabeçalho HTTP não estiver disponível quando as solicitações chegarem a seu servidor de origem, verifique sua configuração Regras de transformação e Transformações gerenciadas.
O diagrama a seguir descreve as diferentes maneiras de gerenciar endereços IP com e sem o Cloudflare.
mod_remoteip
Visão geral
A Cloudflare deixou de atualizar e de ser compatível com o mod_cloudflare. No entanto, se você estiver usando um servidor Apache com um sistema operacional como Ubuntu Server 18.04 e Debian 9 Stretch, poderá usar o mod_remoteip para registrar o endereço de IP original do visitante.
Como este módulo foi criado por terceiros, não podemos fornecer suporte técnico para problemas relacionados ao plug-in.
Para instalar mod_remoteip no servidor web Apache:
1. Ative mod_remoteip emitindo o seguinte comando:
sudo a2enmod remoteip
2. Atualize a configuração do site para incluir RemoteIPHeader CF-Connecting-IP, por exemplo /etc/apache2/sites-available/000-default.conf
ServerAdmin webmaster@localhostDocumentRoot /var/www/htmlServerName remoteip.andy.supportRemoteIPHeader CF-Connecting-IPErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined
3. Atualize a entrada LogFormat combinada em apache.conf
, substituindo %h por %a em /etc/apache2/apache2.conf.
Por exemplo, se o LogFormat que aparecer for
LogFormat "%h %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
você deve atualizar o LogFormat da seguinte maneira:
LogFormat "%a %l %u %t "%r" %>s %O "%{Referer}i" "%{User-Agent}i"" combined
4. Defina endereços de proxy confiáveis criando /etc/apache2/conf-available/remoteip.conf
digitando o seguinte código e os
IPs da Cloudflare:
RemoteIPHeader CF-Connecting-IPRemoteIPTrustedProxy 192.0.2.1 (example IP address)RemoteIPTrustedProxy 192.0.2.2 (example IP address)(repetir para todos os IPs da Cloudflare listados em [https://www.cloudflare.com/ips/](https://www.cloudflare.com/ips/))
5. Ative a configuração do Apache:
sudo a2enconf remoteipHabilitar conf remoteip.Para ativar a nova configuração, você precisa executar:service apache2 reload
6. Configuração de teste do Apache:
sudo apache2ctl configtestSintaxe OK
7. Reinicie o Apache:
sudo systemctl restart apache2
mod_cloudflare
Há dois métodos para instalar o mod_cloudflare: baixar a extensão Apache do GitHub ou adicionar código ao seu servidor web de origem.
Baixar pacotes ou scripts do GitHub
Se você estiver usando um servidor web Apache, você pode baixar o mod_cloudflare do GitHub.
Adicionar código ao seu servidor Web de origem
Se você não conseguir instalar o mod_cloudflare ou se um plug-in Cloudflare para a plataforma do sistema de gerenciamento de conteúdo não estiver disponível para restaurar o IP original do visitante, adicione esse código ao servidor Web de origem na tag ou antes dela em qualquer página que exija os IPs originais do visitante:
<?php if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];?>
Este comando fará com que o endereço de IP fique disponível apenas para os scripts que precisam dele, sem ser armazenado nos registros reais do servidor.
Apache
Para remover o mod_cloudflare, você precisa comentar na linha de configuração do Apache que carrega o mod_cloudflare.
Isso varia dependendo da sua distribuição Linux, mas na maioria dos casos, se você procurar em /etc/apache2
, poderá fazer uma busca e encontrar a linha:
LoadModule cloudflare_module
Comente ou remova essa linha e reinicie o Apache. O mod_cloudflare deve ter sumido.
Se estiver usando Ubuntu ou Debian, você verá:
file/etc/apache2/mods-enabled/cloudflare.load
exclua este arquivo para remover o mod_cloudflare e reinicie o Apache.
NGINX
O mod_cloudflare é instalado quando você modifica
o arquivo de configuração nginx nginx.conf
com o ngx_http_realip_module
.
Para remover o mod_cloudflare , você tem que comentar ou remover essa linha; ao reiniciar o nginx, o mod_cloudflare deve ter sumido_._
Instruções do servidor web
Veja abaixo as instruções sobre como configurar seu servidor web para registrar os IPs originais dos visitantes com base em seu tipo de servidor web:
- Certifique-se de que estejam instalados:
- Red Hat/Fedora
sudo yum install httpd-devel libtool git
- Debian/Ubuntu
sudo apt-apt install apache2-dev libtool git
- Red Hat/Fedora
- Clone o seguinte para a criação mais recente do mod_cloudflare:
- Red Hat/Fedora/Debian/Ubuntu:
git clone https://github.com/cloudflare/mod_cloudflare.git; cd mod_cloudflare
- Red Hat/Fedora/Debian/Ubuntu:
- Use a ferramenta de extensão do Apache para converter o arquivo .c em um módulo:
- Red Hat/Fedora/Debain/Ubuntu:
apxs -a -i -c mod_cloudflare.c
- Red Hat/Fedora/Debain/Ubuntu:
- Reinicialize e verifique se o módulo está ativo:
- Red Hat/Fedora
service httpd restart; httpd -M|grep cloudflare
- Debian/Ubuntu:
sudo apachectl restart; apache2ctl -M|grep cloudflare
- Red Hat/Fedora
- Se o servidor da internet estiver por trás de um balanceador de carga, adicione a seguinte linha à sua configuração do Apache (geralmente httpd.conf) e substitua 123.123.123.123 pelo endereço de IP do seu balanceador de carga:
IfModule cloudflare_moduleCloudFlareRemoteIPHeader X-Forwarded-ForCloudFlareRemoteIPTrustedProxy **[insert your load balancer’s IP address]**DenyAllButCloudFlare/IfModule
Use o módulo ngx_http_realip_module
Módulo NGINX e os seguintes parâmetros de configuração:
set_real_ip_from 192.0.2.1 (exemplo de endereço de IP)(repetir para todos os IPs da Cloudflare listados em [https://www.cloudflare.com/ips/)](https://www.cloudflare.com/ips/)
#use um dos dois seguintes
real_ip_header CF-Connecting-IP;#real_ip_header X-Forwarded-For;
Essa lista de prefixos precisa ser atualizada regularmente. Publicamos a lista completa em endereços de IP da Cloudflare.
Consulte também: Cloudflare e NGINX.
- <Execute o seguinte script para instalar o mod_cloudflare como parte do EasyApache:
bash <(curl -s https://raw.githubusercontent.com/cloudflare/mod_cloudflare/master/EasyApache/installer.sh)
- Após a instalação, você precisa recompilar seu Apache com o novo plugin mod_cloudflare.
Ao usar o Railgun (ou outro software de proxy reverso, como o Varnish), as solicitações do usuário virão do seu servidor de Railgun e não da Cloudflare. Devido ao fato de que as solicitações não virão diretamente da Cloudflare, qualquer mod adicionado não irá restaurar os endereços de IP dos visitantes por padrão.
- Para corrigir isso, abra sua configuração do Apache, que de modo geral pode ser encontrada em
/etc/apache2/apache2.conf
,/etc/httpd/httpd.conf
,/usr/local/apache/conf/httpd.conf
ou outro local, dependendo da configuração. Se você não tiver certeza, pergunte ao seu provedor de hospedagem. - No final, adicione:
CloudflareRemoteIPTrustedProxy railgun_address
Portanto, se estiver localizado em 127.0.0.1, seu servidor de Railgun se parecerá com o seguinte:CloudflareRemoteIPTrustedProxy 127.0.0.1
- Se você tiver mais de um servidor para adicionar à lista de proxies confiáveis, poderá adicioná-los no final:CloudflareRemoteIPTrustedProxy 127.0.0.1 127.0.0.2
Para que o Lighttpd registre automaticamente o IP do servidor para os logs de acesso e para a sua aplicação, você pode seguir uma das duas soluções abaixo.
- Abra seu arquivo lighttpd.conf e adicione mod_extforward à lista server.modules. Ela deve vir apósmod_accesslog para mostrar o IP real nos registros de acesso
- Adicione o seguinte bloco de código em qualquer lugar no arquivo lighttpd.conf depois da lista de módulos do servidor e então reinicie o Lighttpd
$HTTP["remoteip"] == "192.2.0.1 (example IP address)"{extforward.forwarder = ( "all" => "trust" )extforward.headers = ("CF-Connecting-IP")}
(repetir para todos os IPs de Cloudflare listados em [https://www.cloudflare.com/ips/](https://www.cloudflare.com/ips/))
- Acesse o seu Web Admin Console do LiteSpeed.
- Habilite a opção Use Client IP no Cabeçalho, em Configuração.
- Uma vez ativada, seus logs de acesso passarão a mostrar os endereços IP corretos, e até a variável
$_SERVER['REMOTE_ADDR']
do PHP conterá o endereço de IP real do cliente, ao invés de um endereço de IP da Cloudflare, o que por si só resolverá a maioria dos problemas que você poderia encontrar ao ativar a Cloudflare em sites habilitados para PHP (como instalações do WordPress ou vBulletin).
Para o IIS 7 - 8:
Siga as instruções aqui.
Para o IIS 8.5 - 10:
Do IIS 8.5 em diante, os registros de log personalizados são uma opção integrada. Consulte IIS Enhanced Logging
No Gerenciador do IIS, clique duas vezes em Logging no menu Actions do site no qual você está trabalhando.
Em seguida, selecione W3C como formato e clique em Select Fields ao lado do menu suspenso de formatação, na subseção Log File .
Clique em Add Field e adicione ao cabeçalho CF-Connecting-IP .
Clique em Ok. Você deverá ver sua nova entrada refletida em Custom Fields. Clique em Apply quando voltar à janela de Logging .
Se o procedimento for bem-sucedido, o arquivo de log agora deve ter um sublinhado:Você deverá também ver a alteração nos campos:
Reinicie o site, em seguida o W3SVC e, a seguir, a instância inteira, se a alteração não for refletida imediatamente.Ao utilizar o registro aprimorado no IIS 8.5+, ele não restaura o IP original do visitante no nível do aplicativo.
Para que o Tomcat7 restaure automaticamente o IP do visitante original nos seus registros de acesso e aplicativo, você precisará adicionar %{CF-Connecting-IP}i
ao seu esquema de registros.
Como exemplo, você pode adicionar o bloco abaixo ao seu arquivo server.xml
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%{CF-Connecting-IP}i - %h %u %t - "%r" - %s - %b - %{CF-RAY}i"/>
O que, como resultado, faria seus logs se parecerem com o seguinte:
IP do visitante — IP da Cloudflare — [04/Dec/2014:23:18:15 -0500] - "GET / HTTP/1.1" - 200 - 1895 - 193d704b85200296-SJC
Assista a esse tutorial de terceiros sobre como restaurar IPs de visitantes com o Magento e a Cloudflare.
Da mesma forma, a Cloudflare não escreveu essa extensão Magento, mas alguns de nossos clientes a acharam útil.
Como esse plug-in foi criado por terceiros, não podemos fornecer suporte técnico para problemas relacionados ao plug-in.
Para habilitar a equiparação correta do IP ao executar uma instalação do Invision Power Board 3 por meio da Cloudflare, siga essas instruções:
Faça login no ACP da sua instalação de IPB.
- Clique em Sistema.
- Em Overview, clique em Security.
- Em Security Center, clique em Security Settings.Verifique se Trust IP addresses provided by proxies? está verde.
Descrição do IPB4 para Trust IP addresses provided by proxies?
Se o seu ambiente de rede significa que as solicitações são tratadas por meio de um proxy (como em uma situação de intranet em um escritório ou universidade ou em um cluster de servidores com carga balanceada), talvez seja necessário habilitar essa configuração para que o endereço IP correto seja usado. Quando estiver habilitada, no entanto, um usuário mal-intencionado poderá abusar do sistema para fornecer um endereço IP falso. Na maioria dos ambientes, essa configuração deve ser deixada desativada.
Informações sobre como restaurar IPs de visitantes com Simple Machines (SMF) podem ser encontradas no Simple Machines Forum.
Se você estiver usando um servidor Apache, recomendamos instalar o mod_remoteip para restaurar o IP do visitante de volta para os seus registros.
Se você não tem acesso ao seu servidor para instalar um mod, então você pode modificar o núcleo.
As versões mais recentes do MyBB incluem uma opção de Scrutinize User do endereço IP (examinar o usuário).
CP Admin > Configuração > Opções de servidor e de otimização > Examinar o endereço IP do usuário? > Sim
Alternativamente, você pode instalar o plug-in de gerenciamento da Cloudflare disponível para o MyBB 1.6.
MyBB 1.6.0, 1.6.1, 1.6.2, or 1.6.3
- Navegue até
./inc/functions.php
. - Ir para a linha 2790.
- Substitua:
if(isset($_SERVER['REMOTE_ADDR']))
Por:if(isset($_SERVER['HTTP_CF_CONNECTING_IP']))
- Em seguida, substitua:
$ip = $_SERVER['REMOTE_ADDR'];
Por:$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
Um membro da equipe do Vanilla criou um plug-in da Cloudflare para o Vanilla para restaurar o IP do visitante original nos arquivos de log para sites auto-hospedados.
Como esse plug-in foi criado por terceiros, não podemos fornecer suporte técnico para problemas relacionados ao plugin.MediaWiki
- Abra
includes/GlobalFunctions.php
. Aproximadamente na linha 370, altere o seguinte:$forward = "\t(proxied via {$_SERVER['REMOTE_ADDR']}{$forward})";
TO$forward = "\t(proxied via {$_SERVER['HTTP_CF_CONNECTING_IP']}{$forward})";
- Abra
includes/ProxyTools.php
. Aproximadamente na linha 79, localize:if ( isset( $_SERVER['REMOTE_ADDR'] ) ){
e substitua por:if ( isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ){
A segunda etapa se aplica apenas às versões 1.18.0 e anteriores do MediaWiki. As versões mais recentes do MediaWiki reescreveram completamente o ProxyTools.php e o código a seguir não está mais presente. - Aproximadamente na linha 80, localize:
$ipchain = array( IP::canonicalize($_SERVER['REMOTE_ADDR']) );
Salve e carregue no seu servidor de origem.
Para versões em torno de 1.27.1:
- Vá para a linha 1232 em
GlobalFunctions.php
, altereREMOTE_ADDR
paraHTTP_CF_CONNECTING_IP
. - A seguir, vá para
WebRequest.php
, entre as linhas 1151 e 1159, altereREMOTE_ADDR
paraHTTP_CF_CONNECTING_IP
.
Um usuário do Xenforo criou um plugin para a Cloudflare.
Como esse plug-in foi criado por terceiros, não podemos fornecer suporte técnico para problemas relacionados ao plug-in.
- Abra
library/config.php
. - No final, acrescente:
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];}
- Carregue e substitua o arquivo.
Uma terceiro criou um módulo para a Cloudflare e o PunBB que irá restaurar o IP original do visitante.
Como esse plug-in foi criado por terceiros, não podemos fornecer suporte técnico para problemas relacionados ao servidor plugin.Cherokee
- Inicie o
cherokee-admin
no seu servidor. - Navegue até a interface de administração do Cherokee no seu navegador web.
- Selecione o Virtual Server para o domínio que está sendo atendido pela Cloudflare.
- Na guia Logging do Virtual Server selecionado, ative Accept Forwarded IPs
- Na caixa Accept from Hosts , digite os endereços de IP da Cloudflare.
Você pode corrigir o endereço IP alterando o campo PHP IP Server Param
na configuração do servidor do Livezilla para HTTP_CF_CONNECTING_IP
.
Para restaurar o IP do visitante no DataLife Engine:
- Abra:/engine/inc/include/functions.inc.phpLocalize:
$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Altere para:$db_ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
- Localize:
$ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Altere para:$ip_split = explode(".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
- Abra:/engine/modules/addcomments.phpLocalize:
$_SERVER['REMOTE_ADDR'],
Altere para:$_SERVER['HTTP_CF_CONNECTING_IP'],
- Localize:
$db_ip_split = explode( ".", $_SERVER['REMOTE_ADDR'] );
Altere para:$db_ip_split = explode( ".", $_SERVER['HTTP_CF_CONNECTING_IP'] );
Um desenvolvedor externo criou uma extensão da Cloudflare para TYPO3 que irá restaurar o IP do visitante original para os seus registros. A extensão também permite limpar seu cache da Cloudflare.
Como esse plug-in foi criado por terceiros, não podemos fornecer suporte técnico para problemas relacionados ao plug-in.
Se estiver usando o painel de controle de hospedagem do VestaCP, você terá tanto o Nginx quanto o Apache em execução no servidor. As solicitações são enviadas por proxy por meio do Nginx antes de ir para o Apache.
Devido a esse proxy do Nginx, você na verdade precisa das instruções para configurar o Nginx para retornar o endereço de IP do visitante real. Mod_remoteip para Apache não é necessário, a menos que você desative o servidor Nginx para algumas solicitações. Adicionar o mod_remoteip ao Apache não entrará em conflito com a configuração do servidor Nginx.
Um desenvolvedor externo criou um módulo para restaurar o IP do visitante chamado node_cloudflare.
Restaurar o IP original do visitante com HAProxy
Para extrair o IP original do cliente no cabeçalho X_FORWARDD_FOR, é necessário utilizar a seguinte configuração no HAProxy:
- Crie um arquivo de texto CF
_ips.lst
contendo todas as faixas de IP de https://www.cloudflare.com/en-gb/ips/ - Assegure-se de desativar a
opção forwardfor
no HAProxy
Configuração do HAProxy:
acl from_cf src -f /path/to/CF_ips.lst
acl cf_ip_hdr req.hdr(CF-Connecting-IP) -m found
http-request set-header X-Forwarded-For %[req.hdr(CF-Connecting-IP)] if from_cf cf_ip_hdr