This document is locked

Inserindo endereço IP do cliente no cabeçalho HTTP

Document

Jan 9, 2012 8:17 AM
Jan 9th, 2012

Introdução

          Existem cenários onde é necessário configurar NAT para as conexões de entrada, ou configurar o ACE com suporte ao SSL, fazendo com que seja efetuado proxy para as conxões destinadas aos servidores reais. Devido ao fato de ser realizado proxy para as conexões destindas aos servidores de backend, na visão do servidor real todas as conexões possuem como origem o endereço do ACE, e consequentemente os logs gerados com base no endereço de origem registram o endereço IP do ACE, podendo causar problemas para ferramentas de estatísticas de acesso que adotam as entradas de LOG como base para geração dos relatórios.

Como solução, o ACE permite que ao efetuar requisições para os servidores reais, seja inserido o endereço IP do cliente real no cabeçalho HTTP, e posteriormente esta informação possa ser utilizada pelo servidor WEB para gerar os LOGS.

NOTA: Em modo de terminação SSL o ACE efetua proxy para as conexões destinadas aos servidores reais;

Configurações ACE

1- Acessar o contexto responsável;

changeto <contexto>

2- Entrar em modo de configuração;

configure terminal

3- Ajustar o policy-map responsável;

policy-map type loadbalance http first-match <NOME>

  class class-default

    insert-http x-forwarded-for header-value "%is"


NOTA: Não é possível manipular o cabeçalho caso a conexão SSL seja realizada diretamente entre o cliente e o servidor real.

         Ex: balanceamento TCP simples para porta 443.

Configurações Apache

          Ajustar o arquivo de configuração do apache para incluir o valor especificado no campo x-forwarded-for do cabeçalho HTTP na coluna referente ao endereço do requisitante.

1- Formato padrão especificado nas configurações do apache;

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

2- Criar um novo formato denominado "proxy" que utilize o valor do campo X-Forwarded-For especificado no cabeçalho;

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

3- Criar uma condição para validação se o campo X-Forwarded-For contém VALOR.VALOR.VALOR.VALOR;

SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded

4- Configuração de condição para efetuar log utilizando o formato adequado case exista ou não o campo X-Forwarded-For com um valor válido;

CustomLog "logs/access_log" combined env=!forwarded

CustomLog "logs/access_log" proxy env=forwarded


NOTA: O Campo X-Forwarded-For pode possuir múltiplos valores caso tenha passado por múltiplos proxies que tenham manipulado seu valor.
Average Rating: 0 (0 ratings)

Actions

Login or Register to take actions

This Document

Posted January 9, 2012 at 8:17 AM
Stats:
Comments:0 Avg. Rating:0
Views:836 Contributors:0
Shares:0

Related Content