事件背景
Nginx 11月6日的安全更新中,修补了三个可导致拒绝服务的漏洞:CVE-2018-16843,CVE-2018-16844和CVE-2018-16845。位于nginx HTTP/2 模块和流媒体MP4模块。
CVE-2018-16843,CVE-2018-16844漏洞存在于ngx_http_v2模块之中(默认情况下不编译,编译时需要开启--with-http_v2_module,同时将listen http2添加到配置文件中),当用户添加http2支持时,攻击者可以发送特制的HTTP/2请求,消耗CPU和内存资源,最终导致DoS。
修复建议
关闭http/2请求处理和MP4流媒体支持,强烈建议将Nginx 升级至1.15.6,或1.14.1 stable 最新版本。
升级Nginx
查看当前版本信息及配置参数:
sudo /usr/local/nginx/sbin/nginx -V
下载安装包
cd /usr/local/
wget [http://nginx.org/download/nginx-1.14.1.tar.gz](http://nginx.org/download/nginx-1.14.1.tar.gz)
tar zxvf nginx-1.14.1.tar.gz
cd nginx-1.14.1.tar.gz
开始编译nginx
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module
编译nginx,添加http_v2模块应用
编译完成后,执行make,但不执行make install
make
备份
将旧版本的nginx二进制文件,重命名一个名字,在这期间,当前运行的nginx进程不会停止,不影响应用运行。
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx20181113.old
然后将上一步通过make编译好的新版nginx二进制文件,拷贝到运行目录
cp ./objs/nginx /usr/local/nginx/sbin/nginx
执行更新
在源码目录根目录下(/usr/local/nginx-1.14.1),执行更新安装命令:
make upgrade
注意:如果原来的相关配置文件中,写有和ssl有关的配置信息,需要先暂时注释掉,否则更新时会报错。
更新完成
更新完成后,执行
nginx -V
可以看到nginx已经更新到1.14.1版本。