如何使用 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 文件以了解可以套用的其他安全性選項。

希望你成功。


什麼是惡意軟體 HackTool:Win32/Keygen?如何去除?

什麼是惡意軟體 HackTool:Win32/Keygen?如何去除?

您是否掃描過您的設備並發現它感染了 HackTool:Win32/Keygen?在您使用破解或金鑰產生器啟動進階軟體後,Windows Defender 可能會自動警告您有關此惡意軟體的存在。

在 Windows 10 上建立備份和還原點(Restore Point)的說明

在 Windows 10 上建立備份和還原點(Restore Point)的說明

探索如何在Windows 10上建立和管理還原點,這是一項有效的系統保護功能,可以讓您快速還原系統至先前狀態。

在 Windows 10 中開啟裝置管理員的 15 種方法

在 Windows 10 中開啟裝置管理員的 15 種方法

您可以使用以下 15 種方法輕鬆在 Windows 10 中開啟<strong>裝置管理員</strong>,包括使用命令、捷徑和搜尋。

Windows「顯示桌面」的 10 種超快速方法

Windows「顯示桌面」的 10 種超快速方法

很多人不知道如何快速顯示桌面,只好將各個視窗一一最小化。這種方法對於用戶來說非常耗時且令人沮喪。因此,本文將向您介紹Windows中快速顯示桌面的十種超快速方法。

如何使用 Windows Repair 修復 Windows 錯誤

如何使用 Windows Repair 修復 Windows 錯誤

Windows Repair 是一款有效的 Windows 錯誤修復工具,幫助使用者修復與 Internet Explorer、Windows Update 和其他重要程式相關的錯誤。

如何在 Windows 10 中開啟資料夾選項或檔案總管選項

如何在 Windows 10 中開啟資料夾選項或檔案總管選項

您可以使用檔案總管選項來變更檔案和資料夾的工作方式並控制顯示。掌握如何在 Windows 10 中開啟資料夾選項的多種方法。

有關在 Windows 10 上刪除使用者帳戶的 5 種方法的說明

有關在 Windows 10 上刪除使用者帳戶的 5 種方法的說明

刪除不使用的使用者帳戶可以顯著釋放記憶體空間,並讓您的電腦運行得更流暢。了解如何刪除 Windows 10 使用者帳戶的最佳方法。

如何使用Bootsect /nt60將VBC更新為BOOTMGR

如何使用Bootsect /nt60將VBC更新為BOOTMGR

使用 bootsect 命令能夠輕鬆修復磁碟區引導程式碼錯誤,確保系統正常啟動,避免 hal.dll 錯誤及其他啟動問題。

Windows 11 中的存檔應用程式功能是什麼?應該啟用還是停用它?

Windows 11 中的存檔應用程式功能是什麼?應該啟用還是停用它?

存檔應用程式是一項功能,可以自動卸載您很少使用的應用程序,同時保留其關聯的檔案和設定。了解如何有效利用 Windows 11 中的存檔應用程式功能。

如何在 Windows 10 上為 BlueStacks 5 啟用虛擬化 (VT)

如何在 Windows 10 上為 BlueStacks 5 啟用虛擬化 (VT)

要啟用虛擬化,您必須先進入 BIOS 並從 BIOS 設定中啟用虛擬化,這將顯著提升在 BlueStacks 5 上的效能和遊戲體驗。