使用 mod_header 禁用 Apache < 2.2.16 中 SSL/TLS 连接的压缩

使用 mod_header 禁用 Apache < 2.2.16 中 SSL/TLS 连接的压缩

据我所知,由于 CRIME,SSL 连接上的压缩必须关闭。在较新版本的 apache 中,可以使用新引入的指令来完成此操作SSLCompression off,而在较旧版本中则无法完成此操作(在 2.2.16-6+squeeze10 之前的 Debian 版本中)。

我认为我已经找到了在旧版本中实现这一点的方法,但我不确定为什么在一些在线测试中,比如Qualsys SSL 测试它表示压缩仍在进行中。我的测试确实显示出一些不同的东西。有人可以查看配置代码并告诉我我不明白什么吗?

使用 SSL 虚拟主机块内 mod_headers 中的以下指令来关闭压缩:

RequestHeader unset Accept-Encoding
Header unset Vary

这将从客户端请求中删除标题行,表明响应可能会以压缩形式发送到客户端。

使用 curl 和 --raw 开关进行测试,我发现非 SSL 连接是压缩的,而 SSL 连接是明文的。使用...

curl --raw -k -H 'Accept-Encoding: gzip,deflate' http://host.example.tld

...去检查。

一些在线测试工具仍然告诉我我的解决方案不起作用,而其他工具则说相反。现在我想知道我关闭 SSL 连接压缩的解决方案是否有效?

答案1

第一的,CRIME 仅适用于您的网站使用了这三种方式:

  1. SSL 或 TLS
  2. 压缩
  3. Cookie 认证会话

它只适用于劫持活动会话,如果您的服务器不需要会话 IP 匹配,它就非常有用。虽然许多网站确实使用这种组合,但它并不像很多人想象的那么常见。此外,一些统计数据表明,互联网上只有不到 7% 的浏览器支持使 CRIME 成为可能的压缩。

不起作用的方法:
Vary字段仅告知上游代理是否允许缓存动态页面。虽然这对于您的缓存策略很重要,但对于此特定漏洞来说却并非如此。

取消设置该Accept-Encoding字段只会影响 mod_deflate 或 mod_gzip;不会影响 SSL/TLS 压缩。因此您的方法无效。

什么有效:
有两种方法可以保护您的服务器。您可以通过重新编译 SSL/TLS 库(不进行压缩)来禁用其压缩支持;或者您可以修补服务器以支持该SSLCompression指令。Apache 2.4.x 本身支持该指令。Apache 2.2.22 的修补相对容易

各种操作系统发行版现在都在反向移植补丁,请与您的发行版提供商联系以获取详细信息(大多数 Linux 发行版都使用旧版本的 Apache,他们为其编写了自定义的安全补丁反向移植。因此,如果您使用他们认可的软件包,那么您将完全受您的发行版的摆布)。

你有多确定
有一个非常容易使用的SSL Labs 提供的 SSL“问题”扫描仪。它将检测您的服务器是否易受 CRIME 攻击。您可以半忽略 BEAST 警告,因为所有现代浏览器都已修复客户端问题。不过,这取决于您的具体情况。

相关内容