我知道只要您没有遭受 MITM 攻击,SSH 就是安全的,但我想知道是否有办法即使在这种情况下也能让 SSH 100% 安全,在任何敏感信息泄露之前发现您正在被嗅探和断开连接,或者至少让攻击者实际读取/写入实际数据并非不可能,但“更加困难”(也许有一种方法可以混淆数据以使其变得毫无意义?)。
我想你得到我想要的东西了。
例如,如果指纹不是您预期的,您拒绝连接,那么 MITM 还能起作用吗?
如果我突然有想法,我会尝试更新这个问题。
答案1
发现你被嗅探
这正是 SSH 所要防范的。只要您仔细验证主机密钥,即使有人读取您的流量也没关系:一切都是加密的。
在泄露任何敏感信息之前断开连接
再次强调,标准 SSH 就足够了。主机密钥检查是建立 SSH 连接时要做的第一件事之一;如果您取消它,连接将立即关闭,而不会传输任何身份验证数据。
例如,如果指纹不是您预期的,您拒绝连接,那么 MITM 还能起作用吗?
如果您指的是“私有” SSH 数据,那么攻击者将不会收到任何数据。参见上文 – 检查主机密钥是首要任务之一。在服务器验证之前,不会发送任何其他数据。
也许有一种方法可以使数据变得混乱,以致于它变得毫无意义或者其他什么?
这叫做“加密”,它恰好是 SSH 的核心部分。:) 除非你接受,否则攻击者将无法读取任何内容他们的hostkey 而不是真实密钥。同样,加密和完整性检查(使用 HMAC)使得无法插入数据包。
我承认我不是密码学家之类的。但恕我直言,如果你仔细检查主机密钥指纹,那么 SSHv2 是最安全的。
如果它不安全,它就会被修复/替换/升级。这种情况已经发生过一次:SSH v1 被 SSH v2 取代。
这意味着你必须在服务器和客户端上禁用 SSH v1。
SSH 版本 1 非常不安全,即使大多数客户端都配置为首先使用 SSHv2,但如果服务器不提供 v2,它们仍会回退到 v1。这为 MITM 攻击提供了机会……虽然我不记得细节,但这与攻击者使用非常相似的指纹生成 v1 密钥有关。
对于 OpenSSH,请
Protocol 2
输入您的配置文件。SSH 使用的算法之一被破解的可能性很小。但如果有人设法破解了 RSA 或 DH,世界将面临比您的服务器安全更大的问题……(此外,还有其他算法。)
顺便说一句,OpenSSH v5.8 已从 DH 和 DSA 切换到 ECDH 和 ECDSA 作为其主要算法(分别用于密钥交换和主机密钥)。
答案2
SSH 并不好,它容易受到中间人攻击。
如果您和您尝试访问的服务器之间有 Forefront TMG 防火墙,Microsoft 就会对您的连接进行此类“攻击”。其中包括伪造 SSH 证书。