在使用密钥进行SSH身份验证期间,中间人攻击是安全威胁吗?

11 security ssh openssh man-in-the-middle ssh-keys

我不是网络安全方面的专家,所以原谅如果这个问题不是很聪明:).我正在使用ssh自动登录到某些机器.我目前正在避免使用主机密钥警告StrictHostKeyChecking no.
我天真地明白,有人可以冒充服务器,如果是这样的话,我可能会失去我的密码.但是,如果我只使用基于公钥/私钥的身份验证(使用PasswordAuthentication no),入侵者是否仍会造成伤害?

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

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

2)是否还有其他安全威胁?

问候,

J.P

abb*_*abb 13

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

下面解释了为什么在使用公钥验证时无法执行完整的MITM攻击.我的博客文章http://www.gremwell.com/ssh-mitm-public-key-authentication包含更多细节.

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

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

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


Wol*_*lph 2

  1. 不,或者至少……不是直接的。由于您从未发送过私钥,因此该密钥是安全的。这并不意味着执行 MITM 攻击的人无法执行命令和/或读取您获得的输出。

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