通过升级nginx完美修复nginx相关漏洞

目录

  • 前言
  • 1 安全评估报告的漏洞信息
    • 1.1 nginx漏洞概况
    • 1.2 nginx漏洞详细信息
    • 1.3 安装的软件信息
  • 2 问题分析
  • 3 Nginx从1.18版本升级到1.26版本的步骤与说明
    • 3.1 查看现有Nginx配置参数
    • 3.2 下载新版本Nginx
    • 3.3 配置新版本Nginx
    • 3.4 编译新版本Nginx
    • 3.5 备份旧版本Nginx的二进制文件
    • 3.6 替换Nginx二进制文件
    • 3.7 测试新版本Nginx
    • 3.8 查看Nginx运行情况
    • 3.9 发送信号停止旧版本Nginx接受请求
    • 3.10 再次查看Nginx运行情况
    • 3.11 发送WINCH信号关闭旧的Nginx工作进程
    • 3.12 关闭旧的Nginx master进程
  • 结语

前言

在软件开发完成并交付给客户后,经过一段时间,客户的上级部门要求对服务器进行安全检测。通过漏洞扫描,发现了服务器存在安全漏洞,并要求在规定期限内完成漏洞修补。由于客户通常缺乏技术能力,他们会求助于软件开发公司来协助解决服务器的安全问题。作为软件开发人员,我们不仅会为客户开发软件,还会帮助他们解决服务器安全方面的难题,确保其系统的安全性和稳定性。

1 安全评估报告的漏洞信息

1.1 nginx漏洞概况

首先看一下安全评估报告,报告中对服务器的漏洞,漏洞概况是一个所有漏洞的列表。此处只针对nginx的漏洞进行展示和处理。

端口协议服务漏洞
ICMPICMP timestamp请求响应漏洞
80TCPhttpnginx 安全漏洞(CVE-2021-23017)
nginx 缓冲区错误漏洞(CVE-2022-41741)
nginx 越界写入漏洞(CVE-2022-41742)
Nginx 信任管理问题漏洞(CVE-2021-3618)
通过HTTP获取远端WWW服务信息

1.2 nginx漏洞详细信息

然后针对每个漏洞的说明,如nginx漏洞,以下是几个典型的nginx严重漏洞详细信息。

漏洞名称nginx 安全漏洞(CVE-2021-23017)
详细描述Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 nginx存在安全漏洞,该漏洞源于一个离一错误在该漏洞允许远程攻击者可利用该漏洞在目标系统上执行任意代码。 受影响版本:0.6.18-1.20.0
解决办法厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: https://www.nginx.com/blog/updating-nginx-dns-resolver-vulnerability-cve-2021-23017/
威胁分值7.7
危险插件
发现日期2021-05-25
CVE编号CVE-2021-23017
CNNVD编号CNNVD-202105-1581
CNCVE编号CNCVE-202123017
CVSS评分6.8
漏洞名称nginx 缓冲区错误漏洞(CVE-2022-41741)
详细描述此插件基于版本检测,有可能误报,未开启 MP4 模块的nginx属于误报,请忽略该漏洞。 Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 Nginx在 ngx_http_mp4_module 中存在漏洞,这可能允许攻击者激发 worker 进程的崩溃,或者通过使用特制的 mp4 文件致使 worker 进程出现内存泄露。该问题仅影响启用了 ngx_http_mp4_module 模块(默认不启用)并在配置文件中使用 .mp4 指令的 NGINX。此外,只有当攻击者能够触发使用 ngx_http_mp4_module 对特制 mp4 文件的进行处理时,攻击才有可能成功。 https://mailman.nginx.org/pipermail/nginx-announce/2022/RBRRON6PYBJJM2XIAPQBFBVLR4Q6IHRA.html
解决办法缓解措施:只允许受信用户发布音频和视频文件,或者在 NGINX 配置中禁用 MP4 模块,直到升级至修复版本。 厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: http://nginx.org/download/patch.2022.mp4.txt
威胁分值7.8
危险插件
发现日期2022-10-19
CVE编号CVE-2022-41741
CNNVD编号CNNVD-202210-1419
CNCVE编号CNCVE-202241741
漏洞名称nginx 越界写入漏洞(CVE-2022-41742)
详细描述此插件基于版本检测,有可能误报。 Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 Nginx Plus 的模块 ngx_http_hls_module 中存在一个漏洞,该漏洞可能允许本地攻击者破坏 NGINX 的工作进程内存,从而导致其崩溃或在使用特制的音频或视频文件时产生其他潜在的影响。只有当配置文件中使用 hls 指令时,该问题才会影响 Nginx Plus。 此外,只有当攻击者可以触发使用模块 ngx_http_hls_module 对特制音频或视频文件进行 处理时,攻击才有可能成功。一次成功的利用可能允许一个本地攻击者破坏 NGINX 的 worker 进程,导致其中止或其他潜在的影响。 https://mailman.nginx.org/pipermail/nginx-announce/2022/RBRRON6PYBJJM2XIAPQBFBVLR4Q6IHRA.html
解决办法缓解措施:只允许受信用户发布音频和视频文件。或者在 NGINX 配置中禁用 HLS 模块,直到升级至修复版本,可缓解此风险。 厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: http://nginx.org/download/patch.2022.mp4.txt
威胁分值7.1
危险插件
发现日期2022-12-08
CVE编号CVE-2022-41742
CNNVD编号CNNVD-202210-1409
CNCVE编号CNCVE-202241742
漏洞名称Nginx 信任管理问题漏洞(CVE-2021-3618)
详细描述此插件基于nginx版本检测,有可能误报。 Nginx是美国F5公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。 Nginx存在信任管理问题漏洞,该漏洞源于存在 ALPACA(应用层协议内容混淆)攻击,这会破坏TLS的身份验证,并且可能会发生跨协议攻击。
解决办法厂商升级: Nginx ----- 目前厂商已经发布了新版本以修复这个安全问题,请到厂商的主页下载: 下载链接:http://nginx.org/en/download.html
威胁分值7.4
危险插件
发现日期2022-03-23
CVE编号CVE-2021-3618
CNNVD编号CNNVD-202107-216
CNCVE编号CNCVE-20213618
CVSS评分5.8

1.3 安装的软件信息

软件名称版本号
nginx1.18.0

2 问题分析

查看漏洞信息的详细说明,里面有解决办法一项,我们可以看一下解决办法。

漏洞名称解决办法
nginx 安全漏洞(CVE-2021-23017)缓解措施:只允许受信用户发布音频和视频文件,或者在 NGINX 配置中禁用 MP4 模块,直到升级至修复版本。 厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: http://nginx.org/download/patch.2022.mp4.txt
nginx 缓冲区错误漏洞(CVE-2022-41741)缓解措施:只允许受信用户发布音频和视频文件,或者在 NGINX 配置中禁用 MP4 模块,直到升级至修复版本。 厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: http://nginx.org/download/patch.2022.mp4.txt
nginx 越界写入漏洞(CVE-2022-41742)缓解措施:只允许受信用户发布音频和视频文件。或者在 NGINX 配置中禁用 HLS 模块,直到升级至修复版本,可缓解此风险。 厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: http://nginx.org/download/patch.2022.mp4.txt
Nginx 信任管理问题漏洞(CVE-2021-3618)厂商升级: Nginx ----- 目前厂商已经发布了新版本以修复这个安全问题,请到厂商的主页下载: 下载链接:http://nginx.org/en/download.html

上面四个nginx的漏洞,解决办法都有说明通过升级可以修复漏洞。所以我们修复漏洞的方法就是升级nginx。

服务器的nginx版本是1.18,nginx的稳定版本都是偶数,也就是1.20,1.22,1.24,1.26等,通过查阅nginx官网,可以看到nginx偶数版本的最新版本,就是1.26,所以我们选用1.26做为升级后的版本。

在这里插入图片描述

3 Nginx从1.18版本升级到1.26版本的步骤与说明

3.1 查看现有Nginx配置参数

首先,使用以下命令查看当前Nginx的编译配置参数:

/usr/local/nginx/sbin/nginx -V

说明:这一步可以获取当前Nginx版本的编译配置参数,这些参数将在配置新版本时使用,确保新旧版本的配置一致性。

3.2 下载新版本Nginx

从Nginx官网或使用wget下载最新版本的Nginx:

wget http://nginx.org/download/nginx-1.26.0.tar.gz

解压下载的压缩包:

tar -zxvf nginx-1.26.0.tar.gz
cd nginx-1.26.0

说明:这一步下载并解压最新版本的Nginx源码,准备进行配置和编译。

3.3 配置新版本Nginx

在新版本Nginx的根目录下,使用从第1步获取的配置参数进行配置:

./configure <configuration arguments from nginx -V>

说明:这一步通过./configure命令使用旧版本的配置参数对新版本进行配置,以确保新版本Nginx的配置和旧版本一致。

3.4 编译新版本Nginx

执行以下命令进行编译:

make

说明make命令将源码编译为二进制文件。编译过程根据配置参数生成符合需求的Nginx可执行文件。

3.5 备份旧版本Nginx的二进制文件

备份当前正在使用的Nginx二进制文件:

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

说明:这一步是为了安全起见,备份旧版本的Nginx可执行文件。如果新版本出现问题,可以快速恢复旧版本。

3.6 替换Nginx二进制文件

将新编译的Nginx二进制文件拷贝到原来的Nginx二进制文件位置:

cp objs/nginx /usr/local/nginx/sbin/nginx

说明:这一步将新版本的Nginx二进制文件替换旧版本文件,以便使用新版本Nginx。

3.7 测试新版本Nginx

测试新版本Nginx是否正确编译和安装:

/usr/local/nginx/sbin/nginx -V

说明:确认新版本Nginx的编译配置参数是否正确,以确保新版本已经成功安装且配置无误。

3.8 查看Nginx运行情况

查看当前Nginx的运行情况:

ps -ef | grep nginx

说明:检查Nginx进程的运行情况,获取Nginx主进程(master)和工作进程(worker)的进程ID。

3.9 发送信号停止旧版本Nginx接受请求

发送USR2信号给旧版本Nginx的master进程(假设PID为4148):

kill -USR2 4148

说明kill -USR2 <PID>命令会通知Nginx启动新的master进程和worker进程,继续接受新的请求,而旧的master进程和worker进程则完成现有请求后停止工作。

3.10 再次查看Nginx运行情况

确认新的Nginx进程是否已启动:

ps -ef | grep nginx

说明:再次检查Nginx进程的运行情况,确保新的master和worker进程已经启动。

3.11 发送WINCH信号关闭旧的Nginx工作进程

发送WINCH信号关闭旧的Nginx工作进程(假设旧的master进程PID为4118):

kill -WINCH 4118

说明kill -WINCH <PID>命令会通知旧的master进程关闭其管理的worker进程,旧的worker进程将优雅地停止接受新请求,完成处理中的请求后退出。

3.12 关闭旧的Nginx master进程

发送QUIT信号关闭旧的Nginx master进程(假设PID为4148):

kill -QUIT 4148

说明kill -QUIT <PID>命令会通知旧的master进程优雅地关闭,即完成所有正在处理的请求后退出。至此,旧的Nginx版本已完全停止工作,新版本Nginx开始处理所有请求。

结语

升级Nginx是修复nginx漏洞的关键方法,需要仔细规划和执行以确保服务不中断。首先,确保备份旧版本的二进制文件和配置文件,以便在新版本出现问题时能够快速恢复。其次,在配置和编译新版本时,确保使用与旧版本相同的编译参数,保持配置一致性。使用kill命令时,注意正确发送信号以实现平滑过渡,避免服务中断。尤其在发送USR2WINCHQUIT信号时,需确认进程ID正确无误。最后,升级后仔细测试新版本Nginx的运行情况,确保其正常工作并能满足业务需求。通过上述步骤和注意事项,可以有效地完成Nginx的升级任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/40454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

github 设置中文,亲测有效

点进去 安装 选上面第二个&#xff0c;不行再选第一个 GitHub - maboloshi/github-chinese: GitHub 汉化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese)

sideloadly 苹果自签和sidestore手机续签ipa记录

sideloadly 地址&#xff1a;https://sideloadly.io/#download 直接安装对应系统软件&#xff0c;然后吧ipa 拖到里面续签&#xff0c;缺点每7天需要电脑续签 如果续签保留数据需要对应的位置开启 enable file sharing 勾选 和 bundle id 修改 注意的地方需要电脑和手机appi…

气象观测站:时刻注视着天空的变化

在广袤无垠的地球上&#xff0c;气象观测站时刻注视着天空的变化&#xff0c;记录着大自然的脉动。它们是我们理解和应对气候变化、极端天气事件的重要工具。 一、气象观测站的基本构成 气象观测站包括一系列的气象仪器和设备&#xff0c;用于测量和记录各种气象参数。这些参数…

软考《信息系统运行管理员》-2.5信息系统运维管理系统与专用工具

2.5信息系统运维管理系统与专用工具 信息系统运维管理系统功能框架 信息系统运维管理系统是站在运维管理的整体视角&#xff0c;基于运维流程&#xff0c;以服务为导向的业务 服务管理和运维管理支撑平台&#xff0c;提供统一管理门户&#xff0c;最终帮助运维对象实现信息系…

Zabbix 配置SNMP监控

Zabbix SNMP监控介绍 Zabbix提供了强大的SNMP监控功能&#xff0c;可以用于监控网络设备、服务器和其他支持SNMP协议的设备。SNMP&#xff08;Simple Network Management Protocol&#xff0c;简单网络管理协议&#xff09;是一种广泛用于网络管理的协议。它用于监控网络设备&…

CVPR 2024最佳论文分享:打破刚性的超分辨率图像处理GNN

CVPR 2024最佳论文分享&#xff1a;打破刚性的超分辨率图像处理GNN CVPR&#xff08;Conference on Computer Vision and Pattern Recognition&#xff09;是计算机视觉领域最有影响力的会议之一&#xff0c;主要方向包括图像和视频处理、目标检测与识别、三维视觉等。近期&am…

分布式数据库HBase:从零开始了解列式存储

在接触过大量的传统关系型数据库后你可能会有一些新的问题: 无法整理成表格的海量数据该如何储存? 在数据非常稀疏的情况下也必须将数据存储成关系型数据库吗? 除了关系型数据库我们是否还有别的选择以应对Web2.0时代的海量数据? 如果你也曾经想到过这些问题, 那么HBase将是…

C++: 左值引用和右值引用

目录 概念&#xff1a; 理解&#xff1a; 左值引用&#xff0c;右值引用 左值引用能否给右值取别名&#xff1f; 右值引用能否给左值取别名&#xff1f; 引用的意义是什么&#xff1f; 左值和右值对自定义类型有什么区别吗&#xff1f; move的妙用&#xff01; 没有优化…

“proxy_pass“ directive is duplicate

后面发现是nginx.conf里面proxy pass这里有两个&#xff0c;注释其中一个并重新运行即可&#xff01;

基于主流SpringBoot进行JavaWeb开发的学习路线

目录 一、学习路线 &#xff08;1&#xff09;第一部分&#xff08;Web前端开发的技术栈&#xff09; &#xff08;2&#xff09;第二部分&#xff08;Web后端开发&#xff09; 二、学习之后必备的技能 三、学习Web开发的基础与未来的收获 学完这一类知识目标&#xff1a;…

Mybatis-01 原理

一. JDBC式编程 在 jdbc 编程中&#xff0c;我们最常用的是 PreparedStatement 式的编程&#xff0c;我们看下面这个例子&#xff1b; Connection conn null; PreparedStatement ps null; ResultSet rs null;try {// 1. 注册驱动Class.forName("com.mysql.jdbc.Drive…

化身成羊:关于羊的词群探析

在西方的神话故事中&#xff0c;像主神宙斯&#xff0c;或者基督教义中的上帝&#xff0c;通常都有化身成羊的形象。 那为什么会这样呢&#xff1f; 一、什么是神话(myth)&#xff1f; 神话&#xff0c;正式的用词是 mythology&#xff1a; mythology n.神话&#xff1b;神话…

Echarts中的折线图,多个Y轴集中在左侧(在Vue中使用多个Y轴的折线图)

简述&#xff1a;在 ECharts 中&#xff0c;创建一个带有多个 Y 轴的折线图&#xff0c;并且将这些 Y 轴都集中显示在图表的左侧&#xff0c;可以通过合理配置 yAxis 和 series 的属性来实现。简单记录 一. 函数代码 drawCarNumEcs() {// 初始化echarts图表,并绑定到id为"…

网络安全设备——探针

网络安全设备探针是一种专门用于网络安全领域的工具&#xff0c;它通过对网络流量进行监控和分析&#xff0c;帮助发现和防止网络攻击。以下是对网络安全设备探针的详细解释&#xff1a; 定义与功能 定义&#xff1a;网络安全设备探针是一种设备或软件&#xff0c;它通过捕获…

【docker】运行阶段遇到的问题

目录 1、查询docker 下挂载了哪些工具 2、docker中的简单命令 3、实际场景应用&#xff08;redis&#xff09; 目前工作中仅用到了redis,所以没有太多经验可以交流&#xff0c;暂时仅将我目前遇到的进行发布。还请见谅。 1、查询docker 下挂载了哪些工具 docker ps -a 或者…

Vue组件如何“传话”?这里有个小秘诀!

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来vue篇专栏内容:vue-组件通信 目录 Vue组件通信 &#xff08;1&#xff09; props / $emit 1. 父组件向子组件传…

适合职场小白的待办事项管理方法和工具

刚入职场那会儿&#xff0c;我每天都像只无头苍蝇&#xff0c;忙得团团转却效率低下。待办事项像潮水般涌来&#xff0c;会议、报告、客户跟进……每一项都像是悬在头顶的利剑&#xff0c;让我焦虑不堪。我深知&#xff0c;管理好待办事项是职场生存的必修课&#xff0c;但该如…

内衣洗衣机哪个牌子好用?倾力推荐四大热门产品,质量放心

在当今社会&#xff0c;内衣洗衣机已经成为每个家庭必不可少的家电之一。但由于市场上的内衣洗衣机品牌和型号繁多&#xff0c;对于消费者来说&#xff0c;选择一款实用、性价比高的内衣洗衣机是非常重要的。那么&#xff0c;内衣裤洗衣机哪个品牌最好&#xff1f;接下来我将会…

Python | Leetcode Python题解之第206题反转链表

题目&#xff1a; 题解&#xff1a; # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def reverseList(self, head: Optional[ListNode]) -> Optio…

VulnHub靶场之DarkHole_1

1 信息收集 1.1 主机发现 arp-scan -l 主机IP地址为&#xff1a;192.168.1.17 1.2 端口和服务扫描 nmap -sS -sV -A -T5 -p- 192.168.1.17 开放22&#xff0c;80端口 1.3 目录扫描 dirsearch -u 192.168.1.17 2 渗透 2.1 访问端口 2.2 注册账号 暴力破解不现实&#…