在Apache和Nginx中防止SSL Drown 攻击 CVE-2016-0800

时间:2019-08-20 17:58:28  来源:igfitidea点击:

DROWN攻击是针对运行TLS的服务器进行安全通信的中间人(MITM)攻击。
它的CVE标识符编号为CVE-2016-0800。

解决方案:禁用SSLv2是针对SSL淹死漏洞的解决方案。
还要注意,SSLv2已经被弃用,但是仍然有数百万的网站仍在使用SSLv2协议运行。

在Apache Webserver中SSL Drown漏洞解决方案

我们将禁用SSLv2和SSLv3两种协议。
禁用SSLv2是为了防DROWN,SSLv3是为了防POODLE。

在apache web 服务器配置文件中,找到SSL部分并编辑下面的行。

SSLProtocol all -SSLv3 -SSLv2

编辑Apache配置文件后重新启动Apache服务。

## 在 Debian/Ubuntu中重启Apache服务

sudo service apache2 restart
## 在 RHEL 5.x,6.x / CentOS 5.x,6.x中重启Apache服务。

sudo service httpd restart
## 在 RHEL 7.x / CentOS 7.x中重启Apache服务

sudo systemctl restart httpd.service

Nginx Webserver SSL Drown/POODLE漏洞的解决方案

在Nginx配置文件中,我们将禁用SSLv2和SSLv3. 如上节所述,禁用SSLv2是为了DROWN,SSLv3是为POODLE。

在Nginx配置文件中找到SSL块并按如下所示编辑该行。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

现在重新启动Nginx web服务器。

## 在 Debian/Ubuntu中重启Nginx

sudo service nginx restart
## 在 RHEL 5.x,6.x / CentOS 5.x,6.x 中重启Nginx

sudo service nginx restart
## 在 RHEL 7.x / CentOS 7.x 中重启Nginx

sudo systemctl restart nginx.service

如何检查SSL DRWON漏洞

检查SSLv2或者SSLv3是否启用。

nmap --script ssl-cert,ssl-enum-ciphers -p 443 IP地址

如果没有安装nmap,可以使用openssl命令:

检查SSLv2

openssl s_client -ssl2 -connect example.com:443

检查SSLv3

openssl s_client -ssl3 -connect example.com:443

如果被禁用,可以看到类似下面的信息

419:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:428:
420:error:1406D0B8:SSL routines:GET_SERVER_HELLO:no cipher list:s2_clnt.c:450:

如果启用了SSLv2/SSLv3,则会建立连接并显示更多详细信息。