【问题标题】:Is man-in-the-middle attack a security threat during SSH authentication using keys?在使用密钥进行 SSH 身份验证期间,中间人攻击是否构成安全威胁?
【发布时间】:2011-05-30 14:16:51
【问题描述】:

我不是网络安全方面的专家,所以如果这个问题不是很聪明,请原谅:)。 我正在使用 ssh 自动登录某些机器。我目前正在使用 StrictHostKeyChecking no 避免主机键警告。
我天真地理解有人可以冒充服务器,如果是这种情况,我冒着丢失密码的风险。但是,如果我只使用基于公钥/私钥的身份验证(使用 PasswordAuthentication no ),入侵者还会造成伤害吗?

所以基本上,ssh -o "StrictHostKeyChecking no" -o "PasswordAuthentication no"

1) 入侵者能否破译我的私钥?

2) 是否存在其他安全威胁?

问候,

日本

【问题讨论】:

  • 只是想知道为什么要避免主机键警告?通常,它只会提示一次,如果您不更改主机密钥,则只会在您第一次登录该服务器时提示。真的有那么烦人吗?为了避免将主机密钥分发给许多不同的客户端机器的麻烦,您可以在 SSH 中使用 Kerberos 身份验证。然后,可以将 SSH 配置为使用 NULL 主机密钥算法。这是可能的,因为Kerberos认证会做相互认证,可以保证服务器的身份。
  • 其实是的,你是对的。理想情况下,我不应该避免警告。我猜 NULL 主机密钥也是一个漏洞问题。

标签: security ssh ssh-keys openssh man-in-the-middle


【解决方案1】:
  1. 没有。或者至少......不是直接的。由于您从不发送您的私钥,因此 key 将是安全的。这并不意味着执行 MITM 攻击的人无法执行命令和/或读取您获得的输出。

  2. 是的,还有其他风险。如果执行 MITM 攻击的人将数据转发到正确的服务器,则可能会使用您的私钥在您尝试访问的计算机上执行命令。

【讨论】:

  • 感谢您的准确回答。正是我想要的。
  • 这个答案似乎不正确,另请参阅 abb 参考的详细答案。
  • @eldering:我已经更新了答案以澄清答案,但我看不出答案有什么不正确/不正确。你能解释一下有什么问题吗?
【解决方案2】:

实际上,公钥认证方法可以防止 MITM 攻击。据我所知,这是巧合,不是设计使然。虽然不可能进行全面的 MITM 攻击,但攻击者仍然可以冒充服务器:接收客户端发送的命令和数据,并向客户端返回任意响应。因此,毕竟禁用服务器主机密钥检查可能不是一个好主意。

下面解释为什么使用公钥认证时不能执行全面的 MITM 攻击。我的博文http://www.gremwell.com/ssh-mitm-public-key-authentication 包含更多详细信息。

在 MITM 攻击期间,攻击者将自己插入客户端和服务器之间,并建立两个独立的 SSH 连接。每个连接都有自己的一组加密密钥和会话 ID。

为了使用公钥方法进行身份验证,客户端使用私钥对一堆数据(包括会话ID)进行签名,并将签名发送给服务器。服务器应验证签名并在签名无效时拒绝身份验证尝试。如上所述,服务器和客户端对于会话 id 应该是什么有完全不同的想法。这意味着服务器无法接受客户端在MITM攻击下生成的签名。

如上所述,对于客户端-MITM 和 MITM-服务器连接,会话 ID 保证是不同的。它们是根据与 Diffie-Hellman 单独或每个连接协商的共享秘密计算的。这意味着攻击者不能安排两个会话具有相同的会话 ID。

【讨论】:

  • 有趣。这类似于使用带有 SSL/TLS 的客户端证书:在握手结束时有一个 Certificate Verify 消息,对到目前为止的整个握手进行签名。服务器和客户端不会通过 MITM 获得相同的握手数据。
猜你喜欢
  • 2011-02-24
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 2019-12-21
  • 1970-01-01
  • 1970-01-01
  • 2018-11-14
相关资源
最近更新 更多