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


21

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


2
您能否详细说明要完成的工作以及要确定的服务器的性质?
bobstro 2015年

3
Ping定时可能提供了一个线索-例如,如果所有IP在随机的时间内响应,但是其中两个IP几乎以相同的延迟响应。

10
是否允许您一个进行DoS,看看另一个是否也没有响应?
Ben Voigt 2015年

1
如果将服务器并置,则@AndréDanielPing计时将完全失败。同一机架不是同一服务器。
TomTom

Answers:


29

不,在一般情况下不是。


一些补充,使我们的客人高兴:

  • 基本的TCP / IP协议(例如,IP / TCP / UDP,ICMP)中没有任何内容专门用于区分问题。
  • 对于许多更高级别的协议(例如HTTP)也是如此。
  • 确实有可能在答案模式中使用或多或少的细微差别来猜测系统。如果您有两个截然不同的系统,例如Linux和Windows服务器,那么这足以确定拥有两个主机。
  • 系统越相似,这将变得越困难。HA Web群集中具有相同硬件和操作系统的两个节点可能无法通过这种方式分开。我认为这是当今大多数情况下的一般情况。
  • 最后:同一物理机上的两个虚拟机是一台还是两台服务器?取决于您为何一开始就尝试与众不同,这可能很重要,并且在网络级别上完全不可能讲出来。

2
Sven的回答是100%正确的,但有可能猜测它们是否在运行不同的操作系统(通过nmap或此处描述的ping测试kellyodonnell.com/content/determining-os-type-ping)。但是,它们可能仍然都是运行在一台主机上的虚拟机。
安迪

1
@安迪:这就是为什么我说“一般情况”。在某些情况下,您可以找到答案,但另一方面,在某些情况下,您甚至根本没有注意到,不是单个IP​​地址后面的一台计算机而是一百个...
Sven

3
@Sven:问题是两个IP是否与一台计算机相关联,而不是同一IP上的服务是否与多台计算机相关联。我同意并不能保证每次都能使用一种通用方法,但是如果可以在收到的响应之间找到足够的共通性,则有可能做出合理的猜测。Michelle需要详细说明要完成的工作,以确定是否存在有用的解决方案。例如,它是负载平衡配置还是虚拟配置有关系吗?
bobstro 2015年

1
进行虚拟化时模棱两可。假设您有两个VM,Guest A和Guest B,每个VM具有不同的IP,但在相同的/ 27网上。进一步假设这两个来宾都由主机C托管。从某种意义上说,两个/ 27地址属于不同的“服务器”,但从另一种意义上说,它们可以通过相同的NIC和同一主机,因此可以说IP属于到相同的“服务器”。如果来宾A又托管了另外两个VM(来宾X和来宾Y),它们也具有自己的/ 27地址,那么这些IP中的哪个IP属于同一台计算机?如果您“ vMotion”这些虚拟机中的任何一个怎么办?我没有一个好的答案。
2015年

13

对“为什么”感到好奇。对双宿主计算机的担忧通常被定位为某些未命名的sysadmin的头痛。OSI模型将隐藏细节。

以Linux为中心的答案。

有一些方法可以生成指纹并做出有教育意义的猜测。

  1. nmap -o和nmap具有良好的端口扫描。服务器并不总是绑定到两个NIC。但是很多时候他们都这样做。

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

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

  4. 测试NIC独立行为。例如,尝试通过提供伪造的ssh身份验证来使拒绝主机跳闸12次。如果拒绝主机跳闸,则应该在下次尝试时立即关闭套接字。看看其他IP是否也在发生这种情况。

/ 27网是一个……29个主机?我要说的是,有很高的信心确定双重房屋机器的机会很小,也许只有5%。但是由于主机很少,您也许可以做出有根据的猜测。

面试的有趣问题。我可能实际上偷了它。


4
对于#4,如果两个地址都在运行ssh并且可以连接到它,则可以比较主机密钥。原则上,可以为两个不同的服务器提供相同的主机密钥,但这是非常奇怪的设置。因此,如果您从两个地址获得相同的主机密钥,则它们很可能是同一台服务器。
Nate Eldredge

克隆机器会导致两个具有相同主机密钥的机器。
彼得·格林

7

理论上,在大多数情况下,您可以给出有意义的置信度。尽管有一些警告,但在实践中要困难得多。

我将与其他答案重叠,并且我可能会漏掉一些东西,但这至少是关于这些特定位为何重要或不重要的详细推理。

首先,请不要忘记任何有关MAC地址的想法。除非您可以直接访问该网段,否则您将看不到它们。

也不要相信端口扫描。对于仅某些IP的防火墙端口,让软件仅在某些IP上侦听,或具有在检测到扫描时应用过滤的IDS / IPS系统,这是微不足道的。所有这些都会破坏您的测试。

好的,所以您可以说的很简单:两个框完全相同的可能性很低,除非它们仍然相互关联。因此,您实际上在尝试证明它们是不同的盒子,而不是试图证明它们是相同的。

  1. 平安 您需要同时进行测试和大量测试。事实证明,尽管网络时间存在抖动,但它是相当高质量的伪随机噪声,如果您在较短的时间范围内有足够的样本,则这些噪声的平均值足以为您提供准确的比较。

    网络中的每个第2层跃点都会添加少量的延迟,不同的拥塞级别将给出不同的延迟值。如果两个IP显示的并发等待时间明显不同,则可以假定它们可能不是同一盒子。

    注意事项1:具有两个上行链路(未绑定)并且在每个上行链路上配置了不同IP的单个服务器可能具有足够的上行链路不平衡状况,因此可以避免这种情况。

  2. 端口扫描。目标端口可以处于以下三种状态之一:侦听,关闭,已过滤。如上所述,它们所在的位置实际上并没有多大用处,但仍有许多有用的信息。

    1. 在多个IP上打开端口的包装盒很​​可能在所有IP上运行相同的软件。例如,可以在一个IP上运行nginx,而在另一个IP上运行apache,但是大多数人都不会打扰。对正在运行的服务进行指纹识别以寻找相似之处。查找其广告本身所宣传的软件和版本,所支持的选项,所宣传的主机名(如果有),软件行为方面是否存在古怪之处,诸如此类。

      Web服务对此最没有用处,而更有用的是SMTP(由于sendmail支持而难以混合和匹配,泄漏大量信息),SNMP(信息金矿),SSH(谁运行多个SSH守护程序)之类的东西。 )和HTTPS(如果您运气好的话,并且它们运行的​​是同一软件,则可以检查SSL配置是否有所不同,但相同但不寻常的配置是一个很好的指标)。NTP曾经是一个很好的测试,但是由于它被广泛用作DoS放大器,因此现在正被严格锁定,SNTP确实不能以同样的方式准确地用于吸烟枪。

    2. 第3层指纹。远程对操作系统进行指纹识别的主要方法是通过TCP / IP实现中的怪癖来实现。确切的详细信息太长了,无法进入此处,但实际上包元数据会泄漏很多信息,封闭或过滤的端口如何响应连接以及主机在接收格式错误的包时的行为也是如此。尽管这些特性并不是确定运行情况的必然值,但可以合理地保证,对于绑定到特定TCP / IP堆栈的每个IP,它们都接近于相同的特性。明显不同的系统应具有明显不同的特征。

    警告2:两个运行完全相同的操作系统和供应商补丁的机器看起来可能是相同的。在Windows上,除非运行不同的防火墙,否则运行自动更新的同一Windows版本的两个副本将很难区分。在Linux上,差异可能主要与所提供的内核版本和选件完全相关。该测试只能使两个IP不在同一操作系统上的可能性很高。

  3. 重播攻击。在两个IP都打开端口列表的情况下,在每个IP上执行相同的操作,并查找行为上的差异。诸如超时,错误消息,重试限制等之类的东西。某些软件很难或更不经常地配置为根据IP而不同。如果您知道一个IP接受特定域的邮件,请查看另一个IP是否也接受该域的邮件。

    警告3:与测试2的服务指纹识别部分相比,这是质量较低的数据,因为这些东西更容易在不同IP上进行不同的配置,并且可能进行各种幕后交互。错误结果的可能性很大,因此对这些结果的信心不足。

因此,正如我所说,基本理论是,不同的主机可能会采用不同的配置,并且会泄漏信息。

这并不能说明的是,要判断在两个IP上运行的同一站点是同一台服务器还是配置了冗余的两台服务器要困难得多。它还不考虑正在运行配置管理以保持其系统非常相似的系统管理员。它也不考虑将正在不同主机上运行的多个服务DNATing到一个IP地址的主机。

虚拟化技术使工作变得有些奇怪。像Docker这样的容器化系统正在共享足够多的堆栈,以使单独的容器看起来比实际的容器更相似。桥接到物理NIC的虚拟NIC应该不可能与物理上分开的硬件区分开来,但是应该没有,这主要是由于桥接是软件,因此数据包必须通过主机IP堆栈。

有很多方法会使尝试测试可重复性的人感到困惑。您可以期望的最好的结果是怀疑率低的模式。

对于运行服务器的人员来说,这样做的寓意是,您应该将服务器配置为泄漏尽可能少的信息:

  1. 尽可能降低横幅信息。攻击对您的配置了解的越少,对您越有利。

  2. 让软件仅在需要时才接受应该使用的IP上的连接。如果不需要从外部访问它,则使其仅绑定到localhost。减少攻击面总是好的。

  3. 如果您绝对必须监听某些内容,并且想要避免两个IP之间的关联,请尝试将不正常的选项保持在最低水平。您想要它融合。

  4. 让防火墙运行默认的丢弃策略。我认为IDS设置中可能有价值,可以用随机响应对攻击者进行响应,噪音会使攻击者更难以相信他们的结果,但确实会使您脱颖而出。

  5. 随机延迟模块对于防止定时攻击毫无用处。不完全是。选择一个随机数,然后掷骰子很多次,记下结果以及您在开始时选择的数字。您最终得到的是一个具有固定偏移量的范围。如果替换了随机数,范围将移动。如果更改范围,则偏移量将保持不变,而只需重复采样过程即可获得新的基线。

  6. IP堆栈规范化器确实存在,但在我上次查看时是安全研究中被忽略的部分。投资安全厂商可能是一个不错的市场。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.