SSL/TSL相关漏洞CVE-2015-2808,CVE-2013-2566,CVE-2014-3566,CVE-2016-2183,cve-2015-4000,瞬时 Diffie-Hellman 公共密钥过弱修复总结
在windwos server 2008及2012上总有狗皮膏药一般的以下SSL/TSL漏洞,一般同时出现。
SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)【原理扫描】,SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)【原理扫描】,SSL 3.0 POODLE攻击信息泄露漏洞(CVE-2014-3566)【原理扫描】,SSL/TSL协议信息泄露(CVE-2016-2183)【原理扫描】,SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱【原理扫描】,SSL/TSL LogJam中间人安全限制绕过漏洞(CVE-2015-4000)【原理扫描】
漏洞验证可参考另一篇文章:
https://www.cnblogs.com/zcg-cpdd/p/15573841.html
绿盟扫描器提供的针对单独漏洞的修复方法在实际环境中可能有不适用的情况。
经过修复测试,发现以下修复方法可用:
一.使用此方法上述所有漏洞可全部修复(将RC4,DES/3DES,EXP等弱加密算法及SSL弱加密协议替换为安全性更高的)
1、按下' Win + R',进入"运行",键入" gpedit.msc",打开"本地组策略编辑器"
2、计算机配置>管理模板>网络>ssl配置设置。
3、在SSL配置设置,打开SSL密码套件顺序设置,点击已启用。
4、更换SSL密码套件。
原SSL密码套件:
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_RC4_128_MD5,TLS_RSA_WITH_NULL_SHA256,TLS_RSA_WITH_NULL_SHA,SSL_CK_RC4_128_WITH_MD5,SSL_CK_DES_192_EDE3_CBC_WITH_MD5
替换为:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P521,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P521,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P521,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P521,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_NULL_SHA256
重启系统再扫。
二、使用以下方法可同时修复SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)【原理扫描】,SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)【原理扫描】:
这两个漏洞都是RC4算法的漏洞问题,方法就是禁用RC4改用别的算法。
1.方法一:
控制面板--->系统和安全--->管理工具--->本地安全策略--->本地策略--->安全选项--->系统加密:将FIPS兼容算法用于加密、哈希和签名; 右键--->属性--->点击“已启用”--->“确定”
使用此方法之后可能会导致某些只支持RC4算法的服务无法正常启用。
2.方法二:
注册表中启用TLS1.2:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client]
"DisabledByDefault"=dword:00000000
"Enabled"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server]
"DisabledByDefault "=dword:00000000
"Enabled"=dword:00000001
注册表中禁用SSL2.0
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client]
"DisabledByDefault"=dword:00000000
禁用RC4
注册表中将RC4启用项都禁止,没有项需要新建
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128]
"Enabled"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128]
"Enabled"=dword:00000000
三、对于SSL 3.0 POODLE攻击信息泄露漏洞(CVE-2014-3566)【原理扫描】,目前已经调整为低危级别,不修复其实也可以。
1.点击“开始”—“运行”,输入 “Regedit”,点击OK.
2.在注册表中寻找:
“HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server”
3.如果在Protocols下没有“SSL 3.0”选项,请依次新建“SSL 3.0”和“Server”项。在Protocols文件夹,右键单击项(K),然后重命名文件夹为SSL 3.0;在SSL 3.0文件夹,右键单击项(K),然后重命名文件夹为Server;
4.右键单击server的文件夹,选择新建,新建一个DWORD值。
5.在名称中,输入“Enabled”,回车。
6.请确保它显示00000000(0)的数据列下。如果没有,请右键单击并选择修改,输入0作为数值数据。
7.点击OK,退出注册表编辑器,然后重启电脑。
-------------------------------------------------------------------------------------------------------------------------------------------------------
注:windows上关于SSL/TSL及密码套件的更改,在注册表中手动敲比较繁琐,可以使用IIS Crypto来管理,比较方便。
官方下载地址:https://www.nartac.com/Products/IISCrypto/Download
-------------------------------------------------------------------------------------------------------------------------------------------------------------
四、对于具体端口上的SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱【原理扫描】,首先需要使用生产大于1024bit的key值,再将生成的文件加到具体报漏洞服务的配置文件里。
1. http服务器相关配置
1)首先生成大于1024bit(例如2048bit)的dhkey。
openssl dhparam -out dhparams.pem 2048
2)然后在对应服务器中配置
Apache2.4.8及以后版本
使用如下配置命令配置(http.conf中或者对应的虚拟主机配置文件中添加)
SSLOpenSSLConfCmd DHParameters "{path to dhparams.pem}"
Apache2.4.7版本
Apache2.2.31版本及以后版本
redhat debian等大多发行版中最新Apache2.2.x
通过把dhparams.pem的内容直接附加到证书文件后
Apache2.4.7之前2.4.x版本
Apache2.2.31之前版本
dhparam默认为1024bit 无法修改
nginx使用如下命令配置(在对应的虚拟主机配置文件nginx.conf中server字段内添加)
ssl_dhparam {path to dhparams.pem}
2.如果服务器配置无法修改,例如Apache2.2.31之前版本,可以禁用DHE系列算法,采用保密性更好的ECDHE系列算法,如果ECDHE不可用可以采用普通的 RSA。
更多解决方案请参考:
https://weakdh.org/sysadmin.html
五、除了以上在windows上整体修复,也可以在Linux针对具体端口服务上的CVE-2016-2183,CVE-2015-2808,CVE-2013-2566,CVE-2015-4000等弱加密算法导致的漏洞进行逐个修复,只需要针对具体服务在配置文件中将des/3des,RC4,EXP等算法禁用或指定为其他强加密算法即可。
可采用建议配置:
1.nginx:
更新Nginx根目录下 conf/nginx.conf 文件如下:
server { ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; }
2.Apache:
更新Apache根目录下 conf/httpd.conf 文件如下:
<IfModule mod_ssl.c> <VirtualHost *:443> SSLProtocol TLSv1 TLSv1.1 TLSv1.2 SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4 </VirtualHost> </IfModule>
3.tomcat:
更新 %TOMCAT_HOME%\conf\server.xml 文件如下:
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" SSLProtocol="TLSv1+TLSv1.1+TLSv1.2" SSLCipherSuite="ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4" />