欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nginx安全防護(hù)與https部署全過程

 更新時間:2025年05月06日 16:28:44   作者:阿薩德791  
這篇文章主要介紹了nginx安全防護(hù)與https部署全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

核心安全配置

編制安裝nginx

安裝支持軟件

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

創(chuàng)建運行用戶,組和日志目錄

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

編譯安裝

[root@localhost ^]# tar zxf nginx-1.26.3.tar.gz
[root@localhost ^]# cd nginx-1.26.3
[root@localhost nginx-1.26.3]# ./configure\

--prefix=/usr/local/nginx
--user=nginx\
--group=nginx
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module\
--with-http_gzip_static_module \
--with-pcre\
--with-stream

[root@localhost nginx-1.26.3]# make & make install

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

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

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

[root@localhost ^]# vi /lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target
[Service]
Type=forking
ExecStartPre=/usr/local/sbin/nginx -t
ExecStart=/usr/local/sbin/nginx
ExecReload=/usr/local/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
User=root
Group=root
[Instal1]
WantedBy=multi-user.target

[root@localhost^]# systemctl daemon-reload
[root@localhost~]# systemctl start nginx
[root@localhost^]# systemctl enable nginx

隱藏版本號

在生產(chǎn)環(huán)境中,需要隱藏Nginx的版本號,以避免泄漏Nginx白的版本,使攻擊者不能針對特定版本進(jìn)行攻擊。

[root@localhost ~]# curl -I 192.168.10.101
HTTP/1.1 200 OK
Server: nginx/1.26.3

修改配置文件

[root@localhost^]# vi /usr/local/nginx/conf/nginx.conf

http {
include mime.types;
default_type application/octet-stream;
server_tokens off;

.......

[root@localhost^]#nginx -t
[root@localhost~]#nginx -s reload
[root@localhost~]# curl -I 192.168.10.101

HTTP/1.1 200 OK
Server: nginx

限制危險請求方法

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

修改配置文件

[root@localhost ^]# vi /usr/local/nginx/conf/nginx.conf

server {
($request_method !~ (GET|HEAD|POST)$) {
return 444;

}
}

驗證

[root@localhost ^]# curl -XPUT -I 192.168.10.10]
curl: (52) Empty reply from server

請求限制(cc攻擊防御)

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

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

使用nginx的limit_req模塊限制請求速率

[root@localhost ^]# vi /usr/local/nginx/conf/nginx.conf

http {
limit_req_zone_$binary_remote_addr_zone=req_limit:10m rate=10r/s;
server {
location / {
root html;
index index.html index.php;
limit_req zone=req_limit burst=20 nodelay;

}
}
}

壓力測試驗證

安裝ab測試工具

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

[root@localhost~]# ab -n 300 -c 30 http://192.168.10.101/

[root@localhost ^]# tail -300 /usr/local/nginx/logs/access. log | grep -c
503
279
  • -n 300:表示總請求數(shù)為300次,即模擬客戶端向服務(wù)器發(fā)送300 次HTTP請求
  • -c 30:表示并發(fā)用戶數(shù)為30,即同時有30個請求并行發(fā)送到服務(wù)器。

防盜鏈

防盜鏈?zhǔn)且环N重要的安全設(shè)置,旨在防止未經(jīng)授權(quán)的用戶盜用網(wǎng)站(靜態(tài))資源。盜鏈行為不僅侵犯了內(nèi)容創(chuàng)作者的版權(quán),還可能導(dǎo)致原網(wǎng)站帶寬和資源的過度消耗,影響正常用戶的訪問速度和體驗。

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

192.168.10.101 www.aaa.com

192.168.10.102 www.bbb.com

修改兩臺OpenEuler的hosts文件,設(shè)置域名和IP映射關(guān)系。

192.168.10.101 www.aaa.com

192.168.10.102www.bbb.com

把圖片kgc.png放到源主機(www.aaa.com的工作目錄下

[root@localhost ^]# ls /usr/local/nginx/html
Index. html kgc.png

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

[root@localhost ^]# vi /usr/local/nginx/html/index.html

<html>
<body>
<h1>aaa It work!</h1>
<img src="kgc.png"/>

<body>

</html>

使用瀏覽器訪問進(jìn)行驗證即可

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

[root@localhost ^]# dnf -y install httpd
[root@localhost~]# vi /usr/local/nginx/html/index.html

<html
<body>
<h1>bbb It work! </hl>
<img src="http://www.aaa.com/kgc.png
</body>
</html>

[root@localhost~]# systemctl stop firewalld
[root@localhost`]# systemctl start httpd

測試訪問盜鏈網(wǎng)站(使用瀏覽器)

配置Nginx防盜鏈

[root@localhost ^]# vi /usr/local/nginx/conf/nginx.conf
location ^* \. (gif|jpg|jpeg|png|bmp|swf|flv|mp4|webp|ico)s{
root html;
valid_referers aaa.com *.aaa.com;
if($invalid referer){
return 403;

}

}

[root@localhost^]#nginx -t
[root@localhost~]#nginx -s reload

測試訪問盜鏈網(wǎng)站(盜鏈?zhǔn)?03)

高級防護(hù)

動態(tài)黑名單

動態(tài)黑名單是Nginx中一種實時攔截惡意請求的安全機制,它允許在不重啟服務(wù)的情況下,動態(tài)更新需要封禁的IP地址或網(wǎng)段。

相比靜態(tài)配置的allow/deny指令,動態(tài)黑名單更靈活高效,適用于高并發(fā)、多變的攻擊擊防護(hù)場景。

編輯黑名單配置文件

[root@localhost ^]# vi /usr/local/nginx/conf/blockips.conf

192.168.1.0/24 1;
192.168.10.102 1;

編輯主配置文件

[root@localhost^]# vi /usr/local/nginx/conf/nginx.conf

http {
geo $block_ip {
default 0;
finclude /usr/local/nginx/conf/blockips.conf;

}

server
if
($block_ip) {
return 403;

}

}

}
[root@localhost^]# nginx -t
[root@localhost~]# nginx -s reload

使用封禁ip測試訪問

[root@localhost ~]# curl 192.168.10.101

<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>

自動添加黑名單

#!/bin/bash
#自動封禁訪問超過100次的IP
awk '{print$1}'/var/log/nginx/access.log|sort|uniq -c?ssort -nr | awk'{if($1>100) print $2"1;"}' >/usr/local/nginx/conf/bllockips.conf
  • uniq-c:統(tǒng)計連續(xù)出現(xiàn)的次數(shù),并在行首顯示次數(shù)
  • sort-nr:按數(shù)值排序

nginx https配置

https概念

眾所周知,http(超文本傳輸協(xié)議)是客戶端瀏覽器與web服務(wù)器之間的通信協(xié)議,而https協(xié)議可以認(rèn)為是HTTP+SSL/TLS,在http之下tcp之上加了ss1一層,用于對應(yīng)用層數(shù)據(jù)的加解密。

如下所示:

  • http
  • ssl/tsl
  • tcp
  • ip

http為什么不安全

HTTP由于是明文傳輸,主要存在三大風(fēng)險:竊 聽風(fēng)險、篡改區(qū)險、冒充風(fēng)險。

  • 竊 聽風(fēng)險
  • 中間人可以獲取到通信內(nèi)容,由于內(nèi)容是明文,所以獲取明文后有安全風(fēng)險
  • 篡改風(fēng)險
  • 中間人可以篡改報文內(nèi)容后再發(fā)送給對方,風(fēng)險極大。
  • 冒充風(fēng)險
  • 比如你以為是在和某寶通信,但實際上是在和一個釣魚網(wǎng)站通信。

安全通信的四大原則

通信需要包括以下四個原則:機密性、完整性,身份認(rèn)證和不可否認(rèn)。

  • 機密性:即對數(shù)據(jù)加密,解決了竊 聽風(fēng)險,因為即使被中間人竊 聽,由于數(shù)據(jù)是加密的,他也拿不到明文:
  • 完整性:指數(shù)據(jù)在傳輸過程中沒有被篡改,不多不少,保持原樣,中途如果哪怕改了一個標(biāo)點符號,接收方也能識別出來,從來判定定接收報文不合法
  • 身份認(rèn)證:確認(rèn)對方的真實身份,即證明"你媽是你媽"的問題,這樣就解決了冒充風(fēng)險,用戶不用擔(dān)心訪問的是某寶結(jié)果卻在和釣魚網(wǎng)網(wǎng)站通信的問題:
  • 不可否認(rèn):即不可否認(rèn)已發(fā)生的行為,比如小明向小紅借了1000元,但沒打借條,或者打了借條但沒有簽名,就會造成小紅的資金損失夫。

https通信原理簡述

既然HTTP是明文傳輸?shù)?,那我們給報文加密不就行了,既然要加密,我們肯定需要通信雙方協(xié)商好密鑰吧。一種是通信雙方使用同一把密鑰,即對稱加密的方式來給報文進(jìn)行加解密。

非對稱加密即加解密雙方使用不同的密鑰,一把作為公鑰,可以公開的,把作為私鑰,不能公開,公鑰加密的密文只有私鑰可以解密,私鑰簽名的內(nèi)容,也只有公鑰可以驗簽。

數(shù)字證書,解決公鑰傳輸信任問題

證書是由站點管理者向CA申請,申請的時候會提交域名、組織單位信息和公鑰等數(shù)據(jù)(這些數(shù)據(jù)組成了Certificate Signing Request證書簽名請求簡稱CSR),CA會根據(jù)這些信息生成證書

https總結(jié)

server傳輸CA頒發(fā)的證書給client,client收到證書后使用系統(tǒng)內(nèi)置的CA證書的公鑰來驗簽,驗簽通過證明證書是受信任的,證書受信任那么證書中的公鑰也就是受信任的,這樣的話就解決了公鑰傳輸過程中被調(diào)包的風(fēng)險。

nginx配置https證書

由于ssl證書需要向CA組織申購,實驗采用自簽名證書(也就是自己給自己簽名并頒發(fā)證書,當(dāng)然這種證書是不被信任的)

使用openssl 生成證書和私鑰生成證書和私鑰

創(chuàng)建證書存儲目錄

[root@localhost ^]# mkdir -p /etc/nginx/ssl

生成自簽名證書

[root@localhost ^]# openssl req -x509 -nodes -days :365 -newkey rsa:2048
-keyout/etc/nginx/ssl/nginx-selfsigned.key
-out/etc/nginx/ssl/nginx-selfsigned.crt\
-subj "/C=CN/ST=Beijing/L=Beijing/0=MyOrg/CN=localhost

Ps:

CA簽名證書:

需要由受信任的第三方證書頒發(fā)機構(gòu)(CA)簽發(fā)。

流程如下:

  • 1.用戶生成私鑰和CSR(證書簽名請求)。
  • 2.將CSR提交給CA(如Let'sEncrypt、DigiCert等)。
  • 3.CA機構(gòu)驗證身份后,用CA的私鑰對證書簽名,生成最終證書。

自簽名證書:

  • 證書的頒發(fā)者(Issuer)和主體(Subject)是同一個實體((即自己)。
  • 無需第三方CA參與,直接用工具(如0penSSL)生成私鑰和證書。
  • 簽名時使用自己的私鑰,而不是CA的私鑰。
  • 適用于測試、內(nèi)部環(huán)境或無需公開信任的場景。

nginx啟用https

編輯nginx配置文件

[root@localhost ~]#vi /usr/local/nginx/conf/nginx.conf
server {
listen 443 ssl; #監(jiān)聽 HTTPS 端口
server_namelocalhost; #域名或IP
#指定證書和私鑰路徑
ssl_certificate
/etc/nginx/ssl/nginx-selfsigned.crt;
/etc/nginx/ssl/nginx-selfsigned.key;
issl_certificate_key

server {
listen 80;
server_name localhost;
return 301 https://$host$request_uri;

}
[root@localhost ^]#nginx -t
[root@localhost ^]#nginx -s reload

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • 解決方案之關(guān)于Nginx高可用方案

    解決方案之關(guān)于Nginx高可用方案

    這篇文章主要介紹了解決方案之關(guān)于Nginx高可用方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Nginx實現(xiàn)if多重判斷配置方法示例

    Nginx實現(xiàn)if多重判斷配置方法示例

    這篇文章主要介紹了Nginx實現(xiàn)if多重判斷配置方法示例,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下
    2015-05-05
  • nginx?location/區(qū)別詳解

    nginx?location/區(qū)別詳解

    本文主要介紹了nginx?location/區(qū)別詳解,主要介紹了8中不同的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • windows下安裝nginx的方法(圖文)

    windows下安裝nginx的方法(圖文)

    這篇文章主要介紹了windows下安裝nginx的方法(圖文),需要的朋友可以參考下
    2016-09-09
  • 對Nginx支持SSL的性能進(jìn)行優(yōu)化的方法

    對Nginx支持SSL的性能進(jìn)行優(yōu)化的方法

    這篇文章主要介紹了對Nginx支持SSL的性能進(jìn)行優(yōu)化的方法,作者分別以不同方法進(jìn)行了8個優(yōu)化實驗,需要的朋友可以參考下
    2015-06-06
  • Nginx實現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)的步驟詳解

    Nginx實現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)的步驟詳解

    外網(wǎng)瀏覽器與內(nèi)網(wǎng)是不通的,但是外網(wǎng)與中間過渡服務(wù)器是通的,中間過渡服務(wù)器與內(nèi)網(wǎng)服務(wù)器是通的,這樣在外網(wǎng)訪問過渡服務(wù)器時,過渡服務(wù)器再跳轉(zhuǎn)到后臺服務(wù)器,本文給大家介紹了Nginx外網(wǎng)訪問內(nèi)網(wǎng)如何實現(xiàn)步驟,需要的朋友可以參考下
    2023-10-10
  • linux下 nginx監(jiān)控問題

    linux下 nginx監(jiān)控問題

    這篇文章主要介紹了linux 下nginx監(jiān)控問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • 解析nginx server_name的具體使用

    解析nginx server_name的具體使用

    nginx server_name對于正確配置虛擬主機非常重要,本文主要介紹了解析nginx server_name的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • Nginx配置SSL自簽名證書的方法

    Nginx配置SSL自簽名證書的方法

    這篇文章主要介紹了Nginx配置SSL自簽名證書的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 升級nginx支持HTTP/2服務(wù)端推送的方法

    升級nginx支持HTTP/2服務(wù)端推送的方法

    這篇文章主要介紹了升級nginx支持HTTP/2服務(wù)端推送的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05

最新評論