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

news2024/10/6 20:28:42

目录

  • 前言
  • 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.coloradmin.cn/o/1893563.html

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

相关文章

java 基础之 反射技术_java 程序src阶段 class对象阶段 run阶段3个阶段

System.out.println(in); } publicClass[] aa1(String name, int[] password){ returnnew Class[]{String.class} ; } privatestatic void aa1(int num){ System.out.println(num“静态方法”); } public static void main(String[] args){ System.out.println(“main”…

css实现一个三角形

实现不用方向的三角形可根据border进行设置。具体代码如下&#xff1a; .triangle-up {width: 0;height: 0;border-top: 10px solid transparent;border-left: 10px solid transparent;border-right: 10px solid transparent;border-bottom: 10px solid black;}.triangle-rig…

RuoYi-Cloudv3.6.4使用教程【2】新增子模块_使用代码生成功能,创建功能页面

目录 准备工作修改代码生成的配置信息ry-cloud中创建表 代码生成使用导入对应表代码生成代码放置菜单 启动新增模块创建数据库创建表创建配置文件_新增的模块新增logback.xml新增banner添加路由启动项目 ✨接新增子模块&#xff0c;让子模块运行起来&#xff0c;还没创建模块的…

【ROS中Cjson文件的作用】

在ROS (Robot Operating System) 中&#xff0c;.json 文件通常用于存储配置信息、数据序列化或者在某些情况下用于网络通信和数据交换。JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于…

git上传文件

git init git add . git commit -m " " git remote add origin 仓库的地址 git push -u origin master 如果出现以下问题 可以用这一句强制上传 git push -f origin master

ValidateAntiForgeryToken、AntiForgeryToken 防止CSRF(跨网站请求伪造)

用途&#xff1a;防止CSRF&#xff08;跨网站请求伪造&#xff09;。 用法&#xff1a;在View->Form表单中: aspx&#xff1a;<%:Html.AntiForgeryToken()%> razor&#xff1a;Html.AntiForgeryToken() 在Controller->Action动作上&#xff1a;[ValidateAntiForge…

部署redis集群哨兵模式

部署redis集群哨兵模式 前言主要功能工作机制 一、虚拟机部署1、安装2、改配置1、redis.conf2、sentinel.conf3、起服务4、停redis-server服务&#xff0c;验证sentinel 3、脚本1. sentinel notification-script2. sentinel reconfig-script3. sentinel client-reconfig-script…

Centos Nginx SSL 配置

Nginx 配置 SSL 1.下载SSL证书 .crt 和 .key文件 2.创建和上传证书 mkdir -p /etc/nginx/cert 上传证书3.nginx.conf配置 # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Docum…

策略模式入门:基本概念与应用

目录 策略模式策略模式结构策略模式应用场景策略模式优缺点练手题目题目描述输入描述输出描述题解 策略模式 策略模式&#xff0c;又称政策模式&#xff0c;是一种行为型设计模式&#xff0c;它能让你定义一系列算法&#xff0c;并将每种算法分别放入独立的类中&#xff0c;以…

【开发笔记】如何用正则匹配出百度云盘分享链接的提取码和链接?

用Wordpress做下载站&#xff0c;需要复制网盘链接到后台的文章发布自定义字段&#xff0c;然后我不想每次手动拆分链接和提取码分别到两个input&#xff0c;就想在后台粘帖时候实现拆分它。 $link 链接&#xff1a;https://pan.baidu.com/s/16y9Z5mTSE6gewStGDNndNQ 提取码…

万字长文MySQL Binlog 详细指南

目录 第一阶段 MySQL Binlog 基础用法1. Binlog基本概念1.1 什么是Binlog1.2 Binlog的作用1.3 Binlog格式 2. 配置和管理Binlog2.1 开启Binlog2.2 设置Binlog文件大小和保留时间2.3 查看Binlog状态 3. Binlog的实际应用3.1 数据恢复3.2 主从复制3.3 审计 4. Binlog工具使用4.1 …

数据库表导出到excel:前置知识1 ALL_TAB_COLS

ALL_TAB_COLS 当前用户可访问的表、视图和群集的列的相关信息 其中几个字段: OWNER&#xff1a;表&#xff0c;视图及群集的Owner   TABLE_NAME&#xff1a; 表&#xff0c;视图及聚簇的名称   COLUMN_NAME&#xff1a; 字段名   DATA_TYPE &#xff1a;字段的数据类型…

yaml格式转换成json格式

yaml格式转换成json格式 ①postman生成的结果是yaml格式 ps&#xff1a;postman输出的格式是没有自动换行的&#xff0c;需要将内容换行 ②复制到Python的脚本跑一趟&#xff1a;自动换行并去掉/n&#xff1b; str " "//(postman输出的内容&#xff09; print(st…

Mybatis-03 MetaObject学习

一. 反射调用 如果我们需要给 bean 对象的属性设值&#xff0c;除了我们常用的构造调用方法之外&#xff0c;还可以用反射&#xff1b; 下面我们举一个例子&#xff1b; public static void main(String[] args) throws Exception {Class<Bean01> bean01Clazz Class.…

FreeRTOS之队列上锁和解锁(详解)

这篇文章将记录我学习实时操作系统FreeRTOS的队列上锁和解锁的知识&#xff0c;在此分享给大家&#xff0c;希望我的分享能给你带来不一样的收获&#xff01; 目录 一、简介 二、队列上锁函数prvLockQueue&#xff08;&#xff09; 1、函数初探 2、应用示例 三、队列解锁函…

【代码随想录】【算法训练营】【第55天】 [42]接雨水 [84]柱状图中最大的矩形

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 55&#xff0c;又是一个周一&#xff0c;不能再坚持~ 题目详情 [42] 接雨水 题目描述 42 接雨水 解题思路 前提&#xff1a;雨水形成的情况是凹的, 需要前中后3个元素&#xff0c;计算该元…

Modbus协议转Profinet协议网关模块连智能仪表与PLC通讯

一、现场需求&#xff1a;PLC作为控制器&#xff0c;仪表设备做为执行设备&#xff0c;执行设备能够实时响应PLC传来的指令&#xff0c;并且向PLC回馈数据&#xff0c;从而达到PLC对仪表设备进行控制和监测&#xff0c;实现对生产过程的精准控制。 二、解决方案&#xff1a;通过…

机器学习与AI大数据的融合:开启智能新时代

在当今这个信息爆炸的时代&#xff0c;大数据和人工智能&#xff08;AI&#xff09;已经成为推动社会进步的强大引擎。作为AI核心技术之一的机器学习&#xff08;Machine Learning, ML&#xff09;&#xff0c;与大数据的深度融合正引领着一场前所未有的科技革命&#xff0c;不…

Java判断范围型的数据是否存在重叠(数值类型、日期类型)

为什么写这么一篇文章呢&#xff1f; 遇到了个问题&#xff0c;同一天可以输入多个时间段&#xff0c;但是每个时间段的时间不能出现重叠。 纳尼&#xff0c;这不就是判断数据返回是否有重叠的变种嘛~ 简单&#xff0c;开搞 数字范围是否重叠判断 这里以int类型为例了&…

高德地图轨迹回放并提示具体信息

先上效果图 到达某地点后显示提示语:比如:12:56分驶入康庄大道、左转驶入xx大道等 <!doctype html> <html> <head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta n…