nginx平滑升级完整版
前言:因公司漏洞扫描发现高危漏洞,要求修复漏洞
nginx resolver 释放后重利用漏洞(CVE-2016-0746)修复,拿到这个漏洞的时候整个人都是懵的,wc,我才两年多Java开发工作经验需要我升级服务器漏洞?心里一万头cnm在奔腾…好吧,即使再不情愿也需要修复…只能在网上找了一大堆博客做出总结。
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是nginx resolver 释放后重利用漏洞(CVE-2016-0746)?
nginx是一款使用非常广泛的高性能web服务器。 ==nginx 1.8.1之前版本、1.9.10之前的1.9.x版本中==,resolver存在释放后重利用漏洞。 远程攻击者通过CNAME响应处理相关的构造的DNS响应,可造成worker进程崩溃, 拒绝服务。虽然介绍就这样么写的,还给我提供了厂商补丁包: 厂商补丁: NginxNginx已经为此发布了一个安全公告(049700)以及相应补丁:
049700:nginx security advisory (CVE-2016-0742, CVE-2016-0746,
CVE-2016-0747)
链接:http://mailman.nginx.org/pipermail/nginx/2016-January/049700.html
补丁链接:https://trac.nginx.org/nginx/changeset/93d70d87914c350948ab70
1cc99569680320e198/nginx,通过链接打开一开,我又懵了,这都是啥,我的天,于是我就看详情描述,被我捕捉到关键字nginx 1.8.1之前版本、1.9.10之前的1.9.x版本中,意思就是说nginx1.8.1和1.9.19是不存在漏洞,接下来相信大家都知道怎么做了,就是升级呗,来上干货。
二、升级nginx-1.8.1
1.准备工作
提前准备好安装包nginx-1.8.1.tar.gz
下载地址:http://nginx.org/en/download.html
首先cd /tmp
在tmp新建一个文件夹
mkdir nginx
通过XShell等连接工具上传至nginx文件夹并解压
tar -zxvf nginx-1.8.1.tar.gz
接下来先查看当前nginx版本
/usr/local/nginx/sbin/nginx -V
我这边是刚升级完,所有版本是1.8.1
在编译安装之前查看nginx进程ID信息:
ps -ef |grep nginx
1.编译安装:这里需要注意如果你是root账号升级安装的话是不需要指定用户和组的
例如:./configure --with-http_realip_module就可以了,这里./configure后面输入的就是你之前nginx版本信息中的configure arguments
如果你需要指定用户编译安装例如www用户
支持ssl 支持pcre 支持状态查询 支持静态压缩模块等执行如下命令
./configure --user=www --group=www --prefix=/usr/local/nginx/ --with-pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module
这里需要说明,具体需要支持什么功能还是要查看之前nginx配置的信息
2.查看是否编译成功
echo $? ,返回0则代表成功
3.echo $?成功后直接执行make
4.再次查看是否执行成功
echo $?
5.平滑升级,把编译安装好的nginx启动文件替换旧的文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
再把新的文件copy过去
cp /tmp/nginx/nginx-1.8.1/objs/nginx /usr/local/nginx/sbin/nginx
6.kill掉之前老版本nginx进程
kill -USR2 cat /usr/local/nginx/nginx.pid
kill -QUIT cat /usr/local/nginx/nginx.pid.oldbin
7.没报错就代表成功查看nginx的版本
/usr/local/nginx/sbin/nginx -V
至此nginx就已经升级完毕,第一次写博客,各位大佬多多包涵,
如有什么问题可在评论中提出。