修复OpenSSL被爆出的严重安全漏洞

/ 0评 / 0

OpenSSL被爆出严重的安全漏洞,具体请看OpenSSL官网4月7日发布的公告:http://www.openssl.org/news/secadv_20140407.txt

 

漏洞检测工具:http://filippo.io/Heartbleed/

 

该漏洞可能暴露密钥和私密通信,应尽快修补!!!

 

存在此漏洞的版本情况:

1. OpenSSL 1.0.1 和OpenSSL 1.0.2-beta存在此漏洞

2. 更老版本OpenSSL(1.0.0和0.9.8)不受影响

修补方法:

1. 如果为OpenSSL 1.0.1版本,应尽快升级到OpenSSL 1.0.1g(已修复漏洞)

2. 无法立即升级的用户可以加-DOPENSSL_NO_HEARTBEATS参数重新编译OpenSSL

3. 如果为OpenSSL 1.0.2-beta版本,建议暂时用OpenSSL 1.0.1g替代,等OpenSSL 1.0.2-beta2修复版本发布,再更新至OpenSSL 1.0.2-beta2

 

具体实施:

1. 检查相关服务是否有此漏洞:http://filippo.io/Heartbleed/

 

2. 查看机器上OpenSSL版本, 确认依赖OpenSSL的服务

openssl version -a

 

3. 如果为OpenSSL 1.0.1[a-f] 或者 OpenSSL 1.0.2-beta版本,建议从官网下载OpenSSL 1.0.1g

wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz

tar -zxvf openssl-1.0.1g.tar.gz && cd openssl-1.0.1g/

./config

make && make install

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

ldconfig -v

openssl version -a 验证版本正确升级

 

4. 如果不方便立即升级,建议重新下载源码加-DOPENSSL_NO_HEARTBEATS参数编译安装(OpenSSL 1.0.1e为例)

wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz

tar -zxvf openssl-1.0.1e.tar.gz && cd openssl-1.0.1e/

./config -DOPENSSL_NO_HEARTBEATS

make && make install

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

ldconfig -v

openssl version -a | grep DOPENSSL_NO_HEARTBEATS //验证版本正确升级

 

5. 确认依赖OpenSSL库的服务,例如nginx, apache等web服务,如果是静态编译了openssl库的,需要在升级完OpenSSL后重新编译服务程序,使用动态链接库的,需要重启一下服务:

mv /usr/bin/openssl{,.OFF}

mv /usr/include/openssl{,.OFF}

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/ssl/include/openssl /usr/include/openssl

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

ldconfig -v

openssl version -a 验证版本正确升级

 

6. 如果发现升级出现问题可以采用一下方法进行回滚OpenSSL

rm -rf /usr/bin/openssl /usr/include/openssl

mv /usr/bin/openssl{.OFF,}

mv /usr/include/openssl{.OFF,}

sed s#/usr/local/ssl/lib##g /etc/ld.so.conf

ldconfig -v