Qualquer maneira de determinar se um balanceador de carga está sendo usado em um site?

2

O título é praticamente isso. Existe algum comportamento específico que seja indicativo da presença de um balanceador de carga em um determinado site?

    
por Tom 28.01.2010 / 05:16

7 respostas

4

EDIT: Isso será muito difícil de fazer, se não impossível (não gostar dessa palavra), já que o objetivo de ter um LoadBalancer é tornar a interação do cliente transparente e basicamente invisível. Dito isto, aqui está o meu post original:

Eu administro um balanceador de carga para um site bastante grande. A única indicação de que nossos visitantes estão visitando um servidor de aplicativos específico é que, na verdade, colocamos o nome específico do servidor na parte inferior de sua página de login. Isso nos ajuda a solucionar problemas que eles têm.

Além disso, só consigo pensar em uma coisa que o "leve em consideração" para o fato de que estamos executando um balanceador de carga se não seguimos essa política. Veja como você poderia dizer, mas vai levar um pouco de sorte.

Digamos que o balanceador de carga esteja configurado para encaminhar todo o tráfego para um ou outro servidor. Ou, pelo menos, encaminha o tráfego ssh entre um servidor para outro. Mesmo que você provavelmente não tenha login em cred para entrar em nenhuma das caixas, ambos fornecerão uma chave diferente se você tentar efetuar login. Portanto, se você tentar efetuar login via ssh na primeira vez, será perguntado se você quer aceitar a chave. Então, se você tiver sorte no segundo ou terceiro pedido, será informado que existe uma chave diferente (ou seja, outra caixa). Em um sistema * nix você é frequentemente alertado que isso pode ser devido a um homem no meio do ataque.

Então, duas coisas precisam estar em vigor:

  1. SSH no servidor remoto
  2. LB de SSH

Portanto, se você obtiver duas chaves em um período de tempo relativamente curto, provavelmente poderá presumir que o administrador do sistema não as alterou, mas sim que você acabou de se comunicar com duas máquinas separadas por trás de um balanceador de carga.

Nota: há um outro item, mas é um tiro real no escuro. Você poderia tentar descobrir com qual bloco de IPs esse servidor estava agrupado. Então, digamos que em um desses endereços IPs particulares é colocado no LB (na verdade, é em um desses IPs).

O Load Balancer é colocado em XXX.XXX.XXX.5, por exemplo. O LB será então configurado para capturar todo o tráfego para pelo menos um endereço IP adicional. Normalmente, ele não encaminha o tráfego para XXX.XXX.XXX.5 (o hardware comercial que definitivamente não faço isso). Então você pode contar com o endereço e o endereço do administrador.

Se o LB estiver configurado para permitir o admin de todos os hosts externos, você poderá pender algo como / admin para os endereços IP até encontrar o LB. Isso pressupõe que o LB use esse caminho para administração.

    
por 28.01.2010 / 05:38
6

Não há um caminho determinante, mas há uma sacola de pistas que você pode procurar.
 - nmap. O nmap pode fornecer algumas dicas sobre o sistema operacional de qualquer dispositivo com o qual você está falando. Se ele diz BSD e o fim do URL em .aspx, você está em alguma coisa.  - cookies: muitos loadbalancers adicionam (ou podem adicionar) cookies de sessão. Procure por quaisquer estranhos e google-los, se você chegar aos fóruns de suporte da F5, viola.
 - outros cabeçalhos variados: muitos deles adicionam cabeçalhos baseados em coisas como se um item estivesse em cache ou não (e outras razões). Procure por cabeçalhos interessantes e pesquise-os no Google.
 - Na página ou enterrado em um comentário html é comum que os desenvolvedores tenham adicionado um "servido por web7" para ajudá-los a solucionar problemas.  - solicitar o mesmo conteúdo rapidamente de vários ip's diferentes e comparar os cabeçalhos ETag. Apache, por padrão, baseia o etag no inode do sistema de arquivos, e muitos administradores nunca chegam a ajustá-lo, então se você vir um Etag diferente para o mesmo conteúdo, você pode adivinhar vindo de servidores diferentes (funciona somente com o apache) se não for ajustado, só funcionará se não for um sistema de arquivos compartilhado).

Sinceramente, eu só espero que tudo isso lhe dê uma resposta significativa como 1 vez em 4, mas no geral você não pode saber, a não ser que Catherine diga "algo está errado".

    
por 28.01.2010 / 15:41
2

IP ID muda para cada pilha IP, portanto, o host IP fica "atrás" do balanceador de carga. Uma ferramenta como hping lhe daria exatamente isso: observe IDs que NÃO pertencem ao mesmo intervalo, ou - mesmo que por alguma estranha coincidência perto o suficiente - não aumente:

hping3 www.yoursite.com -S -p 80 (or whatever)

O item acima captura vários hosts atrás de LB "sob" a camada de aplicação.

    
por 08.07.2011 / 14:16
1

Então, acho que a questão era, você pode descobrir casualmente a partir do comportamento do site se houver um load balacner, e eu me arrisco que a resposta é "não a menos que algo esteja errado" (como os servidores estão fora de sincronia) . No entanto, é pelo menos teoricamente possível descobrir se existe um dispositivo "invisível" extra entre você e o servidor respondendo à solicitação. Esse dispositivo pode ser um servidor proxy, um encaminhador de porta, um dispositivo NAT estático, um balanceador de carga ou possivelmente algo que eu tenha perdido. Basicamente tudo o que responde a um ping no IP, mas não está servindo uma solicitação HTTP. Essencialmente, você descobre quantos saltos existem entre você e o IP público do site usando algo como traceroute. Em seguida, você faz uma inspeção de pacotes para determinar o TTL de um pacote que chega do host. Uma vez que os possíveis valores iniciais para o TTL são limitados e bem definidos (a menos que alguém esteja fazendo algum hacking sério em sua pilha de rede), você pode determinar se há ou não um salto extra. Não tenho certeza se isso ajuda você, mas pelo menos acho que é um pensamento interessante.

    
por 28.01.2010 / 06:28
1

Se o balanceador de carga estiver fazendo persistência baseada em cookie , olhar para os cookies pode lhe dar uma pista.

    
por 28.01.2010 / 06:45
1

Preste muita atenção aos cabeçalhos HTTP.

wget --cabeçalhos de salva
pode ajudá-lo a capturá-los .. (há também plugins do firefox que controlam os cabeçalhos)

Acerte a mesma página repetidamente e procure por itens como cabeçalhos alternativos "Última modificação ou expiração".

Muitos sites também codificam seus servidores de backend nos cabeçalhos. Isso deve se destacar se estiver lá.

Boa sorte.

    
por 28.01.2010 / 17:57
1

Pode valer a pena tentar identificar as diferentes pilhas de IP (se houver) usando o campo de identificação IP. Você pode querer ler mais sobre como fazer isso na página Scapy Demo (encontre a linha com o Palavras 'campo IPID').

    
por 08.07.2011 / 14:55