据我所知,由于 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 仅适用于您的网站使用了这三种方式:
- SSL 或 TLS
- 压缩
- 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 警告,因为所有现代浏览器都已修复客户端问题。不过,这取决于您的具体情况。