最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

[安全漏洞]当OpenSSL漏洞来临之际,运维大战“僵尸”

XAMPP相关 admin 107浏览 0评论

一、漏洞信息(官方报告)

  1. 风险等级:高
  2. CVE版本号:CVE-2016-2183
  3. 详细描述
TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。

TLS, SSH, IPSec协商及其他产品中使用的DES及Triple DES密码或者3DES及Triple 3DES存在大约四十亿块的生日界,这可使远程攻击者通过Sweet32攻击,获取纯文本数据。

<*来源:Karthik Bhargavan
Gaetan Leurent

链接:https://www.openssl.org/news/secadv/20160922.txt
*>
  1. 解决方法
建议:避免使用DES和3DES算法

1、OpenSSL Security Advisory [22 Sep 2016]
链接:https://www.openssl.org/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-b6f1-d0103f054f8d/ssl-medium-strength-cipher-suites-supported-sweet32cve20162183?forum=ws2016

https://docs.microsoft.com/zh-cn/troubleshoot/windows-server/windows-security/restrict-cryptographic-algorithms-protocols-schannel
  1. 返回信息
DES/3DES Ciphers:
TLS11_RSA_WITH_3DES_EDE_CBC_SHA
TLS1_RSA_WITH_3DES_EDE_CBC_SHA
TLS1_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS12_RSA_WITH_3DES_EDE_CBC_SHA
TLS12_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA

二、漏洞修复方案分析

当接到安全部门下发的漏洞通告后,笔者立即组织本团队人员开展修复工作,根据OpenSSL Security Advisory提供的链接 https://www.openssl.org/news/secadv/20160922.txt 官方建议的修复方案如下:

  • OpenSSL 1.1.0 用户应升级至 1.1.0a
  • OpenSSL 1.0.2 用户应升级至 1.0.2i
  • OpenSSL 1.0.1 用户应升级至 1.0.1u

三、现网情况摸排

根据官方建议的修复方案,那么就需要搞清楚现网所有主机操作系统上的openssl版本,需要有针对性的进行升级。

1. 查看openssl版本

openssl version -v

# 如需更详细的信息,可使用-a参数
openssl version -a

说明:笔者现网的操作系统大部分是CentOS7/6以及RedHat7/8,且幸好存在openssl漏洞的主机数量较少,不然就头大咯,经过查看,笔者所处环境的openssl当前版本是OpenSSL 1.0.1e-fips 11 Feb 2013

2. 确定升级方案

笔者的openssl版本是OpenSSL 1.0.1e-fips 11 Feb 2013,也就是1.0.1,根据官方给的修复方案,结合现网的情况,那么就需采取:OpenSSL 1.0.1 用户应升级到 1.0.1u 的升级方案

事不宜迟,马上到openssl官方网站找到对应的源码包:openssl-1.0.1u.tar.gz

wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz

四、开始升级操作

1. 提前创建好自定义安装路径

mkdir /usr/local/openssl-1.0.1u
mkdir /usr/local/ssl-1.0.1u

笔者自定义安装在 /usr/local 下,非必须是该路径,可根据自身情况安装在其他路径也是阔以滴。

2. 解压下载好的源码包

tar -zxf openssl-1.0.1u.tar.gz 

3. 开始编译和安装

# 进入解压后的源码包目录
cd openssl-1.0.1u

# 配置openssl安装目录和openssldir
./config --prefix=/usr/local/openssl-1.0.1u --openssldir=/usr/local/ssl-1.0.1u

# 使用2个线程进行同时编译
make -j 2

# 安装
make install

# 完成安装后,可以查看下里面安装好的东东
># ls -l /usr/local/openssl-1.0.1u/
total 12
drwx------ 2 root root 4096 Apr 26 17:17 bin
drwx------ 3 root root 4096 Apr 26 17:17 include
drwx------ 4 root root 4096 Apr 26 17:17 lib

># ls -l /usr/local/ssl-1.0.1u/
total 28
drwx------ 2 root root  4096 Apr 26 17:17 certs
drwx------ 6 root root  4096 Apr 26 17:17 man
drwx------ 2 root root  4096 Apr 26 17:17 misc
-rw-r--r-- 1 root root 10835 Apr 26 17:17 openssl.cnf
drwx------ 2 root root  4096 Apr 26 17:17 private

说明:在笔者的环境中,编译安装都非常顺利,没有出现任何报错,如其他盆友出现有报错,请自行解决,或联系我一起研讨。

五、软链接到新的openssl版本

非常重要的提示:这一步,非常重要,需要谨慎,一定要分析好哪些需要将新版本软链过去,而且要做好备份。

1. 查找旧版的openssl在哪

  • 想知道当前操作系统上的openssl在哪,第一时间想到的是搜索,笔者在这里使用find命令进行查找
># find / -depth -name "openssl"
/usr/include/openssl
/usr/bin/openssl
/usr/lib64/openssl
/usr/local/lib/gcc/x86_64-pc-linux-gnu/8.1.0/include-fixed/openssl
/opt/test/nginx-1.18.0/auto/lib/openssl
/etc/pkiopd/ca-trust/extracted/openssl
/home/ops/abc/python/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl
/home/ops/abc/python/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl

居然找到了那么多关于openssl的路径,那么到底哪些才是需要新版替换呢?那么还需要进一步分析

2. 分析哪些要做软链

# 经分析,下面这两个是需要通过软链替换的,而且要做好备份
/usr/include/openssl
/usr/bin/openssl

# 经分析,这个目录暂时不动,因为新版的路径下/usr/local/openssl-1.0.1u/ 没有lib64,只有lib,为了预防出现其他不可预知的问题,可先不通过软链的方式替换它
/usr/lib64/openssl

# 经分析,以下这些是应用自身的,可暂且不管
/usr/local/lib/gcc/x86_64-pc-linux-gnu/8.1.0/include-fixed/openssl
/opt/test/nginx-1.18.0/auto/lib/openssl
/etc/pkiopd/ca-trust/extracted/openssl
/home/ops/abc/python/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl
/home/ops/abc/python/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl

3. 备份当前openssl

mv /usr/include/openssl /usr/include/openssl.bak.20220426
mv /usr/bin/openssl /usr/bin/openssl.bak.20220426

4. 配置软链到新版本

ln -s /usr/local/openssl-1.0.1u/include/openssl /usr/include/openssl
ln -s /usr/local/openssl-1.0.1u/bin/openssl /usr/bin/openssl

5. 更新动态链接数据并重新加载

># echo "/usr/local/openssl-1.0.1u/lib" >> /etc/ld.so.conf
># ldconfig -v

6. 最后,查看是否升级成功

># openssl version
OpenSSL 1.0.1u  22 Sep 2016

笔者旧版的openssl是OpenSSL 1.0.1e-fips 11 Feb 2013,升级后是 OpenSSL 1.0.1u  22 Sep 2016,升级成功!

六、总结

通过这个事情,笔者认为:

  1. 需要搞清楚现网的版本是否在安全版本内,如果是安全版本,那么就无需修复;
  2. 如果需要修复,那么一定要先分析官方建议的修复方案;
  3. 查看现网环境的情况,结合官方给的修复建议,进一步确定最终的修复方案;
  4. 然后编写详细的升级方案和回退方案、进行内部评审,如果有测试环境,还需对升级方案进行测试验证;
  5. 在生产环境找1台业务没那么重要的节点先进行升级,如没有问题再去升级其他服务器的openssl。

说了那么多,总而言之是要敬畏每一条指令,每一行代码,每一步操作,运维工程师要时刻对生产环境保持敬畏之心。

转载请注明:XAMPP中文组官网 » [安全漏洞]当OpenSSL漏洞来临之际,运维大战“僵尸”

您必须 登录 才能发表评论!