根据某高校要求,所有新部署的服务器都要进行漏洞扫描。之前也进行过类似的操作,对扫描出的漏洞该打补丁打补丁,该升级软件升级软件,但是一直没有系统的记录步骤。非运维出身,遇到问题时每次从百度、谷歌搜索的解决方案往往没有针对性,零零散散,需要深入对比才能从中找到办法,故记录在此,以备后用。
绿盟科技旗下的安全评估系统评估出服务器上openssl一大堆漏洞,高危超过8分,但是详细分析,只需要升级openssl至最新版本,即可解决所有问题。
首先,要到官网查询最新版本(官网可能打开比较慢,由于我一直用梯子所以没感觉),编辑此文时最新版本为1.0.2t,在centos里用wget命令拉取最新版本并解压进入目录:
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.0.2t.tar.gz
tar -zxf openssl-1.0.2t.tar.gz
cd openssl-1.0.2t
接下来,要对openssl进行编译,注意,如果都使用默认参数,最后会把编译好的文件放在/usr/local/ssl目录下,不推荐用默认,所以加位置参数:
./config --prefix=/usr/local/openssl-1.0.2t shared z-lib
make && make install
编译完之后,在/usr/local/openssl-1.0.2t目录下就是最新的openssl了,但是还没有完,要让系统默认使用的也是这个最新版本,还需要进行下列操作:
先备份旧的openssl
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/lib64/openssl /usr/lib64/openssl.old
mv /usr/lib64/libssl.so /usr/lib64/libssl.so.old
如果mv操作的时候有报错,可能是没有找到要移动的目录,这时你要用whereis openssl命令寻找openssl相关目录的位置,然后用mv移动
还记得之前我们把openssl编译到了/usr/local/openssl-1.0.2t这个位置,强烈建议在同级目录里做一个软链接
ln -s /usr/local/openssl-1.0.2t /usr/local/openssl
然后再把新的openssl链接到系统
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
ln -s /usr/local/openssl/lib/libssl.so /usr/lib64/libssl.so
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v // 建立动态链接
最后,查看版本是否升级成功
openssl version
需要注意的是,如果CentOS系统之前已经编译安装过apache、php等软件,这些软件可能还是用的旧版本的openssl,扫描仍然提示有openssl漏洞,所以要对这些软件进行重新编译,编译前也是养成备份的好习惯,编译时加上之前编译的最新openssl位置参数:
--with-openssl=/usr/local/openssl/