如何使用 Nginx 防止 DDoS 攻擊

如何使用 Nginx 防止 DDoS 攻擊

DDoS(分散式阻斷服務)攻擊透過濫用數位通訊策略使伺服器資源過載。這些類型的攻擊是電腦世界中有組織的襲擊。無數令人討厭的反對行為結合在一起,造成了足以迫使伺服器停止運作的威脅。

最糟糕的是,有很多方法可以對此類主機發動遊擊網路「戰爭」。幸運的是,伺服器可以配置為抵禦此類攻擊。

Nginx 是一種非常受歡迎的 Unix 機器伺服器系統,具有足夠的內建功能,可顯著限制 DDoS 攻擊的有效性。

以下是使用 Nginx 處理此類威脅的一些有效選項。

如何使用Nginx防止DDoS攻擊?

備份設定檔

在更改任何設定之前,請確保快速備份伺服器的配置。以下命令可用於此目的:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup-original

如何使用 Nginx 防止 DDoS 攻擊

完成後,您就可以繼續了。

檢查交通狀況

監控伺服器上的流量可以輕鬆優化安全性並實施其他策略。 Nginx 有一個專門為此目的創建的模組。

設定狀態頁面

Nginx 通常附帶一個名為「stub status」(http_stub_status_module)的模組,它允許將此類功能非常輕鬆地整合到伺服器環境中。首先,使用以下命令對其進行測試:

nginx -V

如何使用 Nginx 防止 DDoS 攻擊

或者使用以下命令可以更快找到它:

nginx -V 2>&1 | grep -o with-http_stub_status_module

如何使用 Nginx 防止 DDoS 攻擊

如果您的輸出與上面的輸出類似,那麼一切都很好。否則,您將需要使用包含的模組來安裝或重新編譯 Nginx 安裝。

設定可以檢查的狀態頁面很簡單,但您還需要將存取限制在最低限度(僅限電腦)以維護安全。首先開啟位於/etc/nginx/nginx.conf 的伺服器主設定檔。

打開它並將以下程式碼新增至「http指令」以啟用該模組,取代「localhost」、「/status_page」「127.0.0.1」中您自己的資訊。

server {
listen 80;
listen [::]:80;
server_name localhost;
##
# Status Page Settings
##
location /status_page {
stub_status on;
allow 127.0.0.1;
allow ::1;
deny all;
}
}

注意:您需要 sudo 權限才能修改此檔案。

如何使用 Nginx 防止 DDoS 攻擊

現在,測試您的配置:

sudo nginx -t

如何使用 Nginx 防止 DDoS 攻擊

如果一切順利,向伺服器發送重新載入訊號:

sudo systemctl reload nginx

如何使用 Nginx 防止 DDoS 攻擊

若要存取狀態頁面,請在 Web 瀏覽器中存取位置server_name,後面跟著「/status_page」,或使用命令列工具(如curl)。(如果您的瀏覽器快取未自動更新,這非常有用)。以下是訪問範例中頁面的curl命令:

curl localhost/status_page

如何使用 Nginx 防止 DDoS 攻擊

在瀏覽器中,上述指令輸出如下圖所示。

如何使用 Nginx 防止 DDoS 攻擊

檢查訪問日誌

如果您在檢查上面配置的狀態頁面時發現異常流量,您可能需要檢查伺服器的存取日誌。伺服器存取日誌可以在“/var/log/nginx/access.log”中找到此日誌列出了使用的 HTTP 方法、存取嘗試的日期/時間、使用者代理程式和造訪的頁面。

如何使用 Nginx 防止 DDoS 攻擊

連線限制

在許多值得嘗試的防止 DDoS 攻擊的有用策略中,最簡單且最有效的策略之一是限制傳入流量的速率。

理想情況下,您應該限制存取權限,以防止惡意機器人淹沒您的伺服器,同時仍保持合理的速率。在 Nginx 中,這可以透過limit_req_zone和limit_req指令來完成以下程式碼設定記憶體和速度限制,以便在伺服器配置為顯示的任何位置使用:

limit_req_zone $binary_remote_addr zone=speedbump:10m rate=10r/s;

「Zone」指定儲存使用者請求的記憶體空間的名稱和容量(在本例中以兆位元組為單位)。「Rate」設定 Nginx 每秒接受的請求總數(本例為 10 個請求)。將此程式碼視為一條規則,接下來是該規則的使用:

limit_req zone=speedbump burst=20;

上面的程式碼實際上不僅僅只是實作一個限制規則。它還添加了一個最多包含 20 個請求的小佇列,以優雅地處理合法連接,其渲染速度比正常情況要快一些,超出了規則和佇列,導致客戶端出現 503 錯誤。這兩個指令在 nginx.conf 中看起來像這樣:

如何使用 Nginx 防止 DDoS 攻擊

建立IP位址黑名單

如果您獲得正在對您的伺服器執行 DDoS 攻擊的IP 位址,您可以簡單地將其列入黑名單並消除源自該 IP 位址的任何連線。

將以下程式碼加入您的伺服器指令:

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

阻止對某些文件的請求

如果 DDoS 攻擊針對的是伺服器上的某些檔案 - 例如WordPress上的xmlrpc.php檔案(這是大多數 WordPress 伺服器中的常見目標檔案),您可以封鎖所有這些檔案。將此程式碼新增至您的伺服器指令:

location /xmlrpc.php {
deny all;
}

按照上述流程,您將能夠限制大多數 DDoS 攻擊。請務必查看Nginx 文件以了解可以套用的其他安全性選項。

希望你成功。


如何刪除 Windows 10 螢幕右上角的版權請求通知

如何刪除 Windows 10 螢幕右上角的版權請求通知

您是否在螢幕右上角看到 Windows 10 啟動通知?本文將指導您如何刪除Windows 10上的版權請求通知。

AZ 有關如何安裝 Windows 10 內部版本 14393.222 的說明

AZ 有關如何安裝 Windows 10 內部版本 14393.222 的說明

最近微軟為Windows 10 PC用戶發布了最新的累積更新,名為Build 14393.222。這次針對Windows 10發布的更新主要根據使用者回饋修復了Bug,並提升了作業系統的效能體驗。

只需 3 步驟即可使用 Bastion 主機保護您的電腦網絡

只需 3 步驟即可使用 Bastion 主機保護您的電腦網絡

您的本機網路上是否有需要外部存取的電腦?使用堡壘主機作為網路的看門人可能是一個很好的解決方案。

如果您的鍵盤無法使用,如何建立 Windows 鍵

如果您的鍵盤無法使用,如何建立 Windows 鍵

如果您喜歡使用舊的經典鍵盤,例如 IBM Model M,它不包含實體 Windows 鍵,那麼有一個簡單的方法可以添加更多按鍵,即藉用您不經常使用的鍵。

快速清除Windows 10中所有事件日誌的3種方法

快速清除Windows 10中所有事件日誌的3種方法

有時您可能需要一次刪除所有舊的事件日誌。在本指南中,Quantrimang.com 將向您展示 3 種快速刪除 Windows 10 事件檢視器中所有事件日誌的方法。

假IP方式幫助您匿名訪問

假IP方式幫助您匿名訪問

在之前的許多文章中,我們已經提到在線保持匿名非常重要。私人資訊每年都會被洩露,使得網路安全變得越來越必要。這也是我們應該使用虛擬IP位址的原因。下面,我們就來學習製作假IP的方法!

如何在 Windows 10 上建立透明背景模式

如何在 Windows 10 上建立透明背景模式

WindowTop 是一款能夠調暗 Windows 10 電腦上運行的所有應用程式視窗和程式的工具。或者您可以在 Windows 上使用深色背景介面。

如何關閉 Windows 8 工作列上的語言列

如何關閉 Windows 8 工作列上的語言列

Windows 8 上的語言列是一個微型語言工具列,旨在自動顯示在桌面螢幕上。然而,很多人想在工作列上隱藏這個語言欄。

如何為 Linksys 路由器設定 WEP、WPA、WPA2

如何為 Linksys 路由器設定 WEP、WPA、WPA2

無線連接是當今的必需品,因此,無線安全對於確保內部網路的安全至關重要。

Linksys 優化網路連線速度的技巧

Linksys 優化網路連線速度的技巧

最大限度地提高網路速度對於優化網路連線至關重要。您可以使用電腦、可上網的電視、遊戲機等獲得最佳的娛樂和工作體驗。