2025年11月5日 星期三

[研究]GCB,IIS 「IP位址及網域限制」的「動態 IP 限制設定」

[研究]GCB,IIS 「IP位址及網域限制」的「動態 IP 限制設定」

2025-11-05

********************************************************************************

項次TWGCB-ID類別原則設定名稱說明設定位置設定路徑GCB設定值
35TWGCB-04-014-0035要求篩選與其他限制模組動態IP限制▪這項原則設定決定是否藉由限制同一IP同時開啟連線數或限制同一IP在一段期間內發送之最大要求數量
▪透過動態IP限制功能,當超過限制時,IIS就暫時不處理來自該IP的請求,直接傳回HTTP錯誤以節省資源,不再耗費頻寬或CPU、記憶體處理要求,可降低DDoS攻擊影響
▪動態IP限制預設為停用
伺服器IIS管理員\伺服器\IIS\IP位址及網域限制\動作\開啟功能\動作\編輯動態限制設定啟用動態IP限制功能,並依需求設定「根據同時要求的數目拒絕IP位址」與「根據超過一段時間之要求數目拒絕IP位址」參數

如果沒有此設定功能,參考下面新增

[研究]IIS 10新增「IP位址及網域限制」設定功能

如果有,



上圖幾個欄位的設定數值的限制為 Imt64
最小值 (Int64.MinValue) -2^63 = -9,223,372,036,854,775,808
最大值 (Int64.MaxValue) 2^63 - 1 = 9,223,372,036,854,775,807

動態 IP 限制設定

根據同時要求的數目拒絕IP位址(C)

同時要求的最大數目(N):5

根據超過一段時間之要求數目拒絕 IP位址(R)

要求的最大數目(M):20

時間間隔(以毫秒表示)(T):200

僅啟用記錄模式(L)

確定 取消

********************************************************************************

IIS 的 「動態 IP 限制設定」畫面,

「根據同時要求的數目拒絕IP位址(C)」若超過「同時要求的最大數目(N)」設定值會發生何事?參考資料來源?

「根據超過一段時間之要求數目拒絕 IP位址(R)」若超過「要求的最大數目(M)」和「時間間隔(以毫秒表示)(T)」設定值會發生何事?參考資料來源?

ChatGPT

一、功能位置

IIS 管理員 → 伺服器或網站層級 → IP 位址及網域限制 → 動作窗格 → 編輯動態限制設定

二、設定項目與行為解釋

(1) 「根據同時要求的數目拒絕 IP 位址 (Concurrent Requests)」

項目 說明
設定值名稱 Deny IP Address based on number of concurrent requests
對應參數 <denyByConcurrentRequests enabled="true" maxConcurrentRequests="N" />
行為 當某一個 IP 位址在同一時間(即並發)發出 超過 N 個尚未完成的 HTTP 要求 時,IIS 會立即拒絕該 IP 之後的所有新連線要求。
拒絕狀態碼 回應 HTTP 403.502 – Forbidden (Dynamic IP Restriction)
封鎖時間 若同時設定了「封鎖 IP 位址的時間 (D)」,IIS 會將該 IP 加入暫時封鎖清單,直到封鎖時間到期。否則封鎖僅在超出期間有效。

🔹 實際效果:

  • 此設定可防止同一 IP 同時開太多連線(例如 DoS 攻擊或惡意爬蟲)。
  • 當部分連線完成後(即同時數量下降到閾值以下),該 IP 就可再次提出請求。

(3) 「根據超過一段時間之要求數目拒絕 IP 位址 (Requests over time)」

項目 說明
設定值名稱 Deny IP Address based on number of requests over a period of time
對應參數 <denyByRequestRate enabled="true" maxRequests="M" requestIntervalInMilliseconds="T" />
行為 當某 IP 在 T 毫秒的時間間隔 內發出超過 M 個要求,IIS 會暫時封鎖該 IP。
拒絕狀態碼 同樣為 HTTP 403.502 – Forbidden (Dynamic IP Restriction)
封鎖時間 若設定了「封鎖 IP 位址的時間 (D)」,則該 IP 會被封鎖 D 秒;未設定則封鎖持續到請求速率恢復正常為止。

🔹 實際效果:

  • 此設定限制單位時間內的請求數,類似「節流 (throttling)」。
  • 常用於防止短時間高頻請求造成的伺服器壓力或暴力破解行為。

(3)「啟用僅日誌記錄模式」:規定如果違反了前面的規則之一,則記錄該事件,並允許請求而不是拒絕請求。

三、補充:封鎖 IP 行為

項目 說明
封鎖類型 動態封鎖(非永久),IIS 會維護一個暫時封鎖的 IP 清單。
解除條件 達到封鎖時間、或請求速率/同時數回復正常。
事件記錄 可選擇是否「記錄拒絕的要求」,會寫入 IIS 日誌檔 (%SystemDrive%\inetpub\logs\LogFiles)。

四、參考資料來源(官方)

使用動態IP限制
https://learn.microsoft.com/zh-tw/iis/manage/configuring-security/using-dynamic-ip-restrictions

動態 IP 安全性 < dynamicIpSecurity>
https://learn.microsoft.com/zh-tw/iis/configuration/system.webserver/security/dynamicipsecurity/
Dynamic IP Security <dynamicIpSecurity>
https://learn.microsoft.com/en-us/iis/configuration/system.webserver/security/dynamicipsecurity/

IIS 中的 HTTP 狀態碼
https://learn.microsoft.com/zh-tw/troubleshoot/developer/webapps/iis/health-diagnostic-performance/http-status-code
HTTP status codes in IIS
https://learn.microsoft.com/en-us/troubleshoot/developer/webapps/iis/health-diagnostic-performance/http-status-code

IP Address and Domain Restrictions
https://go.microsoft.com/fwlink/?LinkId=210513

五、範例 Web.config 設定對應

<system.webServer>
  <security>
    <dynamicIpSecurity enableLoggingOnlyMode="false">
      <!-- 同時要求數超過 10 就拒絕 -->
      <denyByConcurrentRequests enabled="true" maxConcurrentRequests="10" />
      <!-- 1 秒內超過 50 個要求就拒絕 -->
      <denyByRequestRate enabled="true" maxRequests="50" requestIntervalInMilliseconds="1000" />
      <!-- 封鎖時間 60 秒 -->
      <denyAction action="Forbidden" />
    </dynamicIpSecurity>
  </security>
</system.webServer>

預設情況下,你無法在網站的 Web.config 中有效地改變 IIS 管理員 GUI 裡的動態 IP 限制值。

若你在 Web.config 嘗試設定更高或不同的數值,會被忽略。(除非特別開啟可以覆蓋設定)

********************************************************************************

建議照要求設定。

(完)

沒有留言:

張貼留言