确保私有 SSH 密钥的安全

确保私有 SSH 密钥的安全

我有一个中央服务器,其中存储了我想要 SSH 连接的不同机器的所有私有 SSH 密钥。目前,只有系统管理员可以访问这个“中央”服务器。

鉴于上述情况,我想问以下问题:

  1. 您如何保护您的私人 ssh 密钥?我读过有关 ssh-agent 的信息,但我不确定如何使用它或它是否可以在这种情况下使用。
  2. 如果系统管理员离开并复制了所有私钥,那么他就可以访问所有服务器。你如何处理这种情况?

答案1

SSH 私钥永远不应离开生成它们的机器,除非要移动到更安全的平台,例如 HSM。同样,除了生成它们并将使用它们的人(例如管理员的工作站,或者更好的是 HSM/智能卡)之外,其他人也永远不应访问它们。如果您要从多台机器访问服务器,请在每台机器上生成一个唯一的密钥并相应地部署公钥,或者将智能卡或其他强身份验证器的公钥放入授权密钥中。

首先,我始终建议使用密码保护私钥。如果私钥落入不法之徒之手,这将降低密钥被未经授权使用的可能性。更安全的措施是将私钥嵌入智能卡,并通过中间件利用智能卡上的加密功能。Redhat 可以轻松实现这一切。

您如何保护您的私人 ssh 密钥?我读过有关 ssh-agent 的信息,但我不确定如何使用它或它是否可以在这种情况下使用。

ssh-agent用于终端会话,缓存私钥的未加密版本,这样每次使用时就无需输入密钥的密码。您还可以使用外部身份验证器,通过该身份验证器,您可以使用身份验证质询/响应,但永远无法访问明文。请查看http://www.gooze.eu/howto/using-openssh-with-smartcards/using-ssh-authentication-agent-ssh-add-with-smartcards为了回顾如何使用带有安全验证器的 ssh。

如果系统管理员离开并复制了所有私钥,那么他就可以访问所有服务器。你如何处理这种情况?

这是一个非常有力的论据,说明为什么私钥应该绝不被共享,当然为什么多个用户的密钥应该绝不存储在一起。简单来说,没有理由这样做。其他人无权获取您的私钥。也就是说,即使有人拿到了一堆活动私钥,如果它们受到强密码的适当保护,这基本上不会成为问题。

同样,通过使用具有加密功能的强身份验证器对用户进行身份验证,您可以完全避免这种情况。当机器需要执行加密功能时,您可以将私钥存储在 HSM 上,而不是存储在文件系统上,以防止私钥泄露(被盗)。

SSH 密钥私钥可以是多因素身份验证系统的组成部分,例如智能卡或其他类型的硬件安全模块(USB 外形尺寸、PCIe 卡、fortezza、联网 HSM 等)。对于注重安全的企业、政府和军队来说,这现在是相当标准的,因为一次泄露就可能导致大规模暴露;密码太弱了。

根据智能卡的安全性,智能卡可以是 (A) 未经验证的、(B) FIPS 140-2 2 级设备,一直到 (C) 可用于最高机密 SCI 信息和 Suite B 算法的受控加密设备。在 (B) 的情况下,政府授权的实验室已独立验证了加密技术,并且 (C),NSA 已评估了相关设备。B 被认为相当于最佳商业级安全性,而 C 被认为是军事/情报界级。越坚固的东西价格就越高!

答案2

我同意 ErikA 的观点。但是,有些情况下你不需要受密码保护的私钥(例如用于自动备份)。在这种情况下,你和每个系统管理员各自都有一个私钥。

如果您想要共享私钥,那么您可以通过 IP 限制访问:中央服务器是某人可以连接到其他机器的唯一地方。

根据每台机器的重要性,您可以为每台机器制定不同的解决方案。

相关内容