如何在Apache中禁用SSLv3?


76

今天,每个人似乎都在谈论POODLE漏洞。每个人都建议使用以下配置指令在Apache中禁用SSLv3:

SSLProtocol All -SSLv2 -SSLv3

而不是默认值

SSLProtocol All -SSLv2

我这样做并没有喜悦–在使用各种工具(这里是一个快速的工具)反复测试之后,我发现我的服务器很高兴接受SSLv3。

是的,我确实重新启动了Apache。是的,我grep对所有配置文件都进行了递归操作,而且我在任何地方都没有任何覆盖。不,我没有使用某些古老的Apache版本:

[root@server ~]# apachectl -v
Server version: Apache/2.2.15 (Unix)
Server built:   Jul 23 2014 14:17:29

那么,有什么用呢?如何真正禁用Apache中的SSLv3?



5
正如问题中所解释的,我已经执行了该部分中指示的所有步骤,并且SSL3仍然可用。我无法告诉您该部分的哪个特定部分未能禁用SSL3,但要点是它并未完全禁用SSL3。话虽如此,我知道您现在有主持人的帽子,所以请提出一个问题-它很可能证明我是个白痴,并且犯了一个基本的错误,但是从主持人的POV看,这是一个合理的问题。

Answers:


80

我遇到了同样的问题...您必须SSLProtocol all -SSLv2 -SSLv3在httpd.conf中的每个VirtualHost节中包含它

VirtualHost节通常位于httpd.conf文件的末尾。因此,例如:

...
...
<VirtualHost your.website.example.com:443>
    DocumentRoot /var/www/directory
    ServerName your.website.example.com

    ...
    SSLEngine on
    ...
    SSLProtocol all -SSLv2 -SSLv3
    ...
</VirtualHost>

还要检查ssl.conf或httpd-ssl.conf或类似的内容,因为它们可以在此处设置,而不必在httpd.conf中设置


3
记录下来,取决于您的sysadmin / webmaster,VirtualHosts可能也可以存放在conf.d中自己专用的文件中(这就是我想要保留的方式,这是我学到的东西,不是我发明的,所以我希望不是唯一的)。
BogdanStăncescu2014年

3
请注意,至少SSLProtocol在VirtualHost节之外配置的Apache 2.4+ 将适用于所有虚拟主机。
nurikabe 2015年

2
我发现此工具可以测试服务器是否禁用了SSLv3,其中包括:ssllabs.com/ssltest/index.html
amphetamachine,

1
禁用TLSv1时,此答案对我很有帮助。要检查是否给定的协议被完全禁用,我发现下面的有用:nmap -sV --script ssl-enum-ciphers -p 443 <hostname>
卡·花旗

有没有一种方法可以在SSLProtocol系统范围内进行设置,而不必编辑每个VirtualHost?
Dunatotatos

10

我在Ubuntu 14.04上遇到了同样的问题。阅读此内容后,我在中编辑了“ SSLProtocol”部分/etc/apache2/mods-available/ssl.conf

  • 从: SSLProtocol all
  • 至: SSLProtocol all -SSLv2 -SSLv3 -TLSV1

但这没有用。因此,我也在中编辑了以下部分“ SSLCipherSuite” /etc/apache2/mods-available/ssl.conf

  • 从: SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
  • 至: SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SSLv3:!SSLv2:!TLSv1

现在,它现在对我有用。

顺便说一下,密码套件不受POODLE的影响,仅受协议的影响-但大多数浏览器都可以使用禁用的SSLv3密码套件。

不要将此用于邮件服务器!否则,您(也许)将面临无法在某些设备上获取邮件的问题。


谢谢。此答案在WHM / cPanel设置中有效。我尝试了在线建议的其他方法,而您的方法是唯一可行的方法。
Voitek Zylinski 2014年

1
此方法有效,但由于默认情况下使用SSLv3和TLS1.0,因此将禁用IE 10的访问。
Erebus 2015年

4

对于Ubuntu 10.04

要在所有活动的虚拟主机上禁用SSLv3,您需要在

/etc/apache2/mods-available/ssl.conf:

SSLProtocol all -SSLv2 -SSLv3

2

今天早上我遇到了类似的问题,我发现了另一个启用SSLv3的虚拟主机,因此整个服务器都响应SSLv3连接。

因此,请确保您的主机均未激活SSLv3。


1

确保SSLCipherSuite 包含!SSLv3。在这种情况下,它也指的是TLS1.0和TLS1.1。

例如,如果您的配置为SSLProtocol All,则由于使用!SSLv3配置SSLCipherSuite的原因,只有TLS1.2可用。


0

对于无法通过SSH编辑SSL配置文件的CentOs用户,请尝试通过WHM禁用SSLv3

第1步:导航到包含编辑器

-登录到WHM-打开“ Apache配置”屏幕,然后单击“包含编辑器”

第2步:修改包含

-在“ Pre Main Include”下,选择“ All Versions”。这样,如果您更改Apache版本,则服务器将受到保护。选中后,在文本框中输入以下内容:

在CentOS / RHEL 6.x上:

SSL协议上的
SSLHonorCipherOrder-全部+ TLSv1 + TLSv1.1 + TLSv1.2

在CentOS / RHEL 5.x上:

SSLProtocol上的
SSLHonorCipherOrder-全部+ TLSv1

…,然后点击更新

单击更新后,将提示您重新启动Apache。现在就这样做。

原始来源:https : //www.liquidweb.com/kb/how-to-disable-sslv3-and-protect-your-whmcpanel-server-from-poodle/


1
该答案与通过WHM / cPanel控制的服务器有关,与运行CentOS的服务器无关。
BogdanStăncescu2014年

0

您使用的方法适用于新版本的Apache和Openssl。您的系统上可能未安装这些软件的新版本,请验证当前安装的版本。

由于SSLv2SSLv3都容易受到某些攻击,因此最好仅使用TLS。因此,如下修改您的apache conf文件,

SSLProtocol TLSv1 TLSv1.1 TLSv1.2

要么

SSLProtocol TLSv1

是的,我也尝试过–不高兴。:-(

您可以粘贴“ apachectl configtest”命令的输出吗?
P4cK3tHuNt3R 2014年

0

我遇到了类似的问题,并且检查了所有正确的Apache设置是否正确。

但是我错过了的是我在Apache之前使用nginx作为反向代理。我也碰巧正在使用Plesk,这是从他们的POODLE修复指南中得出的:

如果您正在运行Nginx,请在配置中包括以下行/etc/nginx/nginx.conf

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.