OpenSSH 服务器:是否有任何安全隐患和/或价值/对于“TCPKeepAlive 是”

信息安全 SSH 打开sh
2021-08-16 17:00:31

我已经阅读了有关安全隐患和/或允许TCPKeepAlive yes进入的价值的一定程度的混合报告/etc/ssh/sshd_config(对于 OpenSSH 服务器)。任何关于TCPKeepAlive和/或ClientAliveInterval安全最佳实践的明确内容都将受到热烈欢迎。


据我所知,除了有人可以欺骗 TCP 数据包来阻止 SSH 会话超时的可能性之外,似乎没有真正的和/或直接的风险TCPKeepAlive yes来源)。IE

您将在下一节中注意到,keep alive 存在欺骗问题

来源- 在“SSH用户”标题下)

我认为这意味着它实际上对 SSH 会话本身产生任何严重安全影响的风险为零。

但是,GitHub 用户指出:

你说得很对。似乎 TCPKeepAlive没有实际可利用的漏洞——然而

暗示它可以被利用只是时间问题?!

另一个消息来源表明,TCPKeepAlive yes只要ClientAliveInterval配置得当它几乎没有价值

一篇题为“强化 SSH 服务器”博文(从 2013 年开始)(标题为“防止僵尸”)建议:

为避免无限挂起会话,应将其保持打开状态。

虽然它没有提到ClientAliveInterval,但我猜现在可能不是 100% 相关?

请注意,尽管我进行了大量的谷歌搜索,但我所有的资源(除了 2013 年的博客文章)都来自我链接到的 GitHub 线程。除了那些少数提及。我找不到任何实质性的东西。进一步的消息来源,尤其是权威消息来源将受到热烈欢迎。

1个回答

保持 SSH 会话处于活动状态的三种主要方法:

  • TCPKeepAlive- 定期发送空 ACK,防止 TCP 连接因不活动而自然关闭。这完全在 TCP 级别上运行。它只能被 MITM 攻击或极其先进的 TCP 劫持对手欺骗。

  • ServerAliveInterval- 使用 SSH 协议从客户端定期向服务器发送一条消息。使用它的主要好处是防火墙无法判断它是保持活动还是合法消息。另一方面,TCP keepalive 可能会被防火墙阻止。

  • ClientAliveInterval- Idem,但从服务器发送到客户端。

攻击者强制 SSH 连接保持打开状态是否存在风险?并不真地。临时会话密钥会定期更改,以防止长时间运行的 SSH 会话成为更有趣的目标。因此,我想不出为什么通过 TCP 层发送 keepalive 会被视为安全问题的任何重要原因。但是,仍然没有理由使用它。您可以安全地使用ClientAliveIntervalServerAliveInterval禁用 TCP keepalives。