亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

核心安全配置

1.編譯安裝 Nginx

(1)安裝支持軟件

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

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

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

[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(代理濫用),通過正則表達(dá)式匹配請(qǐng)求方法,非白名單方法返回 444(無響應(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 攻擊)是一種常見的網(wǎng)絡(luò)攻擊方式,通過大量合法或偽造的小流量請(qǐng)求來耗盡服務(wù)器資源,導(dǎo)致正常用戶無法訪問網(wǎng)站。要在 Nginx 中有效防止 CC 攻擊,可以采用多種策略和方法。

CC攻擊,也稱為連接數(shù)攻擊或請(qǐng)求速率限制攻擊,通過模擬大量用戶訪問來消耗服務(wù)器資源,從而使得正常用戶無法正常訪問網(wǎng)站。為了防止此類攻擊,可以使用 Nginx 提供的模塊來限制請(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ù)說明:

  • limit_req_zone:定義共享內(nèi)存區(qū)
  • $binary_remote_addr:是一個(gè)內(nèi)置變量,用于表示客戶端IP地址的二進(jìn)制格式
  • zone=req_limit:10m 創(chuàng)建名為req_limit的共享內(nèi)存區(qū),大小10M,用來存儲(chǔ)客戶端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:類似于等候區(qū),超出并發(fā)數(shù)的請(qǐng)求會(huì)等候區(qū),等候區(qū)占滿后,多余的請(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)稱 ab)是 Apache HTTP 服務(wù)器自帶的一個(gè)輕量級(jí)、易用的HTTP服務(wù)器性能測(cè)試工具。它主要用于評(píng)估服務(wù)器在并發(fā)訪問下的性能表現(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ù)。通過防盜鏈設(shè)置,可以避免他人盜用你的帶寬和服務(wù)器資源,提升安全性和資源利用率。

‌防盜鏈原理‌

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

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

‌Nginx 防盜鏈配置‌

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

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

‌配置示例‌

以下是常見的防盜鏈配置場(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ù)圖片和視頻文件。
  • ‌邏輯‌:僅允許來自 example.com、*.example.net 的請(qǐng)求,或沒有 Referer 的請(qǐng)求(如瀏覽器直接訪問)。
  • ‌阻止行為‌:非法請(qǐng)求返回 403 錯(cuò)誤碼。

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

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

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

通過生成加密鏈接防止盜鏈(需配合程序生成臨時(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; # 鏈接過期
 } 
} 

‌注意事項(xiàng)‌

‌Referer 的局限性‌

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

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

  • 靜態(tài)資源(如圖片)通常通過 location 匹配文件擴(kuò)展名。
  • 動(dòng)態(tài)資源(如 API)可通過校驗(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)站首頁文件

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

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

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

[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)頁中顯示圖片
        </h1>
    </body>
</htm1>

(7)測(cè)試訪問盜鏈網(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ū)分大小寫,以.jpg或. gif 或.swf 結(jié)尾的文件;
  • Valid referers:設(shè)置信任的網(wǎng)站,可以正常使用圖片;
  • 后面的網(wǎng)址或者域名:referer 中包含相關(guān)字符串的網(wǎng)址;
  • If 語句:如果鏈接的來源域名不在 valid referers 所列出的列表中,$invalid referer 為1,則執(zhí)行后面的操作,即進(jìn)行重寫或返回 403 頁面。

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

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

您可能感興趣的文章:

相關(guān)文章

  • nginx部署vue項(xiàng)目,給訪問路徑加前綴的實(shí)現(xiàn)

    nginx部署vue項(xiàng)目,給訪問路徑加前綴的實(shí)現(xiàn)

    這篇文章主要介紹了nginx部署vue項(xiàng)目,給訪問路徑加前綴的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • nginx主動(dòng)健康檢查功能實(shí)現(xiàn)

    nginx主動(dòng)健康檢查功能實(shí)現(xiàn)

    nginx_upstream_check_module是一個(gè)Nginx的第三方模塊,它可以實(shí)現(xiàn) Nginx的主動(dòng)健康檢查功能,本文將介紹一個(gè)基于 Nginx 的第三方模塊 nginx_upstream_check_module,它可以實(shí)現(xiàn) Nginx 的主動(dòng)健康檢查功能,可以幫助我們更加有效地管理后端服務(wù)器,需要的朋友可以參考下
    2023-05-05
  • Nginx配置多個(gè)訪問路徑的實(shí)現(xiàn)

    Nginx配置多個(gè)訪問路徑的實(shí)現(xiàn)

    本文主要介紹了Nginx配置多個(gè)訪問路徑的實(shí)現(xiàn),Nginx通過配置多個(gè)service就可以實(shí)現(xiàn)多訪問路徑,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • nginx修改配置文件不生效解決方案

    nginx修改配置文件不生效解決方案

    當(dāng)你修改了Nginx的配置文件后,需要重新加載配置文件,使得修改生效,這篇文章主要給大家介紹了關(guān)于nginx修改配置文件不生效的解決方案,需要的朋友可以參考下
    2023-08-08
  • 蘋果M1芯片安裝nginx 并且部署vue項(xiàng)目步驟詳解

    蘋果M1芯片安裝nginx 并且部署vue項(xiàng)目步驟詳解

    在本篇文章里小編給大家整理了一篇關(guān)于蘋果M1芯片安裝nginx 并且部署vue項(xiàng)目步驟詳解內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)參考下。
    2021-11-11
  • Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析

    Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析

    這篇文章主要為大家介紹了Nginx?Tomcat負(fù)載均衡動(dòng)靜分離原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 解決Nginx location中配置proxy_pass轉(zhuǎn)發(fā)時(shí)斜線‘/‘導(dǎo)致404問題

    解決Nginx location中配置proxy_pass轉(zhuǎn)發(fā)時(shí)斜線‘/‘導(dǎo)致404問題

    這篇文章主要介紹了解決Nginx location中配置proxy_pass轉(zhuǎn)發(fā)時(shí)斜線‘/‘導(dǎo)致404問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • nginx搭建高可用集群的實(shí)現(xiàn)方法

    nginx搭建高可用集群的實(shí)現(xiàn)方法

    本文主要介紹了nginx搭建高可用集群的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐

    nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐

    本文主要介紹了nginx實(shí)現(xiàn)單主機(jī)多域名映射的項(xiàng)目實(shí)踐,配置不同的子域名映射到不同的內(nèi)部服務(wù)端口,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-02-02
  • 詳解Nginx 虛擬主機(jī)配置的三種方式(基于IP)

    詳解Nginx 虛擬主機(jī)配置的三種方式(基于IP)

    Nginx配置虛擬主機(jī)支持3種方式主要有基于IP的虛擬主機(jī)配置,基于端口的虛擬主機(jī)配置,基于域名的虛擬主機(jī)配置。本文主要介紹了基于IP配置的實(shí)現(xiàn),感興趣的小伙伴們可以參考一下
    2018-10-10

最新評(píng)論