Proxies confiáveis

Cadastro dos proxies e balanceadores de carga confiáveis na identificação do endereço do cliente das requisições HTTP.

Quando o acesso ao sistema passa por balanceadores de carga ou proxies reversos, o Engine recebe a conexão do último desses elementos, e não do navegador do usuário. O endereço do cliente final é informado pelos próprios elementos intermediários, nos cabeçalhos HTTP X-Forwarded-For ou Forwarded. Como esses cabeçalhos também podem ser enviados por qualquer cliente, o Engine só confia neles quando a requisição chega de um proxy registrado neste cadastro.

O endereço identificado é utilizado na auditoria do sistema, como na coluna iSourceAddr do log transacional e nos relatórios de logins, e na limitação das tentativas de acesso malsucedidas, que atrasam novas tentativas do mesmo endereço. Por isso, é importante que todos os elementos intermediários da infraestrutura do sistema estejam cadastrados.

Processo Proxies confiáveis

Caminho: Administração do sistema > Servidores > Proxies confiáveis.

Cada registro identifica um balanceador de carga, proxy reverso ou outro elemento intermediário da infraestrutura de rede do sistema, com os seguintes campos:

  • Nome: nome que identifica o proxy.
  • Endereço IP ou rede: endereço IPv4 ou IPv6 do proxy, como 10.0.0.5 ou 2001:db8::5. Também é possível informar uma rede na notação CIDR, como 10.0.0.0/24, quando o serviço utilizar um conjunto de endereços, como ocorre com balanceadores de carga em nuvem.

As redes devem ter a máscara de, no mínimo, /8 no IPv4 e /16 no IPv6. Redes mais amplas, como 0.0.0.0/0, fariam o Engine confiar em praticamente qualquer cliente, que poderia então informar um endereço falso. Os endereços inválidos e as redes mais amplas que esse limite são ignorados pelo Engine e registrados em seu log.

Os endereços de loopback (127.0.0.1 e ::1) são sempre confiáveis e não precisam ser cadastrados, pois correspondem a proxies executados no mesmo computador do Engine.

Devem ser cadastrados somente os proxies administrados pela própria empresa, cujos cabeçalhos de encaminhamento sejam confiáveis, como os balanceadores de carga, os proxies reversos e os proxies das filiais. Proxies de terceiros, como os da rede de um cliente, de um provedor de internet ou de uma VPN pública, não devem ser cadastrados, pois o Engine não tem como garantir os endereços informados por eles.

Proxies das filiais

Quando os usuários de uma filial acessam o sistema por meio de um proxy da própria filial, o endereço registrado depende do caminho da requisição:

  • Proxy da filial, seguido de um proxy cadastrado, como um balanceador de carga: sem o cadastro do proxy da filial, o endereço registrado é o dele, normalmente o endereço de saída da filial para a internet ou para a rede corporativa. O endereço é considerado verificado, mas todos os usuários da filial aparecem com o mesmo endereço. Isso ocorre porque o Engine percorre a cadeia de encaminhamento somente enquanto os elementos são proxies confiáveis, e os endereços informados pelo proxy da filial poderiam ter sido forjados. Para registrar o endereço do computador de cada usuário, cadastre o endereço com que o proxy da filial chega ao proxy seguinte.
  • Proxy da filial conectado diretamente a um Engine: sem o cadastro do proxy, os endereços informados por ele são registrados como não verificados. Cadastre o endereço do proxy para que eles sejam considerados confiáveis.

Em ambos os casos, o endereço do computador do usuário não é perdido: o evento de login da sessão, no log transacional, guarda o o endereço da conexão recebida pelo Engine e a cadeia completa de endereços informada pelos cabeçalhos de encaminhamento, inclusive os que não puderam ser verificados.

Ao cadastrar o endereço de saída de uma filial, os demais computadores que utilizem esse mesmo endereço sem passar pelo proxy também podem informar os cabeçalhos de encaminhamento e, portanto, um endereço falso. Esse risco costuma ser aceitável em uma rede corporativa, mas deve ser avaliado antes do cadastro.

Identificação do endereço do cliente

O Engine identifica o endereço do cliente final de cada requisição HTTP da seguinte forma:

  • Sem os cabeçalhos de encaminhamento, é utilizado o endereço da conexão recebida.
  • Quando a conexão é recebida de um proxy confiável, a cadeia de endereços informada pelos cabeçalhos é percorrida do último ao primeiro elemento, enquanto eles forem proxies confiáveis. O primeiro endereço que não corresponder a um proxy confiável é o do cliente. Dessa forma, um endereço forjado pelo cliente e repassado pelo proxy não é considerado.
  • Quando a conexão é recebida de um computador que não está cadastrado, os cabeçalhos podem ter sido forjados. O primeiro endereço informado por eles é registrado, por ser a melhor informação disponível, mas é marcado como não verificado.

Os endereços não verificados são gravados no log transacional com o sufixo ?, como 203.0.113.5?, e são exibidos nos relatórios com o rótulo “(não confiável)”. Ao clicar no rótulo, é exibida uma explicação de como cadastrar o proxy. As consultas por endereço de origem, como as do relatório “Administração do sistema > Auditoria > Logs de alterações de registros”, encontram tanto os endereços verificados quanto os não verificados.

Quando os cabeçalhos X-Forwarded-For e Forwarded são informados ao mesmo tempo, prevalece o X-Forwarded-For, que é o mais utilizado pelos proxies.

Identificação dos proxies a cadastrar

Quando uma requisição com cabeçalhos de encaminhamento é recebida de um computador que não está cadastrado, o Engine registra em seu log, uma única vez para cada computador, uma mensagem como a abaixo:

The peer 10.0.0.5 is not a trusted proxy, but it informed the client address 203.0.113.5 by the
forwarding headers. The address will be recorded as unverified, with the suffix "?".

Se o computador indicado fizer parte da infraestrutura do sistema, ele deve ser cadastrado. O manual de balanceadores de carga descreve a configuração dos cabeçalhos de encaminhamento nas soluções mais utilizadas.