中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用Nginx、Nginx Plus抵御DDOS攻擊

發布時間:2022-04-27 14:14:06 來源:億速云 閱讀:201 作者:iii 欄目:大數據

這篇文章主要介紹了怎么使用Nginx、Nginx Plus抵御DDOS攻擊的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇怎么使用Nginx、Nginx Plus抵御DDOS攻擊文章都會有所收獲,下面我們一起來看看吧。

一、應用層ddos攻擊的特征

應用層(七層/http層)ddos 攻擊通常由木馬程序發起,其可以通過設計更好的利用目標系統的脆弱點。例如,對于無法處理大量并發請求的系統,僅僅通過建立大量的連接,并周期性的發出少量數據包來保持會話就可以耗盡系統的資源,使其無法接受新的連接請求達到 ddos 的目的。其他還有采用發送大量連接請求發送大數據包的請求進行攻擊的形式。因為攻擊是由木馬程序發起,攻擊者可以在很短時間內快速建立大量的連接,并發出大量的請求。

以下是一些ddos的特證,我們可以據此特征來抵抗 ddos(包括但不限于):

  1. 攻擊經常來源于一些相對固定的 ip 或 ip 段,每個 ip 都有遠大于真實用戶的連接數和請求數。(備注:這并不表明這種請求都是代表著 ddos 攻擊。在很多使用nat的網絡架構中,很多的客戶端使用網關的 ip 地址訪問公網資源。但是,即便如此,這樣的請求數和連接數也會遠少于 ddos 攻擊。)

  2. 因為攻擊是由木馬發出且目的是使服務器超負荷,請求的頻率會遠遠超過正常人的請求。

  3. user-agent 通常是一個非標準的值

  4. referer 有時是一個容易聯想到攻擊的值

二、使用nginx、nginx plus抵抗ddos攻擊

結合上面提到的 ddos 攻擊的特征,nginx、nginx plus有很多的特性可以用來有效的防御 ddos 攻擊,可以從調整入口訪問流量和控制反向代理到后端服務器的流量兩個方面來達到抵御 ddos 攻擊的目的。

1. 限制請求速度

設置 nginx、nginx plus 的連接請求在一個真實用戶請求的合理范圍內。比如,如果你覺得一個正常用戶每兩秒可以請求一次登錄頁面,你就可以設置 nginx 每兩秒鐘接收一個客戶端 ip 的請求(大約等同于每分鐘30個請求)。

limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m; 
server { 
... 
location /login.html { 
limit_req zone=one; 
... 
} 
}

`limit_req_zone` 命令設置了一個叫 one 的共享內存區來存儲請求狀態的特定鍵值,在上面的例子中是客戶端 ip($binary_remote_addr)。location 塊中的 `limit_req` 通過引用 one 共享內存區來實現限制訪問 /login.html 的目的。

2. 限制連接數量

設置 nginx、nginx plus 的連接數在一個真實用戶請求的合理范圍內。比如,你可以設置每個客戶端 ip 連接 /store 不可以超過10個。

limit_conn_zone $binary_remote_addr zone=addr:10m; 
server { 
... 
location /store/ { 
limit_conn addr 10; 
... 
} 
}

`limit_conn_zone` 命令設置了一個叫 addr 的共享內存區來存儲特定鍵值的狀態,在上面的例子中是客戶端 ip( $binary_remote_addr)。location 塊中 `limit_conn` 通過引用 addr 共享內存區來限制到 /store/ 的最大連接數為10。

3. 關閉慢連接

有一些 ddos 攻擊,比如 slowlris,是通過建立大量的連接并周期性的發送一些數據包保持會話來達到攻擊目的,這種周期通常會低于正常的請求。這種情況我們可以通過關閉慢連接來抵御攻擊。

`client_body_timeout` 命令用來定義讀取客戶端請求的超時時間,`client_header_timeout` 命令用來定于讀取客戶端請求頭的超時時間。這兩個參數的默認值都是 60s,我們可以通過下面的命令將他們設置為 5s:

server { 
client_body_timeout 5s; 
client_header_timeout 5s; 
... 
}

4. 設置ip黑名單

如果確定攻擊來源于某些 ip 地址,我們可以將其加入黑名單,nginx 就不會再接受他們的請求。比如,你已經確定攻擊來自于從123.123.123.1到123.123.123.16的一段 ip 地址,你可以這樣設置:

location / { 
deny 123.123.123.0/28; 
... 
}

或者你確定攻擊來源于123.123.123.3、123.123.123.5、123.123.123.7幾個ip,可以這樣設置:

location / { 
deny 123.123.123.3; 
deny 123.123.123.5; 
deny 123.123.123.7; 
... 
}

5. 設置ip白名單

如果你的網站僅允許特定的 ip 或 ip 段訪問,你可以結合使用 allow 和 deny 命令來限制僅允許你指定的 ip 地址訪問你的網站。如下,你可以設置僅允許 192.168.1.0 段的內網用戶訪問:

location / { 
allow 192.168.1.0/24; 
deny all; 
... 
}

deny 命令會拒絕除了 allow 指定的 ip 段之外的所有其他 ip 的訪問請求。

6. 使用緩存進行流量削峰

通過打開 nginx 的緩存功能并設置特定的緩存參數,可以削減來自攻擊的流量,同時也可以減輕對后端服務器的請求壓力。以下是一些有用的設置:

  1. proxy_cache_use_stale ` 的 updating 參數告訴 nginx 什么時候該更新所緩存的對象。只需要到后端的一個更新請求,在緩存有效期間客戶端對該對象的請求都無需訪問后端服務器。當通過對一個文件的頻繁請求來實施攻擊時,緩存功能可極大的降低到后端服務器的請求。

  2. proxy_cache_key ` 命令定義的鍵值通常包含一些內嵌的變量(默認的鍵值 $scheme$proxy_host$request_uri 包含了三個變量)。如果鍵值包含 `$query_string` 變量,當攻擊的請求字符串是隨機的時候就會給 nginx 代理過重的緩存負擔,因此我們建議一般情況下不要包含 `$query_string` 變量。

7. 屏蔽特定的請求

可以設置 nginx、nginx plus 屏蔽一些類型的請求:

  1. 針對特定 url 的請求

  2. 針對不是常見的 user-agent 的請求

  3. 針對 referer 頭中包含可以聯想到攻擊的值的請求

  4. 針對其他請求頭中包含可以聯想到攻擊的值的請求

比如,如果你判定攻擊是針對一個特定的 url:/foo.php,我們就可以屏蔽到這個頁面的請求:

location /foo.php { 
deny all; 
}

或者你判定攻擊請求的 user-agent 中包含 foo 或 bar,我們也可以屏蔽這些請求:

location / { 
if ($http_user_agent ~* foo|bar) { 
return 403; 
} 
... 
}

http_name 變量引用一個請求頭,上述例子中是 user-agent 頭。可以針對其他的 http 頭使用類似的方法來識別攻擊。

8. 限制到后端服務器的連接數

一個 nginx、nginx plus 實例可以處理比后端服務器多的多的并發請求。在 nginx plus 中,你可以限制到每一個后端服務器的連接數,比如可以設置 nginx plus 與 website upstream 中的每個后端服務器建立的連接數不得超過200個:

upstream website { 
server 192.168.100.1:80 max_conns=200; 
server 192.168.100.2:80 max_conns=200; 
queue 10 timeout=30s; 
}

`max_conns` 參數可以針對每一個后端服務器設置 nginx plus 可以與之建立的最大連接數。`queue` 命令設置了當每個后端服務器都達到最大連接數后的隊列大小,`timeout` 參數指定了請求在隊列中的保留時間。

9. 處理特定類型的攻擊

有一種攻擊是發送包含特別大的值的請求頭,引起服務器端緩沖區溢出。nginx、nginx plus 針對這種攻擊類型的防御,可以參考

[using nginx and nginx plus to protect against cve-2015-1635]
)

10. 優化nginx性能

ddos 攻擊通常會帶來高的負載壓力,可以通過一些調優參數,提高 nginx、nginx plus 處理性能,硬抗 ddos 攻擊,詳細參考:

[tuning nginx for performance]

三、識別ddos攻擊

到目前為止,我們都是集中在如何是用 nginx、nginx plus 來減輕 ddos 攻擊帶來的影響。如何才能讓 nginx、nginx plus 幫助我們識別 ddos 攻擊呢?`nginx plus status module` 提供了到后端服務器流量的詳細統計,可以用來識別異常的流量。nginx plus 提供一個當前服務狀態的儀表盤頁面,同時也可以在自定義系統或其他第三方系統中通過 api 的方式獲取這些統計信息,并根據歷史趨勢分析識別非正常的流量進而發出告警。

關于“怎么使用Nginx、Nginx Plus抵御DDOS攻擊”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“怎么使用Nginx、Nginx Plus抵御DDOS攻擊”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鱼台县| 安西县| 柯坪县| 乡城县| 华安县| 唐河县| 磐安县| 定州市| 中宁县| 兴仁县| 徐闻县| 和林格尔县| 车险| 紫金县| 永泰县| 景泰县| 文山县| 民县| 彭水| 宜兴市| 平乐县| 刚察县| 宣恩县| 资兴市| 盐亭县| 乐山市| 昭觉县| 射阳县| 大港区| 辽宁省| 健康| 临沧市| 方城县| 海伦市| 林西县| 伊通| 呈贡县| 芜湖市| 班玛县| 兖州市| 青铜峡市|