Nginx安全加固,版本隱藏及HTTP請求頭修改方法

1 隱藏nginx版本號

1.1 引言

nginx作為目前較為流行的http server軟件,其相關的安全漏洞也非常多,攻擊者可以根據我們的nginx版本來了解到相關的漏洞從而針對性的進行攻擊。

圖片

通過新版本的nginx都會修復一些老版本的已知漏洞,但有時候我們生產環境不好直接進行nginx版本升級,因此我們可以將nginx版本相關信息隱藏,來降低被攻擊的風險。

1.2 server_tokens

server_tokens是nginx在ngx_http_core_module中提供的一個功能,可以用來隱藏nginx版本號信息,官方文檔如下。

http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens

我們可以給nginx新增一個安全相關的配置文件security.conf,文件內新增"server_tokens off;",再reload一下nginx服務即可。

[root@elk ~]# cat /etc/nginx/conf.d/security.conf
server_tokens off; ?##隱藏nginx版本信息

圖片

2 隱藏nginx server頭信息

2.1 介紹

上面的場景,我們只是隱藏了nginx的版本信息,在某些情況下,我們也希望能將http請求頭中的"Server:nginx"也隱藏掉,這個就需要用到headers-more-nginx-module模塊,模塊官網如下。

https://github.com/openresty/headers-more-nginx-module

同時我們需要用到nginx的動態添加模塊功能,該功能在nginx 1.9.11版本后支持

https://www.nginx.com/blog/compiling-dynamic-modules-nginx-plus/

圖片

2.2 headers模塊編譯

下載對應版本的nginx源碼,和headers-more-nginx-module模塊源碼,并進行編譯。nginx源碼下載地址如下

http://nginx.org/download/

[root@elk ~]# wget http://nginx.org/download/nginx-1.20.1.tar.gz ##下載nginx源碼
[root@elk ~]# wget https://github.com/openresty/headers-more-nginx-module/archive/refs/tags/v0.34.tar.gz ##下載headers模塊源碼
[root@elk ~]# tar xf nginx-1.20.1.tar.gz
[root@elk ~]# tar xf v0.34.tar.gz
[root@elk ~]# ls
headers-more-nginx-module-0.34 nginx-1.20.1 nginx-1.20.1.tar.gz v0.34.tar.gz
[root@elk nginx-1.20.1]# cd /root/nginx-1.20.1/
[root@elk nginx-1.20.1]# /root/nginx-1.20.1/configure --with-compat --add-dynamic-module=/root/headers-more-nginx-module-0.34/ ##--with-compat參數用來兼容動態模塊,--add-dynamic-module指定動態模塊源碼所在位置。

開始編譯

圖片

確認編譯結果

[root@elk nginx-1.20.1]# echo $?

圖片

編譯模塊

[root@elk nginx-1.20.1]# make modules

圖片

編譯完成后,會在nginx源碼的objs目錄,生成我們編譯好的動態模塊文件

圖片

2.3 使用模塊,驗證nginx http請求頭是否被隱藏

nginx目錄下新建目錄,用于存放模塊

[root@elk nginx-1.20.1]# mkdir /etc/nginx/conf.d/modules
[root@elk nginx-1.20.1]# cp /root/nginx-1.20.1/objs/ngx_http_headers_more_filter_module.so /etc/nginx/conf.d/modules/

修改nginx配置文件,添加以下兩部分內容。主配置中添加 load_module /etc/nginx/conf.d/modules/ngx_http_headers_more_filter_module.so; 一行,server容器中,添加 more_set_headers "Server: singless"; 一行,用來修改http請求頭信息。

圖片

圖片

圖片

?

圖片

重載nginx服務,再次檢查可以發現server頭已經被修改了

[root@elk ~]# systemctl reload nginx

圖片

?

圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40303.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40303.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40303.shtml

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

相關文章

二刷LeetCode--148. 排序鏈表(C++版本),必會題,思維題

思路,本題其實考察了兩個點:合并鏈表、鏈表切分。首先從1開始,將鏈表切成一段一段,因為需要使用歸并,所以下一次的切分長度應該是當前切分長度的二倍,每次切分,我們拿出兩段,然后將第…

虛擬機與Java虛擬機介紹

1、虛擬機 所謂虛擬機(Virtual Machine),就是一臺虛擬的計算機。它是一款軟件,用來執行一系列虛擬計算機指令。大體上,虛擬機可以分為系統虛擬機和程序虛擬機。大名鼎鼎的Visual Box,VMware就屬于 系統虛…

提示丟失vcomp140.dll怎么辦?如何快速修復vcomp140.dll丟失問題

最近我遇到了一個程序啟動失敗的問題,錯誤提示顯示缺少了vcomp140.dll文件。經過一番研究和嘗試,我終于成功修復了這個問題。在這里,我將分享一下我的修復方法。 目錄 vcomp140.dll是什么? 如何快速修復呢? vcomp140…

sCrypt編程馬拉松于8月13日在復旦大學成功舉辦

繼6月在英國Exeter大學成功舉辦了為期一周的區塊鏈編程馬拉松后,美國sCrypt公司創始人兼CEO劉曉暉博士帶領核心團隊成員王一強、鄭宏鋒、周全,于8月13日在復旦大學再次成功舉辦了一場全新的sCrypt編程馬拉松。 本次活動由上海可一澈科技有限公司與復旦大…

C++筆記之花括號和圓括號初始化區別,列表初始化和初始化列表區別

C筆記之花括號和圓括號初始化區別,列表初始化和初始化列表區別 code review! 文章目錄 C筆記之花括號和圓括號初始化區別,列表初始化和初始化列表區別1.花括號{}進行初始化和圓括號()進行初始化2.列表初始化(list initialization&#xff0…

Vitis高層次綜合學習——FPGA

高層次綜合 什么是高層次綜合?就是使用高級語言(如C/C)來編寫FPGA算法程序。 在高層次綜合上并不需要制定微架構決策,如創建狀態機、數據路徑、寄存器流水線等。這些細節可以留給 HLS 工具,通過提供輸入約束&#xff…

專訪阿里云席明賢,視頻云如何運用大模型與小模型來破繭升級2.0

不久前,LiveVideoStack與阿里云視頻云負責人席明賢(花名右賢)展開一場深度的對話,一個是圈內專業的社區媒體,一個是20年的IT老兵,雙方有交集、有碰撞、有火花。 面對風云變幻的內外環境,阿里云…

未來數字銀行的樣子

對銀行長期發展來講,這意味著將關閉和減少 低效率的實體分行,加速向數字化發展。實現成本節省和 IT 預算提效的需求,將為數字柜臺和銀行代理點創造新的機遇。 一個嶄新的世界:未來數字銀行趨勢圖 現在是銀行迎頭趕上并為客戶提供超…

拿來即用,自己封裝的 axios

文章目錄 一、需求二、分析1. 安裝axios2. 新建一個 ts 文件,封裝 axios3. store 存放 token 信息4. 使用5. 文件 type.js 一、需求 在日常開發中,我們會經常用到 axios ,那么如何在自己的項目中自己封裝 axios 二、分析 1. 安裝axios np…

jenkins使用

安裝插件 maven publish over ssh publish over ssh 會將打包后的jar包,通過ssh推送到指定的服務器上,,在jenkins中設置,推送后腳本,實現自動部署jar包,, 裝了這個插件之后,可以在項…

非計算機科班背景者順利轉碼計算機領域:策略與前景展望

方向一:如何規劃才能實現轉碼? 對于非計算機科班背景的人想要順利轉碼進入計算機領域,規劃是至關重要的。以下是一些建議,可以幫助你在轉碼過程中更加順利: 自我評估和目標設定: 首先,你需要明…

Weak Session IDs (弱會話)

Weak Session IDs (弱會話) 當用戶登錄后,在服務器就會創建一個會話(session),叫做會話控制,接著訪問頁面的時候就不用登錄,只需要攜帶Sesion去訪問。 sessionID作為特定用戶訪問站點所需要的唯一內容。如果能夠計算或輕易猜到該…

深入理解 Flutter 圖片加載原理

作者:京東零售 徐宏偉 來源:京東云開發者社區 前言 隨著Flutter穩定版本逐步迭代更新,京東APP內部的Flutter業務也日益增多,Flutter開發為我們提供了高效的開發環境、優秀的跨平臺適配、豐富的功能組件及動畫、接近原生的交互體驗…

用對角線去遍歷矩陣

聲明 該系列文章僅僅展示個人的解題思路和分析過程,并非一定是優質題解,重要的是通過分析和解決問題能讓我們逐漸熟練和成長,從新手到大佬離不開一個磨練的過程,加油! 原題鏈接 用對角線遍歷矩陣https://leetcode.c…

wsl2(debian)安裝python的不同版本例如3.8

要在Debian上安裝 Python 3.8,可以按照以下步驟操作: 1.確保你的 Debian 系統已經更新到最新版本,可以使用以下命令更新: sudo apt update sudo apt upgrade2.安裝 Python 3.8 的依賴項,以及構建 Python 時需要的工具…

django中實現事務的幾種方式

1.實現事務的三種方式 1.1 全局開啟事務---> 全局開啟事務,綁定的是http請求響應整個過程 DATABASES {default: {#全局開啟事務,綁定的是http請求響應整個過程ATOMIC_REQUESTS: True, }} from django.db import transaction# 局部禁用事務 transac…

數據結構——棧(C語言)

需求:無 棧的概念: 棧:一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行數據插入和刪除操作的一端稱為棧頂,另一端為棧底。棧中的數據元素遵守后進先出(LIFO)原則。壓棧&…

GPIO 配置 和 PINCTRL有啥區別

GPIO(通用輸入/輸出)和 PINCTRL(引腳控制器)是在嵌入式系統中用于管理和控制硬件引腳的關鍵概念。它們在硬件層面上起著不同的作用。 GPIO配置: GPIO 是一種通用的硬件接口,用于控制和讀取數字信號。每個 …

自動駕駛——駛向未來的革命性技術

自動駕駛——駛向未來的革命性技術 自動駕駛的組件自動駕駛的優勢自動駕駛的應用自動駕駛的未來中國的自動駕駛 自動駕駛是一種技術,它允許車輛在沒有人類駕駛員的情況下自主地進行行駛。它利用各種傳感器、計算機視覺、人工智能和機器學習算法來感知和理解周圍環境…

.net連接mysql,提示找不到請求的 .Net Framework Data Provider。可能沒有安裝

開發完成的.net程序需要連接mysql數據庫,在個人電腦上運行沒問題,別人運行時提示“提示找不到請求的 .Net Framework Data Provider。可能沒有安裝”。經過查詢,安裝Connector/NET 8.1.0,下載地址如下所示: https://d…