我的一个朋友设法通过 apache 从他的服务器公开了 id_rsa 和 id_rsa.pub 文件。我向他提到这是一个严重的安全问题,但他对此置之不理,认为这没什么大不了的。由于我没有足够的安全知识向他解释为什么这很糟糕,有人可以在这里帮助我吗?或者也许我的朋友是对的,它并没有我想象的那么糟糕?
我的朋友透露了他服务器的私钥和公钥。这有多严重?
我想这些文件是作为客户端的“他的 SSH 密钥”。
公开公钥 ( id_rsa.pub
) 没有任何后果:当我们称其为公钥时,我们是认真的。私钥(id_rsa
)当然是问题所在。
作为客户端,您使用私钥的方式是将相应的公钥推送到.ssh/authorized_keys
目标帐户的服务器中。当公钥在此文件中时,任何知道私钥的人都可以使用该名称登录服务器。这就是公钥/私钥在 SSH 客户端上的工作方式。
因此,基本上有三个可能的合理原因可以让您的朋友无视他的id_rsa
文件的披露:
也许他从来没有把公钥推到任何地方。当他登录到服务器时,他总是通过键入该服务器的帐户密码来登录。如果他的密钥对从未使用过,那么泄露私钥是无害的。但是,他为什么会有这样的密钥对呢?
可能他连接的所有服务器,通过私钥认证,都位于一个私有网络上,只有非敌对用户,与外界强隔离。
可以想象,私钥受密码(或 SSH 术语中的“密码”)保护,这意味着它确实是使用从密码派生的密钥进行加密的;您的朋友非常信任他的密码强度。
请注意,即使私钥不受保护(或使用可猜测的密码保护)并授予攻击者可以访问的某些服务器的访问权限,那么攻击者可以做的是以您朋友的名义登录这些服务器(这已经是大问题)。这并不授予攻击者进行中间人攻击的权力(MitM 是双重模拟,因此 MitM 攻击者必须知道客户端和服务器上的私钥);他们既不能解密他们窃听的过去或未来的会话,也不能更改正在进行的会话的数据(特别是,SSH 中的非对称密钥用于身份验证,但密钥交换使用Diffie-Hellman)。
- 身份验证/访问控制
拥有他的凭据的人可能能够登录到冒充他的系统。
- 不可否认性
其他人将能够以他的身份签署消息,而他将无法拒绝发送消息。
- 保密
他所有的私人通讯都可以被解密和泄露。
- 正直
以前的文档可能已经被重新签名/重新散列,不再是事件之前的最后一个版本中的整数。
长话短说——他必须尽快撤销它并获得一个新的。
SSH 私钥通常(默认情况下)使用强对称密码进行加密。在某些情况下(当然不是生产用途),将这些密钥放在可访问的共享位置以方便操作可能是可行的。这几乎不会将密钥的强度降低到加密它的密码的强度,这可能是可以容忍的,这取决于上述密钥的使用模式和它们所属的服务器。
只是不得不在这里扮演魔鬼的拥护者。;)