重复的 SSH 服务器主机密钥是否存在问题?

信息安全 SSH 服务器 ssh 主机密钥
2021-08-23 09:21:20

我正在评估一个使用大量虚拟化的小型网络。他们在生成 SSH 服务器主机密钥后克隆了一些 linux 机器。所以服务器都具有相同的主机密钥。我确定这很糟糕,但我无法解释原因。你能解释一下为什么会这样,或者提供一个可以被利用的场景的例子。或者这只是一个不好的做法?

4个回答

共享的私钥越多,它变得越不私密。这只是一个通用的评估:在某些情况下,这可能是无害的。在 SSH 服务器的特定情况下,这意味着这三个服务器的安全性成为一个全有或全无的系统:

  • 每个服务器都知道足以模仿任何其他服务器。
  • 如果其中一台服务器被黑客入侵,攻击者将获知共享私钥并可以冒充任何其他服务器。

另一方面,共享私钥可以带来真正的好处:

  • 正如您所观察到的,它在某些 VM 克隆情况下“自然”发生。
  • 如果路由在某些方面是动态的(例如有负载平衡),给定的客户端系统可能并不总是以相同的名称落在同一台机器上;在这种情况下,如果相关节点共享相同的私钥,那么客户端就会大喊大叫和抱怨。
  • 当客户端第一次连接到给定服务器时,该客户端还没有保存该服务器的公钥,因此人类用户应该根据权威来源检查服务器密钥指纹(例如,打电话给系统管理员) . 如果所有服务器共享相同的私钥,则可以将单个指纹以大写字母打印并粘在办公室墙壁上;当有许多服务器并且每个服务器都有自己的密钥时,这就不那么实用了。

因此,当机器在安全性方面并不意味着彼此相等时,共享私钥是绝对“不可能”的事情。然而,当他们等价的,共享的私钥可以进行一些简单的操作。当使用某些形式的负载平衡时,必须共享私钥(尽管负载平衡和 SSH 很少结合在一起)。当所有系统都是大型计算集群的元素时,共享私钥可以被认为是“可接受的做法”。

如果一台机器被入侵并且攻击者能够窃取密钥,这可能会很糟糕。然后,当他们下次尝试登录恶意主机时,他们将能够冒充任何其他机器,而不会向用户发出主机密钥更改警告。如果网络上有其他安全机制,那么这种威胁可以在很大程度上得到缓解。

是的,这很糟糕。如前所述,如果一台主机受到威胁,则需要轮换具有相同私钥的任何其他主机以防止 MITM 攻击。

更好的策略是在主机站起来后创建密钥,或者在镜像后生成新密钥。看看一些大公司(AWS、linode 等)做了什么,以了解如何安全地配置许多不同的虚拟机。

即使无法访问私钥(其他答案很好地覆盖了私钥),仅访问公钥也可能是个问题。例如,Shodan.io 可用于搜索公钥,因此,如果您在一堆 IOT 设备上共享主机密钥对,并且做一些愚蠢的事情,例如保留默认密码,定位所有可公开寻址的设备变得微不足道.