httpd log de acesso, ip logado é invertido proxy como encontrar o proxy real

1

Verifique o log de acesso e descubra que o IP que foi registrado dos usuários veio do servidor proxy invertido.

A configuração é assim

www.abc.com -> reversed proxy to my server 123.123.123.123 

Existe alguma maneira de configurar o log de acesso http para rastrear o IP de entrada real por trás do servidor proxy invertido?

    
por flyclassic 13.01.2012 / 09:49

2 respostas

4

Você está procurando pelo cabeçalho X-Forwarded-For . Qualquer proxy que valha a pena adicionará esse cabeçalho às solicitações HTTP que ele está encaminhando.

Se todo o seu site estiver por trás desse proxy, será necessário encontrar o LogFormat relevante para ele, que geralmente terá a seguinte aparência:

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

e adicione o cabeçalho a ele (ou troque o %h , que será o seu proxy reverso) assim:

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

Se você não quiser redefinir o formato do log combined , crie o seu próprio:

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined_proxy
CustomLog /path/to/logfile.log combined_proxy

%{<header>}i é uma maneira de colocar qualquer outro cabeçalho de solicitação em seus arquivos de registro.

Nota: Esse cabeçalho nem sempre será necessariamente um único endereço IP. Se a solicitação tiver passado por mais de um proxy, você receberá uma lista separada por vírgula do formulário: client, proxy1, proxy2 ; talvez seja necessário atualizar seus scripts ou registrar os raspadores para acomodar isso.

    
por 13.01.2012 / 10:38
3

Sim, existe.

Para a versão atual do Apache: mod_rpaf
Para qualquer coisa posterior ao ramo 2.3: mod_remoteip

Ambos substituirão a variável REMOTE_ADDR no processo Apache em execução pelo último IP do cabeçalho X-Forwarded-For recebido de qualquer proxy reverso confiável. Esse endereço IP também será registrado em seus registros Apache padrão sem ter que alterá-los.

Esta variável também estará disponível para o seu código PHP como $_SERVER['REMOTE_ADDR'] , que é onde você normalmente espera que o endereço IP remoto seja.

A única configuração necessária para esses módulos é fornecer uma lista de proxies reversos confiáveis.

Em uma nota de segurança, esses cabeçalhos podem ser adicionados, removidos, falsificados e possivelmente confusos. Não há garantia de que qualquer endereço IP obtido desse cabeçalho seja o endereço IP verdadeiro do visitante. O último da lista (que é aquele adicionado pelo seu proxy reverso confiável) é o único que você pode ter certeza.

    
por 17.01.2012 / 16:09