通過升級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.pswp.cn/diannao/40454.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40454.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40454.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

github 設置中文,親測有效

點進去 安裝 選上面第二個&#xff0c;不行再選第一個 GitHub - maboloshi/github-chinese: GitHub 漢化插件&#xff0c;GitHub 中文化界面。 (GitHub Translation To Chinese)

常見網絡攻擊方式及防御方法

1. DDOS攻擊&#xff08;分布式拒絕服務攻擊&#xff09; 概念&#xff1a;借助于C/S&#xff08;客戶端/服務器&#xff09;技術&#xff0c;將多個計算機聯合起來作為攻擊平臺&#xff0c;對一個或多個目標發動DDOS攻擊&#xff0c;從而成倍地提高拒絕服務攻擊的威力。防護方…

springboot 配置加密,jasypt加解密命令

位置&#xff1a;Maven倉庫中\org\jasypt\jasypt\1.9.3 java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input123456 passwordmysalt algorithmPBEWithMD5andDES ----ENVIRONMENT----------------- Runtime: Oracle Corporation Java HotSpot?…

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;最終幫助運維對象實現信息系…

【AI原理解析】-AI native模型微調

目錄 一、模型微調的定義與重要性 二、模型微調的步驟 三、模型微調的優勢與挑戰 四、模型微調的應用場景 五、模型微調的未來發展方向 一、模型微調的定義與重要性 定義&#xff1a;模型微調是指在預訓練模型的基礎上&#xff0c;使用特定任務的數據對模型進行再訓練&am…

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; 沒有優化…

LLMs之CriticGPT:CriticGPT的簡介、安裝和使用方法、案例應用之詳細攻略

LLMs之CriticGPT&#xff1a;CriticGPT的簡介、安裝和使用方法、案例應用之詳細攻略 目錄 CriticGPT的簡介 1、簡介 2、CriticGPT的方法 2.1、CriticGPT的訓練方法 2.2、CriticGPT的批評生成方法 3、局限性 4、后續步驟 CriticGPT的安裝和使用方法 CriticGPT的案例應用…

“proxy_pass“ directive is duplicate

后面發現是nginx.conf里面proxy pass這里有兩個&#xff0c;注釋其中一個并重新運行即可&#xff01;

AI并不是開發者的敵人,而是幫助他們實現更高效工作的得力助手。

AI是在幫助開發者還是取代他們&#xff1f; 在軟件開發領域&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;正在改變開發者的工作方式。無論是代碼生成、錯誤檢測還是自動化測試&#xff0c;AI工具正在成為開發者的得力助手。然而&#xff0c;這也引發了對開發者職業前…

基于主流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…

Sping源碼總覽

源碼地址&#xff1a;https://github.com/spring-projects/spring-framework 倉庫地址&#xff1a;https://gitcode.net/qq_42665745/spring/-/tree/master 文章目錄如下&#xff1a; 實現一個簡單的Bean容器Bean 的定義、注冊、獲取Bean有參構造實例化Bean屬性注入資源加載器…

C++11使用std::future和std::promise實現線程同步和異步通信

std::future 和 std::promise 是 C11 引入的標準庫特性&#xff0c;用于實現線程間的異步通信和同步。它們提供了一種機制&#xff0c;使一個線程能夠生成一個值或異常&#xff0c;并讓另一個線程獲取這個值或異常。 (線程A中設置結果) std::promise 用于設置異步操作的結果(線…

【Jupyter Notebook與Git完美融合】在Notebook中駕馭版本控制的藝術

標題&#xff1a;【Jupyter Notebook與Git完美融合】在Notebook中駕馭版本控制的藝術 Jupyter Notebook是一個流行的開源Web應用程序&#xff0c;允許用戶創建和共享包含實時代碼、方程、可視化和解釋性文本的文檔。而Git是一個廣泛使用的分布式版本控制系統&#xff0c;用于跟…

關于C#在WPF中如何使用“抽屜”控件

關于C#在WPF中如何使用“抽屜”控件 1.前提準備2.XAML代碼3.對應的C#代碼4.顯示效果1.前提準備 需要引用MaterialDesign控件庫,關于如何引用,請參照文章——關于C#如何引用MaterialDesign控件庫 2.XAML代碼 <Window x:Class="MaterialDesign_Test.MainWindow"…