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