保持私有 SSH 密钥的安全

Car*_*men 7 ssh two-factor

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

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

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

EEA*_*EAA 12

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一个安全的身份验证器。

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

关于为什么永远不应该共享私钥以及为什么永远不应该将多个用户的密钥存储在一起,这是一个非常有力的论据。简单明了,没有理由这样做。没有其他人可以获取您的私钥。也就是说,即使您处于有人拿到一堆活动私钥的情况下,如果他们受到强密码的正确密码保护,这在很大程度上也不是问题。

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

SSH 密钥私钥可以是多因素身份验证系统的一个组件,例如智能卡,或其他类型的硬件安全模块(USB 外形、PCIe 卡、fortezza、联网 HSM 等)这对于安全来说现在是非常标准的有意识的企业、政府和军队只是因为一个妥协就可能导致大规模暴露;密码太弱。

根据其安全性,智能卡可以是 (A) 未验证、(B) FIPS 140-2 2 级设备,一直到 (C) 可用于绝密 SCI 信息的受控加密设备和套件 B 算法。在 (B) 的情况下,政府授权的实验室已经独立验证了密码学,以及 (C),美国国家安全局已经评估了相关设备。B 被认为等同于最佳商业级安全性,C 被认为是军事/情报社区级。坚固的东西价格上涨!