网络设备在客户的机房上线,一般都会使用扫描工具进行扫描,以查看是否存在漏洞风险,最近的项目中就出现了如下的风险漏洞。
临时解决方法:
SSL/TLS
--------
1、禁止apache服务器使用RC4加密算法
vi /etc/httpd/conf.d/ssl.conf
修改为如下配置
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4
重启apache服务
2、关于nginx加密算法
1.0.5及以后版本,默认SSL密码算法是HIGH:!aNULL:!MD5
0.7.65、0.8.20及以后版本,默认SSL密码算法是HIGH:!ADH:!MD5
0.8.19版本,默认SSL密码算法是 ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM
0.7.64、0.8.18及以前版本,默认SSL密码算法是ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
低版本的nginx或没注释的可以直接修改域名下ssl相关配置为
ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES
256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GC
M-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_prefer_server_ciphers on;
需要nginx重新加载服务
3、关于lighttpd加密算法
在配置文件lighttpd.conf中禁用RC4算法,例如:
ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"
重启lighttpd 服务。
4、tomcat参考:
https://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html
https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html
5、浏览器手工屏蔽方案
Windows 用户:
1)完全关闭 Chrome 浏览器和Mozilla Firefox浏览器
2)复制一个平时打开 Chrome 浏览器(Mozilla Firefox浏览器)的快捷方式
3)在新的快捷方式上右键点击,进入属性
4)在「目标」后面的空格中字段的末尾输入以下命令 --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007
Mac OS X 用户:
1)完全关闭 Chrome 浏览器
2)找到本机自带的终端(Terminal)
3)输入以下命令:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007
Linux 用户:
1)完全关闭 Chrome 浏览器
2)在终端中输入以下命令:google-chrome --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007
上面其实已经说了解决方案,以libssl.so被检测出上面的漏洞为例,可以使用如下的方式进行解决:
const char ssl_ciphers[] = "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4:!3DES";
...
context = SSL_CTX_new((SSL_METHOD *)method);
SSL_CTX_set_cipher_list(ctx->context, ssl_ciphers)
SSL_CTX_set_options(ctx->context, SSL_OP_CIPHER_SERVER_PREFERENCE);
...
上面只是贴出部分代码,只需要在调用ssl相关函数初始化的时候按照上面检测提示进行设置即可。
重协商攻击的原理以及处理方式见重协商原理以及处理方式
上文主要谈到几种处理方式:
*) Implement RFC5746. Re-enable renegotiation but require the extension
as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
turns out to be a bad idea. It has been replaced by
SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with
SSL_CTX_set_options(). This is really not recommended unless you
know what you are doing.
[Eric Rescorla <ekr@networkresonance.com>, Ben Laurie, Steve Henson]