我如何向客户端解释 rfc2385 TCP MD5 Checksums 无法为 linux 网络服务器打开?

信息安全 阿帕奇 tcp 安全剧院 nginx
2021-08-18 09:41:12

我与客户进行了长时间的对话,他们执行Rapid7 安全扫描,然后警告端口 80 上缺少 TCP MD5 校验和。这是我认为我知道的:

  • RFC 2385旨在保护BGP,并通过扩展 BGP 类型的协议(即长时间运行的 TCP 连接)。
  • BGP 使用长时间运行的 TCP 连接,而 HTTP 不使用。
  • 加密/IPSec 已取代RFC 2385以保护 BGP。
  • TCP RST 攻击针对长时间运行的 TCP 连接,因为该攻击依赖于概率。
  • 对重置 HTTP 保持活动连接的影响是下一个请求将重新启动它。
  • 大多数连接以毫秒为单位传输数据,攻击窗口太小,HTTP 无法有效定位。攻击取决于攻击者针对服务器的窗口大小和带宽,即使在良好的条件下,根据窗口滑动:TCP 重置攻击的第 25 页,似乎也需要几秒钟的时间)
  • Web 视图通常由每个连接的客户端的多个连接组成,使得这种类型的拒绝服务与替代方案相比没有吸引力。
  • Linux(特别是 RHEL 或 Debian)支持 rfc2385,但无法全局启用。
  • NGINX 和 Apache 都没有配置选项来打开启用了 tcp-md5-checksums 的套接字。
  • 即使 rfc2385 对 HTTP 有效,它也不能解决问题,但会增加服务器的负载。这只是一个次要的方面。

我试图解释 rfc2385 与 Web 服务器无关,但他们说这是 TCP 的问题,虽然这是真的,但简化了它是针对TCP 连接的特定性质的攻击。

我已经解释过 Apache 和 nginx 都无法启用他们所要求的功能。他们不断向我发送提及 Windows、Cisco、NetBSD、BGP 的知识库文档,但从来没有与 apache 或 nginx 相关的任何内容。

除了链接文件之外,我还向他们发送了LWN解释它:

使用这种技术来关闭 Web 服务器会很困难;HTTP 连接一开始往往是短暂的。

Windows上有一个补丁可以修复他们作为建议发送的警告,但它显然对linux没有任何作用。

我在胡说八道吗?对于让具有安全合规性的客户担心与我在同一页面上,您有什么建议?

3个回答

使用 MD5 进行一致性检查显然违反了CWE-327: Use of a Broken or Risky Cryptographic AlgorithmRFC-2387 提供的任何保护都因使用过时且不安全的算法而无效。

Rapid7 通过此建议降低了互联网的安全性。这个 BS“漏洞”是更无意义的噪音,淹没了真正的发现。Rapid7 对 RFC-2385 的盲目推荐使 HTTP 请求更难处理,从而使 Web 服务器更容易受到 DDoS 攻击。

我会向 Rapid7 投诉,并鼓励他们认真重新考虑这个 货物狂热的安全建议仅仅因为它易于测试,并不意味着它是相关的。请 Rapid7 告诉您的客户这不是问题。

我的回答将是一个低调的版本:“他们建议我们使用为另一个用例设计的未加密的共享密钥身份验证方案。他们的建议是奇怪且无用的。没有 Web 浏览器能够生成所需的密钥每个 TCP 段的哈希值。”

毫无疑问,您在漏洞扫描器方面的经验远远超出了我的水平,而您对 TCP 复杂性的经验更是远超我。但也许我可以分享我与客户打交道的一般方法,他们查看漏洞扫描结果,看到项目旁边的黄色/橙色/红色图标,并做出非常关注的反应,却没有意识到那里没有真正的问题存在。

  1. 解释说,虽然漏洞扫描程序有时在检测微妙但重要的问题方面表现出色,但有时它们对于发现根本没有任何实质性风险支持的问题也可能是绝对愚蠢的。

  2. 解释为什么在这种情况下,这个项目根本没有实质性的额外安全风险。(注意:这整件事显然是假设不存在的,当然。)换句话说,解释为什么扫描仪是错误的,没有注意它。

  3. 要么(a)解释你无论如何要如何纠正非问题,以便他们可以从扫描仪获得(表面上的)干净的健康单,或者(b)如果这不切实际,解释两者为什么这个问题实际上不能真正“解决”,以及他们如何记录(对于合规性的东西,他们的老板,无论谁/无论如何),在经过调查和思考之后,他们确信这个问题基本上只是一种误报。

听起来你可能有一个“但是......但是......昂贵的工具说那里有一个漏洞!” 客户。也许尝试一种策略来强调即使您可以以扫描仪希望的方式实现此校验和行为,这也会花费您大量时间(即他们的钱),甚至可能需要服务器停机时间。以我的经验,提及这些考虑因素通常足以让客户对生活在非脆弱性漏洞中产生新的接受感。反正我的两分钱。