阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache服务器OpenSSL升级

189次阅读
没有评论

共计 2957 个字符,预计需要花费 8 分钟才能阅读完成。

OpenSSL 心血漏洞吵的风生水起的。起初,公司几台 rds 的小业务机被通知修补 OpenSSL 漏洞,这几台机器都是单独小业务,当时停掉,找了个简单的文档便将它升级 OK(有的是 nginx,有的是 resin)。修补完成重启服务后 OK。

公司的主业务还有一台总的入口机(LVS 撑的 2 台),由于这台机器比较重要,13 年有过一次修补 OpenSSL 的漏洞也出过问题,(老机器呀,有换环境的打算),所以这次比较担心。但是上周突然有客服反映客户浏览本地服务时浏览器警报业务有问题,致使不得不立马来解决这个问题(升级 OpenSSL)。

相关阅读

OpenSSL TLS 心跳读远程信息泄露漏洞 (CVE-2014-0160) http://www.linuxidc.com/Linux/2014-04/99741.htm

OpenSSL 严重 bug 允许攻击者读取 64k 内存,Debian 半小时修复 http://www.linuxidc.com/Linux/2014-04/99737.htm

OpenSSL“heartbleed”的安全漏洞 http://www.linuxidc.com/Linux/2014-04/99706.htm

通过 OpenSSL 提供 FTP+SSL/TLS 认证功能,并实现安全数据传输 http://www.linuxidc.com/Linux/2013-05/84986.htm

——————————————————————————–

环境查看及检测

PS:Apache 编译好的 $homedir/build/config.nice 文件里面记录了之前编译的参数。

“./configure” \

“–with-ldap” \

“–enable-mods-shared=all ssl ldap cache proxy authn_alias file_cache authnz_ldap charset_lite dav_lock cache_disk” \

“–with-included-apr” \

“–with-ssl=/usr/local/openssl/”(第一次这里出了问题)\

“$@”

然后重新编译完之后使用网站检测,还是继续报存在 OpenSSL 漏洞。。(开始用的 360。然后觉得被他坑了,然后又找了个网站。)

https://lastpass.com/heartbleed  (由于这是事后补的文章,所以我拿了个朋友的网站来演示,他的同样是这样的问题。)

Apache 服务器 OpenSSL 升级

然后瞬间明白了点什么。

这里出现了 2 个问题

-with-ssl=/usr/local/openssl/ 是老的 OpenSSL 的路径。

当指定了新的路径的时候,Apache 报错。(由于这是事后文章报错信息没记录。大概是这样的:缺少 apr-util 依赖的相关的 ldap.so**** 大概意思是你编译 apr-util 的时候就没有把他依赖的 ldap 编译进去)

得了。不绕了,直接开始正确的流程走吧。

一、安装 OpenSSL

升级步骤

0. 首先通过 #openssl version –a 查看系统中存在的 OpenSSL 版本号

1. 通过 #wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz 获得源码包

2. 安装 openssl

tar xf openssl-1.0.1g.tar.gz

cd openssl-1.0.1g

./config -DOPENSSL_NO_HEARTBEATS shared zlib

make

make install

mv /usr/bin/openssl /usr/bin/openssl.OFF

mv /usr/include/openssl /usr/include/openssl.OFF

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

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

3 配置库文件搜索路径

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

#ldconfig -v

4 查看 openssl 版本号,验证安装正确性

#openssl version -a

可以看到是新装好的版本。

-DOPENSSL_NO_HEARTBEATS(禁止心跳信息)

二、编译安装 apr apr-util

特别需要注意,我下边会直接 yum 安装 ldap 相关的组件,原因在于最后编译 Apache 会依赖 apr-util 里面的 ldap 库,所以编译 apr-util 的时候也需要指定。

yum install apr apr-devel apr-util apr-util-devel apr-util-ldap  (这样做是为了解决 apr-util 依赖 ladp 的问题,因为我找不到缺少了具体哪个库)

tar xf apr-1.4.6.tar.bz2

cd apr-1.4.6

./configure –prefix=/usr/local/apr

make && make install

cd ..

tar xf apr-util-1.5.2.tar.bz2

cd apr-util-1.5.2

 ./configure –prefix=/usr/local/apr-util –with-apr=/usr/local/apr –with-ldap

 make && make install

三、编译安装 Apache

$ tar xf httpd-2.4.4.tar.bz2

$ cd httpd-2.4.4

$ ./configure –with-ldap –enable-mods-shared=”all ssl ldap cache proxy authn_alias file_cache authnz_ldap charset_lite dav_lock cache_disk” –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util –with-ssl=/usr/local/ssl/ (需要注意 ssl 这个地方的路径)

$ make && make install

最后补充

操作前我没有压缩去备份 Apache 原先的文件(日志也打在里面)。

我将它 mv 过去,然后最后 在编译好的目录下删掉 conf htdocs logs 三个目录,然后将备份的目录中的这三个目录 mv 过来。最便捷(当然你可以复制 logs 的目录结构过来也行)

——————————————————————————–

大概需要注意的就是 ldap 依赖的。

其中我在编译做 nginx  OpenSSL 升级的时候,有一个也是重新编译,好像是环境因素(时间隔太久了),在编译的时候,直接指定了 OpenSSL 的源码文件,让 nginx 将需要的 OpenSSL 的一些依赖的库重新编译了一次。

建议升级线上环境的时候,在测试环境测试完,然后做成 rpm 包,然后直接线上 install。如果本地有自己的 yum 环境,那更是极好的。

OpenSSL 的详细介绍 :请点这里
OpenSSL 的下载地址 :请点这里

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计2957字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中