Mosh已经存在了一段时间了。虽然它的作者声称它是“SSH 的替代品”,但mosh实际上确实依赖ssh进行初始身份验证,之后在服务器上启动 mosh 二进制文件的实例,通过 TCP 建立的 SSH 连接被放弃(在服务于身份验证和引导的目的之后),此后所有的 shell 通信和网络漫游都通过 UDP 上的 mosh 协议发生,仍然具有某种加密,但与 ssh 完全分开。
这一切听起来很简单和优雅,然而,魔鬼总是在细节中。
安全专家如何看待 mosh 已经存在了几年?
Mosh已经存在了一段时间了。虽然它的作者声称它是“SSH 的替代品”,但mosh实际上确实依赖ssh进行初始身份验证,之后在服务器上启动 mosh 二进制文件的实例,通过 TCP 建立的 SSH 连接被放弃(在服务于身份验证和引导的目的之后),此后所有的 shell 通信和网络漫游都通过 UDP 上的 mosh 协议发生,仍然具有某种加密,但与 ssh 完全分开。
这一切听起来很简单和优雅,然而,魔鬼总是在细节中。
安全专家如何看待 mosh 已经存在了几年?
这曾经出现在他们的常见问题解答中:
问:您的安全数据报协议是否经过专家审核?
答:没有。Mosh 被积极使用,并且已经被具有安全意识的加密书呆子阅读过,他们认为它的设计是合理的,但是任何新颖的数据报协议都必须证明自己,SSP 也不例外。我们使用 AES-128 和 OCB 的参考实现,欢迎您关注代码。我们认为设计的彻底简单是一个优势,但当然其他人也这么认为并且错了。
使用 MOSH 时要记住的一些事情......虽然我们大多数人使用 SSH 来启动连接,但 MOSH 不需要它来使其工作(SSH 只在服务器端启动一个新的 mosh-server 并返回两个值到客户端:端口号和 22 字节对称密钥)。因此,如果您掌握了服务器生成的两个项目,任何人都可以使用您的连接(也就是说,由于它不依赖于 IP 的来源,如果您可以访问这两个信息,您实际上是连接的所有者)。
这意味着基本上有几个攻击面需要处理。
协议本身并在“运行中”对其进行解密。除了您的政府、您的 ISP 或与您在同一家咖啡店的人之外,这对于任何人来说都是极不可能的。这样做的成本和与传输内联的要求使得这极不可能(但并非完全闻所未闻)
一旦 mosh-server 处于活动状态,就攻击开放的 UDP 端口。这更有可能,这是协议需要更多调查的地方。例如,已经有针对 MOSH 系统的经过验证的 DOS 攻击(我还不知道劫持)。当然,如果有人得到你的对称密钥,他们可能很容易猜出端口。
那么,如何在所有这些不确定性的情况下使用这个协议呢?好吧,您可以通过您的 iptables(或防火墙等)限制 IP 数据包的来源,或者您可以设置端口敲击端口以在发生某些事情时“唤醒它”。当然,您总是可以不理会它,而只是承担未经审计的协议的一般风险。
就个人而言,我使用端口敲门器(我知道,这有很多原因,这是一种痛苦、不安全、有问题等)来阻止 60000 个地址。由于大多数时候我的重新连接来自同一个 IP(无线中断等),我很少需要“重新敲门”来继续我的 MOSH 连接。当然,如果我关闭笔记本电脑、离开咖啡店、切换到火车 WiFi 等,那么我需要重新敲门才能访问我的 MOSH 端口。
对我来说,端口爆震或 MOSH 都是固有风险,但总的来说,它们会大大减少目标表面积。MOSH 缓解了我在使用端口敲门器时遇到的许多问题,并且端口敲门器缓解了我未经审计的安全连接。