本篇文章更新時間:2022/11/10
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣新台幣 贊助支持。


自從寫了爬蟲撈 WordPress.org 的外掛來自己實作外掛搜尋資料庫後,我只要有看到有趣的外掛都會寫筆記在粉絲頁裡,然後同步更新網站

就在前幾天看到 CIDRAM (Classless Inter-Domain Routing Access Manager) 這款外掛後感到驚為天人~ 想說「這不就是我想實現的防火牆嗎!」

先前筆記過的一些方法,都只能說是自己客製化防火牆的第一版,還不到理想狀態。

[Nginx] 阻擋惡意請求來源(User-Agent)的方法
[VPS] WordPress 網站主機群防護升級的作法
[Fail2ban] 同步 Cloudflare WAF 防火牆封鎖 IP 清單的方法

簡單的去分析請求 Log 記錄檔案,判斷是否有符合惡意攻擊條件的 IP,然後把這些 IP 記錄起來逐一封鎖。

對,看到這,有概念的話會想到「那麼多個 IP 要封鎖,也會有效率跟容量的問題」,而且也很多同一個段的 IP 來,明顯是針對整段封鎖就可以預防的狀態,但只能一個一個 IP 來處理,不是很聰明。

這就要回到設計這個防火牆工具的出發點了: 「當時我還不知道怎樣可以更有效率一點,只能被動地看結果(Log)來處理。」

主要是卡在如果沒辦法高速的判斷 IP 來源,那整體請求反而就被拖慢了,這樣只會反應出成本過高的問題。

理想是「如果可以第一時間就知道這 IP 是誰?有沒有風險?就可以在他請求之前完成封鎖,連個閃失的機會都沒。」

結果我要的答案都在這個外掛裡了!

這款說是外掛,但其實是一套獨立運作的系統。操作起來還真是有工程的部分要處理,並非像常見的 Wordfence 這種後台登入後就可以設定、運作。

主要是下載好外掛後,會需要先到放置外掛中的 vault 目錄建立一個你才知道的 PHP 檔案,再來編輯這檔案輸入以下的程式,啟用系統後台:

require_once '/path/to/the/vault/directory/loader.php';
$CIDRAM = new \CIDRAM\CIDRAM\FrontEnd();
$CIDRAM->protect();
$CIDRAM->view();

然後瀏覽器輸入這個檔案的路徑連結,預設帳號 admin 密碼是 password,登入後建立過完整權限的使用者然後刪除這個 admin 帳號完成第一次使用的設定。

其實預設的設定已經有保護效果,接下來還要再把下面程式安插在 wp-config.php 裡。

require_once dirname(__FILE__).'/wp-content/plugins/cidram/vault/loader.php';
(new \CIDRAM\CIDRAM\Core())->protect();

記得要改上述引入檔案路徑! 他的說明雖然表示安裝好外掛就都處理好了,但我測試並沒有,可能也是因為最近才改版 v3,例外難免。所以手動來一次最直接! 文件裡也提到,如果可以使用 PHP 的 auto_prepend_file 環境參數來設定預載入,更可以有效的針對每一個 PHP 執行檔案來封鎖,不會限定是有先載入 wp-config.php 的執行流程。

更多的細節可以參考他們的說明頁面,雖然有中文翻譯,但品質實在不太好就是XD

下面附圖是他這套系統的後台測試 IP 的工具介面,可以模擬前端請求的 IP 是否會被封鎖,測試了幾個機房的 IP 都有準確的判斷到並封鎖,處理的速度也很快,真的不錯~

CIDRAM

這款開源防火牆 CIDRAM 判斷的邏輯也很彈性不是無差別封鎖,像是針對常見的黑名單請求來源(User Agent)還有非正常瀏覽者會使用的「機房 IP」,再來是「時常會發出攻擊被列入黑名單的 ISP 網段」與「判斷是否是白名單的好爬蟲」... 而且還滿常更新這些資料庫,功能強大好用啊!


Share:

作者: Chun

資訊愛好人士。主張「人人都該為了偷懶而進步」。期許自己成為斜槓到變進度條 100% 的年輕人。[///////////____36%_________]

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


文章
Filter
Apply Filters
Mastodon