É possível saber se dois endereços IP pertencem ao mesmo servidor?


21

Dado dois endereços IP públicos e o conhecimento que ambos estão na mesma rede / 27, seria possível determinar de um local remoto (ou seja, país diferente) se eles pertencem a um ou dois servidores?


2
Você pode elaborar o que você está tentando realizar e a natureza dos servidores que você está tentando identificar?
bobstro

3
Os tempos de ping podem fornecer uma pista - por exemplo, se todos os IPs responderem em um período aleatório de tempo, mas dois deles responderem quase com o mesmo atraso.

10
Você tem permissão para fazer um DoS e ver se o outro também não responde?
Ben Voigt

1
@ AndréDaniel Os tempos de ping falharão totalmente se os servidores estiverem colocados. O mesmo rack não é o mesmo servidor.
TomTom

Respostas:


29

Não, não é, no caso geral.


Algumas adições, para deixar nossos convidados felizes:

  • Não há nada nos protocolos TCP / IP base (por exemplo, IP / TCP / UDP, ICMP) que tenha como objetivo específico fazer a distinção solicitada na pergunta.
  • O mesmo vale para muitos protocolos de nível superior, por exemplo, HTTP.
  • É realmente possível usar diferenças mais ou menos sutis nos padrões de resposta para adivinhar o sistema. Se você possui dois sistemas muito diferentes, por exemplo, um servidor Linux e um Windows, isso pode ser suficiente para garantir a existência de dois hosts.
  • Isso se tornará mais difícil quanto mais semelhantes forem os sistemas. Dois nós em um cluster da Web HA com hardware e sistema operacional idênticos provavelmente não podem ser separados dessa maneira. Considero isso o caso geral na maioria dos cenários hoje.
  • Por fim: duas máquinas virtuais na mesma caixa física são um ou dois servidores? Dependendo do motivo pelo qual você tenta se diferenciar, isso pode ser importante e é completamente impossível saber no nível da rede.

2
A resposta de Sven está 100% correta, mas pode ser possível adivinhar se eles estão executando sistemas operacionais diferentes (via nmap ou pelo teste de ping descrito aqui kellyodonnell.com/content/determining-os-type-ping ). Eles ainda podem ser vms executando o host único.
21415 Andy

1
@ Andy: É por isso que eu disse "no caso geral". Em alguns casos, você pode descobrir, mas por outro lado, em alguns casos, nem percebe que não é um computador atrás de um único endereço IP, mas cem ...
Sven

3
@ Sven: A questão é se dois IPs se correlacionam com um único computador, não se os serviços em um IP comum se correlacionam com várias máquinas. Concordo que não há um método universal garantido para funcionar sempre, mas se pudermos encontrar semelhança suficiente entre as respostas recebidas, pode ser possível fazer um palpite razoável. Michelle precisa elaborar exatamente o que deve ser realizado para determinar se existe uma solução útil. Importa se é uma configuração virtual ou com balanceamento de carga, por exemplo?
bobstro

1
Ambíguo quando você joga na virtualização. Suponha que você tenha duas VMs, Convidado A e Convidado B, cada uma com IP diferente, mas na mesma rede / 27. Suponha ainda que esses dois convidados sejam hospedados pelo Host C. Em um sentido, os dois / 27 endereços pertencem a "servidores" diferentes, mas em outro sentido eles podem passar pela mesma NIC e pelo mesmo host, para que se possa argumentar que os IPs pertencem para o mesmo "servidor". Se o Convidado A, por sua vez, hospeda mais duas VMs, Convidado X e Convidado Y, também com seus próprios endereços / 27, qual desses IPs pertence ao mesmo computador? E se você "vMotion" alguma dessas VMs? Eu não tenho uma boa resposta.
Joshua Huber

13

Curioso quanto ao "porquê". As preocupações com as máquinas com dois roteadores são normalmente localizadas como dor de cabeça de alguns administradores de sistemas sem nome. Os detalhes devem ser ocultados pelo modelo OSI.

Resposta centrada no Linux adiante.

Existem algumas maneiras de gerar impressões digitais e fazer um palpite educacional.

  1. nmap -o e nmap com uma varredura de porta decente. Os servidores nem sempre se ligam às duas NICs. Mas muitas vezes eles fazem.

  2. Endereços MAC. Se você tinha algum meio de obter os endereços MAC, os fabricantes gostam de usar endereços consecutivos para hardware integrado. Dois endereços MAC quase idênticos são provavelmente a mesma placa-mãe. Isso não se aplica aos cartões de pós-venda, é claro.

  3. Saudações. Telnet, ftp, smtp e similares oferecem informações de identificação. Veja se esses serviços estão em execução, ofereça informações distintas suficientes. As faixas provavelmente são raras hoje, mas ainda valem uma chance.

  4. Teste o comportamento independente da NIC. Por exemplo, tente desarmar hosts host fornecendo autenticação falsa para ssh uma dúzia de vezes. Se negar hosts for disparado, o soquete será fechado imediatamente na próxima tentativa. Veja se isso está acontecendo no outro IP também.

A / 27 net é ... o que, 29 hosts? Eu diria que as chances de identificar uma máquina de casas duplas com alta confiança são muito pequenas, talvez 5%. Mas, dado tão poucos hosts, você poderá adivinhar.

Pergunta divertida para uma entrevista. Eu posso roubá-lo, na verdade.


4
Quanto ao item 4, se os dois endereços estiverem executando o ssh e você puder se conectar a ele, poderá comparar as chaves do host. Em princípio, dois servidores diferentes poderiam receber a mesma chave de host, mas seria uma configuração muito estranha. Portanto, se você obtiver a mesma chave de host de ambos os endereços, eles provavelmente serão o mesmo servidor.
Nate Eldredge

Duas caixas com a mesma chave do host podem resultar da clonagem da máquina.
Peter Green

7

Teoricamente, você pode dar um nível de confiança significativo na maioria dos casos. Porém, existem algumas ressalvas que tornam muito mais difícil na prática.

Estarei sobrepondo outras respostas e provavelmente perdi algumas coisas, mas esse é pelo menos um raciocínio detalhado sobre o motivo pelo qual esses bits específicos são importantes ou não.

Primeiro, esqueça todos os pensamentos sobre os endereços MAC. A menos que você tenha acesso direto ao segmento de rede, não poderá vê-lo.

Também não confie nas verificações de portas. É trivial para portas de firewall apenas para determinados IPs, ter software escutando apenas em determinados IPs ou ter um sistema IDS / IPS que aplica filtragem quando uma varredura é detectada. Tudo isso estragará seus testes.

Ok, então a maneira que você pode dizer é simples: a probabilidade de duas caixas serem exatamente idênticas é baixa, a menos que estejam relacionadas de qualquer maneira. Então, o que você está realmente fazendo é tentar provar que são caixas diferentes, não tentar provar que são as mesmas.

  1. Ping. Você precisa testar os dois ao mesmo tempo e fazer muitos testes. Acontece que, embora haja instabilidade nos tempos da rede, há um ruído pseudo-aleatório de alta qualidade, se você tiver amostras suficientes em um período de tempo pequeno, o ruído será calculado em média o suficiente para fornecer uma comparação precisa.

    Cada salto da camada 2 em uma rede adiciona uma pequena quantidade de latência, diferentes níveis de congestionamento fornecerão diferentes valores de latência. Se os dois IPs mostrarem latência simultânea significativamente diferente, você poderá assumir que eles provavelmente não são a mesma caixa.

    Advertência 1: Um único servidor com dois uplinks (não vinculados) e configurado com um IP diferente em cada uplink pode ter um desequilíbrio de uplink suficiente para descartá-lo.

  2. Verificação de porta. As portas de destino podem estar em um dos três estados: escutando, fechado, filtrado. O local em que eles estão não é muito útil, conforme observado acima, mas ainda há informações úteis a serem obtidas.

    1. Caixas com portas abertas em vários IPs provavelmente executarão o mesmo software em todos os IPs. É possível executar, digamos, nginx em um IP e apache em outro, mas a maioria das pessoas não se incomoda. Imprima os serviços em execução para procurar semelhanças. Procure por qual software e versão ele está anunciando, quais opções ele suporta, que nome de host (se houver) é anunciado, se há alguma peculiaridade no comportamento do software, coisas assim.

      Os serviços da Web são os menos úteis para isso, muito mais úteis são coisas como SMTP (difícil de combinar e combinar devido ao suporte ao sendmail, vaza muitas informações), SNMP (uma mina de ouro da informação), SSH (quem executa vários daemons SSH? ) e HTTPS (se você tiver sorte e eles estiverem executando o mesmo software, poderá verificar diferenças na configuração do SSL, uma configuração idêntica, mas incomum, é um bom indicador). O NTP costumava ser um bom teste, mas agora está sendo travado com força devido ao seu uso pesado como um amplificador de DoS, o SNTP não é realmente preciso o suficiente para uma arma fumegante da mesma maneira.

    2. Impressão digital da camada 3. A principal maneira de obter impressões digitais remotamente de um sistema operacional é de peculiaridades na implementação do TCP / IP. Os detalhes exatos são longos demais para serem analisados ​​aqui, mas essencialmente os metadados de pacotes vazam muitas informações, assim como a porta fechada ou filtrada responde a uma conexão e como um host se comporta ao receber pacotes malformados. Embora essas características não sejam uma coisa certa para dizer o que está sendo executado, elas são razoavelmente garantidas para serem próximas das mesmas para cada IP vinculado a uma pilha TCP / IP específica. Sistemas significativamente diferentes devem ter características significativamente diferentes.

    Advertência 2: É provável que duas caixas executando exatamente o mesmo sistema operacional e patches de fornecedor sejam iguais. No Windows, duas cópias da mesma versão do Windows executando atualizações automáticas serão bastante indistinguíveis, a menos que tenham firewalls diferentes em execução. No Linux, é provável que as diferenças estejam relacionadas principalmente a exatamente qual versão e opções do kernel são fornecidas. Este teste só pode dar alta probabilidade de que dois IPs não estejam no mesmo sistema operacional.

  3. Repetir ataques. Com a lista de portas abertas nos dois IPs, execute ações idênticas em cada IP e procure discrepâncias no comportamento. Coisas como tempos limite, mensagens de erro, limites de novas tentativas etc. Alguns softwares são mais difíceis ou menos configurados para serem diferentes com base no IP. Se você souber que um IP está aceitando correio para um domínio específico, veja se o outro IP também aceita correio para esse domínio.

    Advertência 3: trata-se de dados de qualidade inferior à parte de impressão digital de serviço do teste 2, porque esse material é mais fácil de configurar de maneira diferente em IPs diferentes e há todo tipo de interação possível nos bastidores. A alta chance de resultados falsos gera pouca confiança nesses resultados.

Então, como eu disse, a teoria subjacente é que diferentes hosts provavelmente terão configurações diferentes e isso vazará informações.

O que isso não explica é que é muito mais difícil dizer se o mesmo site em execução em dois IPs é o mesmo servidor ou dois servidores configurados para redundância. Também não considera os administradores de sistema que estão executando o gerenciamento de configurações para manter seus sistemas muito semelhantes. Também não considera hosts que estão DNAT executando vários serviços executados em hosts diferentes em um único endereço IP.

A tecnologia de virtualização lança algumas chaves estranhas nos trabalhos. Sistemas em contêiner como o Docker estão compartilhando o suficiente da pilha para fazer com que os contêineres separados pareçam mais semelhantes do que realmente podem ser. As redes virtuais conectadas a um nic físico devem ser impossíveis de distinguir do hardware fisicamente separado, mas não são, decorrentes principalmente do fato de que a ponte é um software e, portanto, os pacotes precisam passar pela pilha de IP do host.

Há muitas maneiras de confundir as pessoas que tentam testar a repetibilidade. O melhor que você pode esperar é um padrão com baixa margem de dúvida.

A moral disso, para as pessoas que executam servidores, é que você deve configurar seus servidores para vazar o mínimo de informações possível:

  1. Desative as informações do banner o máximo possível. Quanto menos um ataque souber sobre sua configuração, melhor para você.

  2. O software aceita apenas conexões no IP em que ele deveria estar sendo exibido e somente quando necessário. Se não precisar ser acessível externamente, vincule-o apenas ao host local. Reduzir a superfície de ataque é sempre bom.

  3. Se você absolutamente precisa ouvir algo e deseja evitar a correlação entre dois IPs, tente reduzir ao mínimo as opções incomuns. Você quer que ele se misture.

  4. Tenha um firewall em execução com uma política de descarte padrão. Acho que pode haver valor em uma configuração do IDS que responda a invasores com respostas aleatórias; o ruído dificultaria a confiança de um invasor em seus resultados, mas resultaria em fazer você se destacar.

  5. Módulos de atraso aleatórios são inúteis para evitar ataques de tempo. Não mesmo. Escolha um número aleatório e role um dado várias vezes, anotando o resultado mais o número que você escolheu no início. Você termina com um intervalo com um deslocamento fixo. Se o número aleatório for substituído, o intervalo se moverá. Se o intervalo for alterado, o deslocamento permanecerá o mesmo e é apenas uma questão de repetir o processo de amostragem para obter uma nova linha de base.

  6. Os normalizadores de pilha de IP existem, mas foram uma parte negligenciada da pesquisa de segurança da última vez que olhei. Provavelmente seria um bom mercado investir em um fornecedor de segurança.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.