在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,则会建立连接并显示更多详细信息。