Nginx 安全漏洞

Nginx 安全漏洞

漏洞引发的威胁:

  • CVE-2021-23017 nginx存在安全漏洞,该漏洞源于一个离一错误在该漏洞允许远程攻击者可利用该漏洞在目标系统上执行任意代码。受影响版本:0.6.18-1.20.0
  • CVE-2019-9511,CVE-2019-9513,CVE-2019-9516 Nginx 1.9.51 至 16.0版本及1.17.2.版本中的HTTP/2实现中存在拒绝服务漏洞,攻击者以多个数据流请求特定资源上的大量数据,通过操纵窗口大小和流优先级,强迫服务器将数据排列在1字节的块中,导致CPU及内存资源耗尽,造成拒绝服务。
  • CVE-2018-16844 Nginx 1.15.5之前的版本和1.14.1版本中的HTTP/2实现过程中存在安全漏洞。远程攻击者可通过发送恶意的请求利用该漏洞造成拒绝服务。
  • CVE-2018-16843 nginx 1.15.6和1.14.1之前的版本的HTTP/2实现过程中存在安全漏洞。攻击者可利用该漏洞消耗大量的内存空间。
  • CVE-2018-16845 Nginx 1.15.5及之前的版本和1.14.1版本中的ngx_http_mp4_module组件存在内存泄露漏洞,该漏洞源于程序没有正确处理MP4文件。远程攻击者可利用该漏洞获取敏感信息或造成拒绝服务。
  • CVE-2017-20005 Nginx在1.13.6之前存在安全漏洞,该漏洞源于当autoindex模块遇到这个文件时,会导致一个整数溢出。

解决方案

一、查看当前版本

[root@localhost ~]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.2.9

二、官网下载最新版本

http://nginx.org/en/download.html
https://nginx.org/

三、备份配置文件

[root@localhost ~]# cp -r /usr/local/nginx/ /usr/local/nginx_bak/
[root@localhost ~]# ls /usr/local/nginx
nginx/     nginx_bak/

四、上传新版本的nginx,先解压,配置,编译。

不可以使用make && make install直接编译安装,不然会覆盖原来版本产生多种问题

[root@localhost ~]# tar zxf nginx-1.20.2.tar.gz 
[root@localhost ~]# cd nginx-1.20.2/
[root@localhost nginx-1.20.2]# ./configure
[root@localhost nginx-1.20.2]# make

五、复制新版本的启动文件

[root@localhost nginx-1.20.2]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# mv nginx nginx.old
[root@localhost sbin]# cp /root/nginx-1.20.2/objs/nginx /usr/local/nginx/sbin/

六、回到新版本安装目录进行平滑升级

[root@localhost sbin]# cd /root/nginx-1.20.2/
[root@localhost nginx-1.20.2]# make upgrade
/usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
sleep 1
test -f /usr/local/nginx/logs/nginx.pid.oldbin
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`

出现这个提示pid文件位置不一致,那就需要换一种方式

[root@localhost nginx-1.20.2]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

可以查看一下 nginx.pid位置

[root@localhost nginx-1.20.2]# find / -name nginx.pid
/usr/local/nginx/logs/nginx.pid
[root@localhost nginx-1.20.2]# kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
现在会在/usr/local/nginx/logs/下生成一个nginx.pid.oldbin的pid文件
[root@localhost nginx-1.20.2]# kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
[root@localhost nginx-1.20.2]# /usr/local/nginx/sbin/nginx -v
nginx version: nginx/1.20.2
升级结束 新版本为1.20.2

你可能感兴趣的:(漏洞,nginx,服务器,运维,安全,linux)