天天看点

漏洞修复:使用弱散列算法签署的 SSL 证书(CVE-2004-2761)

作者:羊毛与狗

关注我,不迷路,大家好,我是大王。--记录运维中遇到的故障及排查方法

一、背景说明

今天收到客户那边通知,说服务器有安全漏洞需要加固。漏洞一大堆,脑壳疼啊,一个一个慢慢分享。

通报内容如下:

  • 影响端口:443
  • 漏洞名称:使用弱散列算法签署的 SSL 证书(CVE-2004-2761)(原理扫描)
  • CVE ID:CVE-2004-2761
  • 漏洞描述:远程服务使用已使用加密弱散列算法(例如 MD2、MD4、MD5 或 SHA1)签名的 SSL 证书链。 众所周知,这些签名算法容易受到碰撞攻击。 攻击者可以利用它生成具有相同数字签名的另一个证书,从而允许攻击者伪装成受影响的服务。请注意,此插件会将 2017 年 1 月 1 日之后到期的所有使用 SHA-1 签名的 SSL 证书链报告为易受攻击。 这与 Google 逐渐淘汰 SHA-1 加密哈希算法是一致的。
  • 加固建议:使用了弱的 SHA-1、MD5、MD4 或 MD2 哈希算法签名的 SSL/TLS 证书的服务器将需要获取新的 SHA-2 签名 SSL/TLS 证书以避免 Web 浏览器 SSL/TLS 证书警告。

二、排查过程

2.1 确认漏洞

首先需要确认当前 OpenSSL 的版本是否存在漏洞。可以使用以下命令查看 OpenSSL 的版本

openssl version           

如果输出的版本号在 0.9.6d 和 0.9.7c 之间(包括这两个版本),则表示 OpenSSL 存在漏洞。

很明显,我这是中招了

漏洞修复:使用弱散列算法签署的 SSL 证书(CVE-2004-2761)

2.2 升级版本

2.2.1 安装依赖

yum install -y gcc openssl-devel zlib-devel wget           

2.2.2 下载最新版本

目前最新版本是1.1.1q,可以通过修改版本号的方式下载最新版本,
可以在这个网站下载:https://www.openssl.org/source
wget http://www.openssl.org/source/openssl-1.1.1q.tar.gz
若授权过期,则通过以下方式下载
wget  https://www.openssl.org/source/openssl-1.1.1q.tar.gz --no-check-certificate           
漏洞修复:使用弱散列算法签署的 SSL 证书(CVE-2004-2761)

2.2.3 安装服务

# 1、解压并编译,目录自定义,以下以/usr/local为例
tar xvf openssl-1.1.1q.tar.gz -C /usr/local/
cd /usr/local/openssl-1.1.1q/
./config shared --openssldir=/usr/local/openssl-1.1.1q --prefix=/usr/local/openssl
make && make install

# 备份旧文件
mv /usr/lib64/openssl /usr/lib64/openssl.bak
mv /usr/bin/openssl /usr/bin/openssl.bak

# 使用新版本
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl


# 配置lib库
# 这里建议咱不用,因为弄了可能ssh的时候登录不上
echo "/usr/local/lib/" >> /etc/ld.so.conf
ldconfig -v           

3 再次确认版本

# 查看版本后若报以下错误,这是库位置不正确
[root@wangzy openssl-1.1.1q]# openssl version
openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory


# 进行软件接更正
# libssl.so.1.1默认在以下位置,若不在则通过命令:find / -name libssl.so.1.1 查找对应位置
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1           
漏洞修复:使用弱散列算法签署的 SSL 证书(CVE-2004-2761)

注意:虽然升级了OpenSSL,可是使用rpm -q openssl查看版本是,还是旧版(因为rpm只能管理rpm包),所以查看当前使用的openssl版本还是要以openssl version -a命令为准。

继续阅读