最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx安全防護(hù)的多種方法

 更新時(shí)間:2025年07月15日 10:28:01   作者:霖檬ing  
在生產(chǎn)環(huán)境中,需要隱藏Nginx的版本號(hào),以避免泄漏Nginx的版本,使攻擊者不能針對(duì)特定版本進(jìn)行攻擊,下面就來(lái)介紹一下Nginx安全防護(hù)的方法,感興趣的可以了解一下

核心安全配置

1.編譯安裝 Nginx

(1)安裝支持軟件

Nginx 的配置及運(yùn)行需要 pcre、zlib 等軟件包的支持,因此應(yīng)預(yù)先安裝這些軟件的開(kāi)發(fā)包(devel),以便提供相應(yīng)的庫(kù)和頭文件,確保 Nginx 的安裝順利完成。

[root@localhost “]# dnf install -y gcc make pcre-devel zlib-developenssl-devel perl-ExtUtils-MakeMaker git wget tar

(2)創(chuàng)建運(yùn)行用戶(hù)、組和日志目錄

[root@localhost]# useradd -M-s /sbin/nologin nginx
[root@localhost# mkdir -p /var/log/nginx
[root@localhost]#chown -R nginx:nginx /var/log/nginx

(3)編譯安裝 Nginx

[root@localhost ]# tar zxf nginx-l.26.3. tar.gz
[root@localhost “]# cd nginx-1.26.3
[root@localhost nginx-l.26.3]#./configure--prefix=/usr/local/nginx
--pid-path=/var/run/nginx.pid
--user=nginx
--group=nginx
--with-http_ssl module
--with-http v2 module
--with-http realip module
--with-http_stub status module\
#狀態(tài)統(tǒng)計(jì)模塊
with-http_gzip static module
--with-pcre 
--with-stream
[root@localhost nginx-l.26.3]# make && make install

為主程序 nginx 創(chuàng)建鏈接文件

[root@localhost nginx-1.26.3]# 1n-s /usr/local/nginx/sbin/nginx/usr/local/sbin/

(4)添加Nginx系統(tǒng)服務(wù)

[root@localhost]# vim /lib/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/sbin/nginx-t
ExecStart=/usr/local/sbin/nginx
ExecReload=/usr/local/sbin/nginx-s reload
ExecStop=/bin/ki11-S QUIT $MAINPID
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
User=root
Group=root

[Install]
WantedBy=multi-user.target
[root@localhost ~]#systemctl daemon-reload
[root@localhost ~]#systemctl start nginx
[root@localhost ~]#systemctl enable nginx

2.隱藏版本號(hào)

在生產(chǎn)環(huán)境中,需要隱藏 Nginx 的版本號(hào),以避免泄漏 Nginx 的版本,使攻擊者不能針對(duì)特定版本進(jìn)行攻擊。在隱藏版本號(hào)之前,可以使用 Fiddler 工具抓取數(shù)據(jù)包,查看Nginx 版本,也可以在 0penEuler 中使用命令 curl -Ihttp://192.168.10.202/查看:

[root@localhost ~]# curl -l 192.168.10.202
HTTP/1.1 200 OK
Server:nginx/1.26.3//版本號(hào)
...    ...    //省略部分內(nèi)容
#修改配置文件
[root@localhost ~]#vim /usr/local/nginx/conf/nginx.conf
http {
    include    mime.types;
    default_type    application/octet-stream;
    server_tokens off;    //隱藏版本號(hào)
...    ...    //省略部分內(nèi)容
[root@localhost ~]#nginx -t
[root@localhost ~]#nginx -s reload
[root@localhost ~]#curl -I 192.168.10.202
HTTP/1.1 200 OK
Server:nginx    //版本號(hào)被隱藏
...    ...    //省略部分內(nèi)容

3.限制危險(xiǎn)請(qǐng)求方法

不安全的請(qǐng)求方式,是潛在的安全風(fēng)險(xiǎn),TRACE(易引發(fā)XST攻擊)、PUT/DELETE(文件修改風(fēng)險(xiǎn))、CONNECT(代理濫用),通過(guò)正則表達(dá)式匹配請(qǐng)求方法,非白名單方法返回 444(無(wú)響應(yīng)關(guān)閉連接)

1.修改配置文件
[root@localhost ~]#vim /usr/local/nginx/conf/nginx.conf
server {
...    ...
if ($request_method !~"(GET HEAD|POST)$ )    {
    return 444;
    }
...    ...
}
2.驗(yàn)證測(cè)試請(qǐng)求 
測(cè)試 PUT/DELETE 請(qǐng)求
[root@localhost ~]#curl -XPUT -I 192.168.10.202
curl:(52)Empty reply from server
查看 access. log
192.168.10.202--[11/Mar/2025:18:30:46 +0800]"PUT / HTTP/1.1" 444 0 "-" "curl/8.4.0"

PS:注意測(cè)試 TRACE 和 CONNECT 方法時(shí),狀態(tài)碼不是 444。原因如下:

  1. CONNECT 請(qǐng)求的目標(biāo)不是代理服務(wù)器時(shí),服務(wù)器必須返回400Bad Request,Nginx 核心層在請(qǐng)求解析階段直接攔截,根本不進(jìn)入后續(xù)的 location 處理流程
  2. 現(xiàn)代 Nginx默認(rèn)禁用 TRACE 方法,在 ngx http core module 階段直接返回 405 Not Allowed

4.請(qǐng)求限制(CC攻擊防御)

CC 攻擊(Challenge Collapsar 攻擊)是一種常見(jiàn)的網(wǎng)絡(luò)攻擊方式,通過(guò)大量合法或偽造的小流量請(qǐng)求來(lái)耗盡服務(wù)器資源,導(dǎo)致正常用戶(hù)無(wú)法訪問(wèn)網(wǎng)站。要在 Nginx 中有效防止 CC 攻擊,可以采用多種策略和方法。

CC攻擊,也稱(chēng)為連接數(shù)攻擊或請(qǐng)求速率限制攻擊,通過(guò)模擬大量用戶(hù)訪問(wèn)來(lái)消耗服務(wù)器資源,從而使得正常用戶(hù)無(wú)法正常訪問(wèn)網(wǎng)站。為了防止此類(lèi)攻擊,可以使用 Nginx 提供的模塊來(lái)限制請(qǐng)求速率和并發(fā)連接數(shù)

(1)使用 Nginx的 limit req 模塊限制請(qǐng)求速率

編輯配置文件
[root@localhost ~]#vim /usr/local/nginx/conf/nginx.conf
http {
    # 定義限制區(qū)(10MB 內(nèi)存/每秒 10 請(qǐng)求)
    limit_req_zone $binary_remote_addr zone=req_limit:l0m rate-10r/s;

    # 其他全局配置...

    server {
        location / {
            root html;
            index index.html index.php;
            limit_reg_zone=req_limit burst=20 nodelay;
            }
...    ...
    }
}

關(guān)鍵參數(shù)說(shuō)明:

  • limit_req_zone:定義共享內(nèi)存區(qū)
  • $binary_remote_addr:是一個(gè)內(nèi)置變量,用于表示客戶(hù)端IP地址的二進(jìn)制格式
  • zone=req_limit:10m 創(chuàng)建名為req_limit的共享內(nèi)存區(qū),大小10M,用來(lái)存儲(chǔ)客戶(hù)端IP
  •  rate=10r/s:限制并發(fā)數(shù),每個(gè)IP每秒可以發(fā)起的請(qǐng)求次數(shù)
  • limit——req:實(shí)現(xiàn)速率限制
  • zone=req_limit:綁定到預(yù)定義的共享內(nèi)存區(qū)
  • burst=20:類(lèi)似于等候區(qū),超出并發(fā)數(shù)的請(qǐng)求會(huì)等候區(qū),等候區(qū)占滿(mǎn)后,多余的請(qǐng)求會(huì)立刻返回503
  • nodelay:立即處理突發(fā)請(qǐng)求而不延遲,相當(dāng)于立即處理等候區(qū)的請(qǐng)求,多余的請(qǐng)求會(huì)立刻返回503

(2)壓力測(cè)試驗(yàn)證

安裝 ab 測(cè)試工具
ApacheBench(簡(jiǎn)稱(chēng) ab)是 Apache HTTP 服務(wù)器自帶的一個(gè)輕量級(jí)、易用的HTTP服務(wù)器性能測(cè)試工具。它主要用于評(píng)估服務(wù)器在并發(fā)訪問(wèn)下的性能表現(xiàn),包括響應(yīng)時(shí)間、吞吐量等關(guān)鍵指標(biāo)。

[root@localhost ~]#dnf install httpd-tools -y

發(fā)起測(cè)試請(qǐng)求
共發(fā)起 300 個(gè)請(qǐng)求,每次發(fā)起 30 個(gè)請(qǐng)求
[root@localhost ~]#ab -n 300 -c 30 http://192.168.10.202/
查看 access.log 發(fā)現(xiàn)大量請(qǐng)求日志狀態(tài)碼 503
[root@localhost ~]#tail -300/usr/local/nginx/logs/access.log|grep -c 503
279

5.防盜鏈

防盜鏈(Hotlink Protection)是一種防止其他網(wǎng)站直接鏈接到你的服務(wù)器資源(如圖片、視頻、文件等)的技術(shù)。通過(guò)防盜鏈設(shè)置,可以避免他人盜用你的帶寬和服務(wù)器資源,提升安全性和資源利用率。

‌防盜鏈原理‌

防盜鏈的核心是檢查請(qǐng)求的 Referer 頭(HTTP 請(qǐng)求頭字段),判斷請(qǐng)求來(lái)源是否合法:

  • Referer 頭表示當(dāng)前請(qǐng)求的來(lái)源頁(yè)面 URL。
  • 如果請(qǐng)求來(lái)自非法域名(如其他網(wǎng)站),Nginx 可以拒絕訪問(wèn)或返回錯(cuò)誤。

‌Nginx 防盜鏈配置‌

Nginx 通過(guò) valid_referers 指令實(shí)現(xiàn)防盜鏈,語(yǔ)法如下:

valid_referers none | blocked | server_names | string ...; 
  • ‌none‌:允許沒(méi)有 Referer 頭的請(qǐng)求(如直接訪問(wèn))。
  • ‌blocked‌:允許 Referer 頭被防火墻或代理刪改的請(qǐng)求。
  • ‌server_names‌:允許指定的域名或服務(wù)器名。
  • ‌string‌:自定義允許的域名或正則表達(dá)式。

‌配置示例‌

以下是常見(jiàn)的防盜鏈配置場(chǎng)景:

1. ‌基礎(chǔ)防盜鏈配置

location ~* \.(jpg|jpeg|png|gif|mp4)$ {
 valid_referers none blocked example.com *.example.net;
 if ($invalid_referer) {
         return 403;
         # 或重定向到警告圖片
         # rewrite ^ /anti-hotlink.jpg;
 } 
} 
  • ‌作用‌:保護(hù)圖片和視頻文件。
  • ‌邏輯‌:僅允許來(lái)自 example.com、*.example.net 的請(qǐng)求,或沒(méi)有 Referer 的請(qǐng)求(如瀏覽器直接訪問(wèn))。
  • ‌阻止行為‌:非法請(qǐng)求返回 403 錯(cuò)誤碼。

2. ‌允許空 Referer(直接訪問(wèn))

valid_referers none blocked example.com *.example.net; 
  • none:允許直接輸入 URL 或本地文件打開(kāi)的資源請(qǐng)求。
  • blocked:允許 Referer 被防火墻修改的請(qǐng)求。

3. ‌高級(jí)配置(安全鏈)

通過(guò)生成加密鏈接防止盜鏈(需配合程序生成臨時(shí) URL):

location /protected/ {
 secure_link $arg_md5,$arg_expires;
 secure_link_md5 "$secure_link_expires$uri$remote_addr secret";

 if ($secure_link = "") {
         return 403;
 }
 if ($secure_link = "0") {
         return 410; # 鏈接過(guò)期
 } 
} 

‌注意事項(xiàng)‌

‌Referer 的局限性‌

  • Referer 可能被偽造(需結(jié)合其他方法如 Token 驗(yàn)證)。
  • 部分瀏覽器或隱私設(shè)置可能不發(fā)送 Referer。

‌靜態(tài)資源與動(dòng)態(tài)資源‌

  • 靜態(tài)資源(如圖片)通常通過(guò) location 匹配文件擴(kuò)展名。
  • 動(dòng)態(tài)資源(如 API)可通過(guò)校驗(yàn) Token 或簽名。

‌日志記錄‌
可記錄非法請(qǐng)求用于分析:

log_format hotlink '$time_iso8601 $invalid_referer $http_referer'; 
access_log /var/log/nginx/hotlink.log hotlink;

案例

(1)修改 Windows 的C:\Windows\System32\drivers\etc\hosts 文件,設(shè)置域
名和 IP 映射關(guān)系

192.168.10.202 www. aaa.com
192.168.10.201 www.bbb.com

(2)修改兩臺(tái)Cent0s 的 hosts 文件,設(shè)置域名和 IP 映射關(guān)系

192.168.10.202 www.aaa.com
192.168.10.201 www.bbb.com

(3)把圖片 1ogo.jpg 放到源主機(jī)(www.aaa.com)的工作目錄下

[root@localhost ~]#ls /usr/local/nginx/html
index.html kgc.png

(4)編輯原網(wǎng)站首頁(yè)文件

[root@localhost ~]#vim /usr/local/nginx/html/index.html
<html>
    <body>
        <hl>aaa It work!
                <img src="kgc.png”/〉 //網(wǎng)頁(yè)中顯示圖片的代碼
        </h1>
    </body>
</htm1>

(5)測(cè)試訪問(wèn)源網(wǎng)站 

(6)編輯盜鏈網(wǎng)站首頁(yè)文件

[root@localhost ~]#vim /usr/local/nginx/html/index.html
<html>
    <body>
        <hl>bbb It work!
            <img src="http://www.aaa.com/kgc.png”/> //網(wǎng)頁(yè)中顯示圖片
        </h1>
    </body>
</htm1>

(7)測(cè)試訪問(wèn)盜鏈網(wǎng)站(盜鏈成功)

(8)配置Nginx防盜鏈

[root@localhost #vim /usr/local/nginx/conf/nginx.conf
location *.(gifljpg jpeg pnglbmp|swf|flv mp4 webplico)$ {
    root html;
    valid referers aaa.com *.aaa.com;

    if($invalid referer) {
        return 403;
    }
[root@localhost ~]#nginx -t
[root@localhost ~]#nginx -s reload
  • ~*\.(jpg|gif|swf)$:這段正則表達(dá)式表示匹配不區(qū)分大小寫(xiě),以.jpg或. gif 或.swf 結(jié)尾的文件;
  • Valid referers:設(shè)置信任的網(wǎng)站,可以正常使用圖片;
  • 后面的網(wǎng)址或者域名:referer 中包含相關(guān)字符串的網(wǎng)址;
  • If 語(yǔ)句:如果鏈接的來(lái)源域名不在 valid referers 所列出的列表中,$invalid referer 為1,則執(zhí)行后面的操作,即進(jìn)行重寫(xiě)或返回 403 頁(yè)面。

(9)測(cè)試訪問(wèn)盜鏈網(wǎng)站(盜鏈?zhǔn)。?/p>

到此這篇關(guān)于Nginx安全防護(hù)的多種方法的文章就介紹到這了,更多相關(guān)Nginx安全防護(hù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Nginx反向代理功能解決WEB網(wǎng)站80端口被封的解決方法

    利用Nginx反向代理功能解決WEB網(wǎng)站80端口被封的解決方法

    大陸的網(wǎng)絡(luò)環(huán)境,都在天朝神獸的制度下讓我等小P民悲劇一片;動(dòng)不動(dòng)就拔網(wǎng)線、封機(jī)房;現(xiàn)在更厲害的一招,從網(wǎng)關(guān)封殺你的80端口,一旦被封,網(wǎng)站域名就無(wú)法訪問(wèn)
    2012-08-08
  • Nginx基礎(chǔ)location語(yǔ)法及功能配置實(shí)例

    Nginx基礎(chǔ)location語(yǔ)法及功能配置實(shí)例

    這篇文章主要為大家介紹了Nginx基礎(chǔ)location語(yǔ)法及功能以及配置實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Nginx部署React項(xiàng)目時(shí)重定向循環(huán)問(wèn)題的解決方案

    Nginx部署React項(xiàng)目時(shí)重定向循環(huán)問(wèn)題的解決方案

    Nginx在處理React項(xiàng)目請(qǐng)求時(shí)出現(xiàn)重定向循環(huán),通常是由于`try_files`配置錯(cuò)誤或`root`路徑配置不當(dāng)導(dǎo)致的,本文給大家詳細(xì)介紹了相關(guān)的解決方法,需要的朋友可以參考下
    2025-05-05
  • 解讀1g內(nèi)存的電腦nginx能支持多少并發(fā)

    解讀1g內(nèi)存的電腦nginx能支持多少并發(fā)

    這篇文章主要介紹了1g內(nèi)存的電腦nginx能支持多少并發(fā)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • nginx反向代理進(jìn)行yum配置的步驟詳解

    nginx反向代理進(jìn)行yum配置的步驟詳解

    這篇文章主要給大家介紹了關(guān)于nginx反向代理進(jìn)行yum配置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • 在Nginx中配置image filter模塊來(lái)實(shí)現(xiàn)動(dòng)態(tài)生成縮略圖

    在Nginx中配置image filter模塊來(lái)實(shí)現(xiàn)動(dòng)態(tài)生成縮略圖

    這篇文章主要介紹了在Nginx中配置image filter模塊來(lái)實(shí)現(xiàn)動(dòng)態(tài)生成縮略圖的方法,包括縮略圖尺寸的設(shè)置等方面的介紹,需要的朋友可以參考下
    2015-12-12
  • Nginx如何根據(jù)前綴路徑轉(zhuǎn)發(fā)到不同的Flask服務(wù)

    Nginx如何根據(jù)前綴路徑轉(zhuǎn)發(fā)到不同的Flask服務(wù)

    這篇文章主要介紹了Nginx如何根據(jù)前綴路徑轉(zhuǎn)發(fā)到不同的Flask服務(wù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Nginx基礎(chǔ)配置(main、events、http、server、location)

    Nginx基礎(chǔ)配置(main、events、http、server、location)

    本文主要介紹了Nginx基礎(chǔ)配置(main、events、http、server、location),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 詳解ngx_cache_purge _proxy_cache指令使用

    詳解ngx_cache_purge _proxy_cache指令使用

    本文主要介紹了詳解ngx_cache_purge _proxy_cache指令使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • nginx動(dòng)態(tài)添加訪問(wèn)白名單的方法

    nginx動(dòng)態(tài)添加訪問(wèn)白名單的方法

    本篇文章主要介紹了nginx動(dòng)態(tài)添加訪問(wèn)白名單的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02

最新評(píng)論

平远县| 故城县| 隆回县| 垫江县| 崇仁县| 安顺市| 永安市| 安国市| 开江县| 阿城市| 三亚市| 琼结县| 新绛县| 台南市| 泉州市| 日土县| 牙克石市| 隆德县| 西藏| 都兰县| 侯马市| 建德市| 江西省| 双辽市| 同江市| 泗阳县| 乌海市| 澄城县| 宜昌市| 江源县| 精河县| 沙河市| 垣曲县| 瑞丽市| 泰安市| 大埔区| 巴林左旗| 高陵县| 新乡县| 崇仁县| 富川|