iT邦幫忙

2023 iThome 鐵人賽

DAY 2
0

上一篇我們介紹到了iNODE NINJA 的 WAF 規則的相關設計思維,在瞭解了這些規則以後,接下來我們就來實戰iNODE NINJA的WAF動作與判斷規則。這次我們主要以觸發的特徵條件來作為測試,在WAF規則中我們先選擇了三個與阻擋或轉址相關的動作來做介紹。:

  • Deny
  • Cookie / JS Challenge
  • Redirect

WAF觸發特徵介紹

首先我們先來研究下方觸發這些像是阻擋之類的條件的規則,也就是下方的特徵的部分,對於欄位判斷上是AND和OR我們在前一篇已經介紹過了,所以這裡就直接僅針對欄位的設定細節作出說明。

◇來源IP

來源IP,就是阻擋IP段。如果是預設的0.0.0.0/0就是預設阻擋全世界的IP,此外經過測試如果只要阻擋單一IP就需要加上 /32的prefix,當然也可以阻擋一整個網段,例如一整段Class C (/24) IP、甚至是其他的prefix大小等等。
https://ithelp.ithome.com.tw/upload/images/20230921/2016083972c8QKqYal.png

圖上的IP設置就是阻擋136.20.30.80、111.111.111.111、還有1.2.3.0 - 1.2.3.255這些IP來源的訪問。

◇預設設置

來源IP方面也可以留空格,效用與預設的0.0.0.0/0是一樣的,因為都是阻擋所有IP來源。

◇錯誤設置

此外Prefix的部分需要確定IP設置是正確的,例如1.2.3.1/24這樣就是錯誤的設置,就沒辦法被成功設定上去,系統也會跳出警告。
https://ithelp.ithome.com.tw/upload/images/20230921/20160839x3VCLLQYte.png

◇請求URI

請求URI的部分自然就是請求的路徑,在使用場景上大概就是針對大量註冊帳號的路徑做出特別的保護,例如ithome.2etrial.com/register的路徑要做出特別的保護了話,就可以在這裡填入[/register$]
https://ithelp.ithome.com.tw/upload/images/20230921/20160839yPht5lj3gB.png
這樣就可以針對這個註冊的路徑做出比較嚴格的速率限制之類的,例如普通網站一秒鐘刷60次就視為攻擊阻擋,但是註冊的這個頁面就需要更嚴格,一秒鐘刷30次就阻擋之類的。

◇請求表頭

請求表頭部分可以判斷由客戶端攜帶的表頭,另外這裡的設計是只要表頭帶有該字串就會觸發到,例如打*[user-agent:firefox]*,那麼只要表頭有帶firefox UA就可以觸發到這條規則。例如下面這條就可以被觸發,因為尾端有[Firefox]的字串。

[
User-Agent	 :Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/117.0
]

所以當使用者用Google Chrome瀏覽器訪問就沒問題。
https://ithelp.ithome.com.tw/upload/images/20230921/20160839v1TB9rQAL1.png

◇Request Headers Not Exist

下方的Request Headers Not Exist則是可以根據特徵做出反向名單,例如您的APP訪問網站時會帶[user-agent:GamingAPP]這個字串的UA,如果沒帶這個UA訪問時就會重定向跳轉到要下載APP的訪問頁面。
https://ithelp.ithome.com.tw/upload/images/20230921/20160839WB3fqPwsKc.png

◇來源國家

來源國家就是選擇哪些國家訪問時會被阻擋之類的動作,如果你要反向選擇全部話,就按上方左右箭頭的按鍵即可
https://ithelp.ithome.com.tw/upload/images/20230921/20160839c4VngLci6m.png

(下圖顯示。按下後就會反向選擇全部)https://ithelp.ithome.com.tw/upload/images/20230921/201608396OKMc4Qtx2.png

◇線路商

這裡就是阻擋指定線路商的訪問來源,這部分的名稱需要完全吻合。因此需要先把IP拿去 ip2location這裡的資料庫做查詢,確認該ISP的名稱後再將其填入,例如這次我們要填寫的就是中華電信的ISP,這時候就要填入**[Chunghwa Telecom Co. Ltd.]。**
https://ithelp.ithome.com.tw/upload/images/20230921/20160839fuiSdaMIp2.png
https://ithelp.ithome.com.tw/upload/images/20230921/20160839sAG9rJDCBZ.png

◇ Proxy Type

Proxy Type的部分則是透過比對也是上述的資料庫,可以在這裡辨識出採用VPN、Tor等等服務的IP。
https://ithelp.ithome.com.tw/upload/images/20230921/20160839eQ3yrRflaf.png

◇ 條件-行為

  • 請求方法
    沒有特別指定就是全部列入,一般來說是不用特別指定。
  • 請求速率
    這就是觸發這條WAF的上限,這裡是以IP為基準的,因此如果多人共用同一IP或是都位於同一個電信級NAT後方的設備,就會都一起命中這條WAF而遭到阻擋或限制,如果你要指定一秒超過60次請求就阻擋就在這裡填入60/1
    https://ithelp.ithome.com.tw/upload/images/20230921/201608399swi3oFral.png

◇ 條件-Exclusion

Exclusion的部分則是例外,例如您在前面阻擋IP的部分設定了1.2.3.0/24這個條件,但是你特別開放1.2.3.99這個IP可以訪問,就可以特別寫在這裡實現例外的效果。
https://ithelp.ithome.com.tw/upload/images/20230921/20160839yGdrpjp3qv.png

◇ No Request URI

這裡也可針對 /register這個路徑底下都做出限制,但是針對/register/captcha則不受到這個限制,那麼也可以透過撰寫這裡來做出例外限制。
https://ithelp.ithome.com.tw/upload/images/20230921/20160839NytpcgJAOi.png

◇ Not Request Headers

Not Request Headers的部分也是一樣,可以針對例外的Header做出其他的條件
https://ithelp.ithome.com.tw/upload/images/20230921/20160839k2b9qtFQiz.png

WAF觸發特徵實測

講述完了相關的觸發規則,相信大家都頭暈了,沒想到iNODE NINJA的WAF規則是這麼的詳盡,真不愧是主打的功能,但介紹完這些阻擋的條件特徵後,接下來還有前面提到的三個動作要來實測。

◇ Deny

https://ithelp.ithome.com.tw/upload/images/20230921/201608391o7ve9pbFI.png
Deny 就是阻止,這個動作我們在前面創建HTML頁面有提到過了,就是觸發條件就會跳出阻擋的畫面,並且都會帶上CaseID、時間軸、IP等等那些相關資訊,訪問的狀態碼也會是403。

◇ Cookie / JS Challenge

https://ithelp.ithome.com.tw/upload/images/20230921/20160839tbgH28cEHG.png
Cookie / JS Challenge就是會在訪問時先對用戶的瀏覽器確認是否可以正常存取Cookie和Javascript,因為正常的瀏覽器和存取方式應該都要能夠正常處理這些,如果無法存取,流量就會被阻擋在CDN這端,避免源站遭到大量流量的存取,

◇ Redirect

https://ithelp.ithome.com.tw/upload/images/20230921/201608393vIQnqNaZk.png
https://ithelp.ithome.com.tw/upload/images/20230921/20160839vBAbMkbZzl.pnghttps://ithelp.ithome.com.tw/upload/images/20230921/20160839csLwdlDTKM.png
Redirect則是可以在觸發指定的條件後跳轉到指定的頁面,像是如果是來自日本的ip訪問來源就跳轉到www.google.com這樣的設計。

結論

iNODE NINJA平台的WAF的規則其實還有很多,今天寫了到這,其他會在下面幾篇慢慢探討並紀錄其他功能。


上一篇
[Day17]初探iNODE NINJA的『WAF規則』
下一篇
[Day19] WAF規則-動作測試2
系列文
10年專業ISP服務商之蛻變:從無到有自建屬於自己的CDN服務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言