11

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

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

1) 入侵者可以破译我的私钥吗?

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

问候,

J.P

4

2 回答 2

14

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

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

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

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

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

于 2010-12-26T10:01:09.610 回答
2
  1. 不,或者至少……不是直接的。由于您从不发送您的私钥,因此密钥将是安全的。这并不意味着执行 MITM 攻击的人无法执行命令和/或读取您获得的输出。

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

于 2010-12-25T06:50:34.327 回答