是否有可能判断两个IP地址是否属于同一台服务器?

给定两个公共IP地址和同一networking上的知识,是否可以从远程位置(即不同的国家)确定它们是否属于一个或两个服务器?

不,一般情况下不是。


一些补充,使我们的客人从这么开心:

  • 基本的TCP / IP协议(例如IP / TCP / UDP,ICMP)没有什么特别的意思是要在问题中提出区分。
  • 许多更高级别的协议也是如此,例如HTTP。
  • 确实可以在答案模式中使用或多或less的微妙差异来猜测系统。 如果你有两个非常不同的系统,例如Linux和Windows服务器,这可能足以确定有两个主机。
  • 系统越相似,这将变得越困难。 具有相同硬件和操作系统的HAnetworking集群中的两个节点可能不可能通过这种方式分开。 我认为这是目前大多数情况下的一般情况。
  • 最后:两台虚拟机在一台或两台服务器的同一台物理机上? 根据你为什么试图区分首先,这可能是重要的,这是完全不可能告诉networking层面。

好奇“为什么”。 关于双宿主机器的担心通常被本地化为一些未命名的系统pipe理员的头痛。 细节意味着被OSI模型所隐藏。

以Linux为中心的答案在前面。

有一些方法可以产生指纹并进行猜测。

  1. nmap -o和nmap与体面的端口扫描。 服务器并不总是绑定到两个NIC。 但是很多时候他们做。

  2. MAC地址。 如果您有任何方法获取MAC地址,制造商喜欢使用集成硬件的连续地址。 两个几乎相同的MAC地址更可能是相同的主板。 当然这不适用于售后卡。

  3. 问候。 Telnet,f​​tp,smtp等都提供标识信息。 看看这些服务是否正在运行,提供足够的独特信息。 横幅今天很less见,但仍值得一试。

  4. testing网卡独立行为。 例如,尝试通过向ssh提供伪造身份validation来拒绝主机十几次。 如果拒绝主机被触发,你会发现套接字在下一次尝试中立即closures。 看看这是否也发生在其他IP上。

A / 27网是什么,29主持人? 我认为有机会确定一个双机家庭机器是非常渺茫,也许5%。 但是,如果这么less的主机,你可能会做出有根据的猜测。

有趣的问题面试。 我可能会偷走它。

理论上,在大多数情况下,您可以给出一个有意义的置信度。 有几个警告虽然这使得在实践中更难。

我会重叠其他的答案,我可能错过了东西,但这至less是一个详细的推理,为什么这些特定的位重要或不。

首先,忘记MAC地址的任何想法。 除非您直接访问网段,否则您将无法看到它们。

也不要相信端口扫描。 对于只有特定IP的防火墙端口是微不足道的,软件只侦听某些IP,或者有一个IDS / IPS系统在检测到扫描时应用过滤。 所有这些都会影响你的testing。

好吧,你可以这么说,很简单:两个盒子完全相同的概率是很低的,除非它们在其他方面是相关的。 所以你实际上在做的是试图certificate他们是不同的盒子,而不是试图certificate他们是相同的。

  1. 平。 您需要同时进行testing,并进行大量testing。 事实certificate,虽然networking时代存在抖动,但是这是相当高质量的伪随机噪声,如果在一个小的时间范围内有足够的样本,噪声的平均值就足以给出一个准确的比较。

    networking中的每个第2层跳跃都会增加less量的延迟,不同的拥塞程度会给出不同的延迟值。 如果两个IP显示明显不同的并发延迟,那么你可以认为它们可能不是同一个盒子。

    注意事项1:有两个上行链路(未绑定)并在每个上行链路上configuration不同IP的单个服务器可能会有足够的上行链路不平衡,从而导致此情况发生。

  2. 端口扫描。 目标端口可以处于以下三种状态之一:侦听,closures,过滤。 他们所在的实际上并没有太多的用处,但是还是有用的信息。

    1. 在多个IP上打开端口的盒子很可能在所有IP上运行相同的软件。 有可能在一个IP上运行nginx,在另一个上运行apache,但是大多数人并不打扰。 指纹运行的服务寻找相似之处。 寻找它宣传自己的软件和版本,支持哪些选项,宣传什么主机名(如果有的话),软件行为是否有怪癖等等。

      Web服务对于这一点来说是最不有用的,比如SMTP(由于sendmail支持而难以混合和匹配,泄漏大量信息),SNMP(信息金矿),SSH(谁运行多个SSH守护进程? )和HTTPS(如果你运气好,他们运行相同的软件,你可以检查SSLconfiguration的差异,一个相同的,但不寻常的configuration是一个很好的指标)。 NTP曾经是一个很好的testing,但是由于它被大量使用作为DoS放大器,所以现在它被严重locking了,SNTP对于吸烟枪来说是不够精确的。

    2. 第3层指纹。 远程识别操作系统的主要方法是TCP / IP实现中的怪癖。 确切的细节是太长,不能进入这里,但本质上,数据包元数据泄露了大量的信息,就像封闭或过滤端口如何响应连接以及主机在接收到畸形数据包时的行为一样。 虽然这些特征对于告诉正在运行的东西并不是特定的东西,但是对于绑定到特定TCP / IP堆栈的每个IP,它们被合理地保证是相同的。 显着不同的系统应该具有明显不同的特征。

    注意事项2:运行完全相同的操作系统和供应商补丁的两个盒子可能看起来一样。 在Windows上,运行自动更新的相同Windows版本的两个副本将很难区分,除非它们具有不同的防火墙运行。 在Linux上,差异可能主要与内核版本和选项的出货有关。 这个testing只能给出两个IP不在同一个操作系统上的可能性。

  3. 重播攻击。 使用两个IP上打开的端口列表,对每个IP执行相同的操作,并查找行为差异。 诸如超时,错误消息,重试限制等等。一些软件更难或不太经常被configuration为基于IP的不同。 如果您知道某个IP正在接受某个特定域的邮件,请查看其他IP是否也接受该域的邮件。

    注意事项3:这是比testing2的服务指纹部分更低质量的数据,因为这些东西在不同的IP上更容易configuration不同,并且存在各种可能的幕后交互。 虚假结果的高可能性使得对这些结果缺乏信心。

正如我所说,基本的理论是,不同的主机可能会是不同的configuration,并泄漏信息。

这不能说明的是,要判断在两个IP上运行的同一站点是否configuration了相同的服务器或configuration了冗余的两台服务器是非常困难的。 它也没有考虑正在运行configurationpipe理的系统pipe理员保持他们的系统非常相似。 它也不考虑将在不同主机上运行的多个服务禁止到单个IP地址的主机。

虚拟化技术引发了一些奇怪的扳手。 像Docker这样的集装箱系统共享足够的堆栈,使单独的容器看起来比实际上更加类似。 被桥接到物理networking的虚拟networking应该不可能与物理上分离的硬件区分开来,但是并不是主要来源于网桥是软件,因此数据包必须通过主机IP栈。

混淆试图重复性testing的人有很多方法。 你可以期望的最好的方式是怀疑率低的模式。

对于运行服务器的人来说,这是道德的,你应该configuration你的服务器泄漏尽可能less的信息:

  1. 尽可能关掉横幅信息。 攻击知道你的configuration越less越好。

  2. 软件只接受它应该服务的IP上的连接,并且只在必要时才使用。 如果不需要从外部访问,则仅将其绑定到本地主机。 减less攻击面总是好的。

  3. 如果您绝对必须听取某些内容,并且希望避免两个IP之间的关联,请尽量将不寻常的选项降至最低。 你想要它融入。

  4. 使用默认的删除策略运行防火墙。 我认为IDS设置可能会对随机响应的攻击者有所帮助,噪声会让攻击者更难相信他们的结果,但却会让你脱颖而出。

  5. 随机延迟模块对防止定时攻击毫无价值。 不完全是。 select一个随机数,然后掷一堆,记下结果加上你在开始时select的数字。 你最终得到的是一个固定偏移的范围。 如果随机数被replace,则范围移动。 如果范围发生变化,则偏移保持不变,这只是重复采样过程以获得新基线的问题。

  6. IP栈标准化程序确实存在,但是上次我查看的时候是安全研究中被忽略的部分。 对于安全厂商来说,投资可能是一个不错的市场。