保持私钥SSH安全

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

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

  1. 你如何保护你的私人SSH密钥? 我读了关于ssh代理,但我不知道如何使用它,或者如果它可以在这种情况下使用。
  2. 如果一个系统pipe理员离开,他复制所有的私人SSH密钥,那么他有权访问所有的服务器。 你如何处理这种情况?

SSH私钥永远不应该离开自己生成的机器,除非被移动到更安全的平台上,比如HSM。 同样,除了产生它们的人以外,任何人都不能访问它们,例如pipe理员的工作站,或者更好的是HSM /智能卡。 如果要从多台计算机访问服务器,请在每台计算机上生成唯一的密钥并相应地部署公钥,或者将智能卡或其他强身份validation器的公钥放入授权密钥中。

对于初学者,我总是build议使用密码保护私钥。 这将减less未经授权的密钥使用的机会,如果它落入不法之徒的手中。 更高的安全措施是将私钥embedded到智能卡中,并通过中间件利用密钥function。 Redhat使这一切变得容易。

你如何保护你的私人SSH密钥? 我读了关于ssh代理,但我不知道如何使用它,或者如果它可以在这种情况下使用。

在terminal会话中使用ssh-agent来caching私钥的未encryption版本,因此每次使用时都不必input密钥的密码。 您也可以使用外部身份validation程序,通过该身份validation程序使用身份validation质询/响应,但永远无法访问明文。 请查看http://www.gooze.eu/howto/using-openssh-with-smartcards/using-ssh-authentication-agent-ssh-add-with-smartcards ,以便查看如何使用ssh与一个安全的authentication者。

如果一个系统pipe理员离开,他复制所有的私人SSH密钥,那么他有权访问所有的服务器。 你如何处理这种情况?

这是一个非常有力的论点,为什么私人密钥永远不应该共享,当然为什么多个用户的密钥永远不应该被存储在一起。 简单而简单,没有理由这样做。 没有其他人有任何业务获得你的私钥。 也就是说,即使您处于某人正在使用一堆活动私钥的情况下,如果使用强密码短语进行了适当的密码保护,这在很大程度上也不会成为问题。

同样,通过使用具有encryptionfunction的强大validation者对您的用户进行authentication,您可以完全避免这种情况。 当一台机器需要执行encryptionfunction时,而不是将私钥存储在文件系统上,则可以将其存储在HSM上以防止私钥泄露(盗窃)。

SSH密钥私钥可以是多因素身份validation系统(如智能卡)或其他types的硬件安全模块(USBforms因素,PCIe卡,Fortezza,networkingHSM等)的一个组件,这对于安全有意识的企业,政府和军队的运作只是因为一个妥协可能导致大规模曝光; 密码太弱。

根据安全性,智能卡可以是(A)未validation的,(B)FIPS 140-2二级设备,一直到(C)控制的encryption设备,可用于最高机密SCI信息和Suite Balgorithm。 在(B)的情况下,政府授权的实验室已经独立validation了密码学,(C)NSA已经评估了该设备。 B被认为相当于最好的商业级别的安全性,C被认为是军事/情报社区等级。 价格上涨的强劲的东西!

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

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

取决于每台机器的重要性,你可以有不同的解决scheme。