关于SSL/TLS协议信息泄露漏洞(CVE-2016- 2183)解决方案

详细描述:

TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。 TLS, SSH, IPSec协商 及其他产品中使用的DES及Triple DES密码存在大约四十亿块的 生日界,这可使远程攻击者通过 Sweet32攻击,获取纯文本数据。 <*来源:Karthik Bhargavan Gaetan Leurent 链接:https://www.o penssl.org/news/secadv/20160922.txt *>

解决办法:

建议:避免使用DES算法 1、OpenSSL Security Advisory [22 Sep 2016] 链接:https://www.openssl.o rg/news/secadv/20160922.txt 请在下列网页下载最新版本: https://www.openssl.org/source/ 2、对 于nginx、apache、lighttpd等服务器禁止使用DES加密算法 主要是修改conf文件 3、Windows系统可 以参考如下链接: https://social.technet.microsoft.com/Forums/en-US/31b3ba6f-d0e6-417a-b6f 1- d0103f054f8d/ssl-medium-strength-cipher-suites-supported-sweet32cve20 162183? forum=ws2016

实际操作:

根据官网要求升级对应大版本到指定的分支,按照要求准备升级到最新版本openssl

步骤:

一、执行脚本文件进行下载对应版本openssl,代码如下

#!/bin/sh
#下载安装指定版本openssl
#以下是普通用户脚本,一些操作需要root权限的sudo,root用户可删除
wget http://www.openssl.org/source/openssl-1.0.1u.tar.gz
sudo tar xzvf openssl-1.0.1u.tar.gz
cd openssl-1.0.1u
sudo ./config shared zlib
make && make install
sudo chmod 777 /usr/local/ssl
cd /usr/local/ssl/
sudo ./bin/openssl version -a
#替换旧版openssl
sudo mv /usr/bin/openssl /usr/bin/openssl.old2
sudo mv /usr/include/openssl /usr/include/openssl.old2
sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/ssl/include/openssl/ /usr/include/openssl
#配置库文件搜索路径
#root的写法 echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
echo "/usr/local/ssl/lib" |sudo tee -a /etc/ld.so.conf
sudo ldconfig
二、重新编译nginx,指定相应的新版本的openssl模块
其次,重新配置模块并重新编译nginx文件,具体操作如下:
#测试新版是否正常
openssl version -a
#备注:如果你是普通用户创建的软链注意权限问题

  二、重新编译nginx,指定相应的新版本的openssl模块

nginx -V
----------------------------------------------------------------------------
nginx version: nginx/1.16.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e 22 Sep 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-pcre=/ywj/src/pcre-8.35 --
with-http_ssl_module --with-http_realip_module --with-http_addition_module --
with-http_gzip_static_module --with-http_sub_module --with-http_dav_module --
with-http_flv_module --with-http_stub_status_module --without-http_charset_module
--with-http_v2_module
具体编译模块按照业务需求查看

  其次,重新配置模块并重新编译nginx文件,具体操作如下:

./configure --prefix=复制已有的模块+ with-openssl=/ytxt/src/openssl-1.0.1u
#注意:这里新增模块with-openssl指定新的nginx ssl模块依赖的ssl库,如果没有这步最终的nginx的
ssl编译版本是openssl-1.0.1u,而运行版本还是原来的openssl-1.0.1e
#编译完成后,执行make,但不执行make install
make
#先备份
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx20181113.old
#再复制最新额
cp ./objs/nginx /usr/local/nginx/sbin/nginx
#查看最新版本
nginx -V
----------------------------------------------------------------------------
nginx version: nginx/1.16.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1u 22 Sep 2016
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-pcre=/ywj/src/pcre-8.35 --
with-http_ssl_module --with-http_realip_module --with-http_addition_module --
with-http_gzip_static_module --with-http_sub_module --with-http_dav_module --
with-http_flv_module --with-http_stub_status_module --without-http_charset_module
--with-http_v2_module --with-openssl=/ytxt/openssl-1.0.1u

总结

第一步、升级openssl升级到指定的修正版本,这个从测试其版本的角度修复这个问题(这步基本解决自 动扫描漏洞的问题)

第二步、ssl的指定算法需要排除DES、3DES这样的算法,这个从算法匹配的角度解决这个问题

上一篇:vijos 1115 火星人


下一篇:iframe框架