2025年11月5日 星期三

[研究]IIS 10套用GCB設定路徑圖解(4)要求篩選與其他限制模組

[研究]IIS 10套用GCB設定路徑圖解(4)要求篩選與其他限制模組

2025-11-04

Windows Server 從Windows Server 2016開始,IIS為10.0版,後續 Windows Server 2019, Windows Server 2022, Windows Server 2025 也都是 10.0版,大版本號碼相同,小版本可能不同,畫面幾乎相同。

政府組態基準(Government Configuration Baseline,簡稱GCB)

TWGCB-04-014_Microsoft IIS 10政府組態基準說明文件v1.1_1141002

https://www.nics.nat.gov.tw/core_business/cybersecurity_defense/GCB/GCB_Documentation/

https://download.nics.nat.gov.tw/api/v4/file-service/UploadFile/attachfilegcb/TWGCB-04-014_Microsoft%20IIS%2010%E6%94%BF%E5%BA%9C%E7%B5%84%E6%85%8B%E5%9F%BA%E6%BA%96%E8%AA%AA%E6%98%8E%E6%96%87%E4%BB%B6v1.1_1141002.pdf

https://download.nics.nat.gov.tw/api/v4/file-service/UploadFile/attachfilegcb/TWGCB-04-014_Microsoft%20IIS%2010%E6%94%BF%E5%BA%9C%E7%B5%84%E6%85%8B%E5%9F%BA%E6%BA%96%E8%AA%AA%E6%98%8E%E6%96%87%E4%BB%B6v1.1_1141002.docx

類別項次 類別 項數 起訖項次編號 合計
1 基本設定 7 No.1 ~ 7 53
2 設定驗證與授權 5 No.8 ~ 12
3 ASP.NET設定建議 12 No.13 ~ 24
4 要求篩選與其他限制模組 11 No.25 ~ 35
5 IIS記錄 4 No.36 ~ 39
6 FTP要求 2 No.40 ~ 41
7 傳輸加密 12 No.42 ~ 53

IIS 10.0 政府組態基準列表

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
25 TWGCB-04-014-0025 要求篩選與其他限制模組 允許的內容長度上限 ▪這項原則設定決定由用戶端傳送至伺服器之HTTP request之長度上限,以位元組為單位
▪當內容長度超過上限時,IIS將會記錄404.13狀態在日誌檔中
▪限制允許之內容長度,可避免大量之異常請求而導致網站服務異常,以維持網站可用性,亦可降低遭受緩衝區溢位攻擊之風險
▪預設值為30,000,000位元組,設為0代表長度無限制
伺服器 IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\編輯功能設定\要求限制\允許的內容長度上限(位元組) 30,000,000以下,但須大於0




項次 25、26、27、29預設值和 GCB 建議值相同,不討論。
項次 28 GCB建議【不勾選「允許高位元字元」】,會導致
  • 網頁請求直接返回 HTTP 404.11 – URL 含有高位元字元
  • 或 HTTP 400 – 錯誤的要求 (Bad Request)
  • URL或URL中檔案名稱含繁體中文、日文、韓文、歐洲語系被禁止
技術面而言,可以修改而符合GCB;實務面而言,最好考慮歷史包袱、有多少地方要改掉、有多少人力、時間可以進行修改。或可考慮

[研究]IIS的「允許高位元字元」無法被 Web.config 覆蓋,為何 HSTS 的 max-age 可被覆蓋?

項次 31 GCB建議【不勾選「允許未列出的副檔名」】,基本上要一開始就100%列出副檔名白名單,是無法保證做到的,故可能會導致某些功能異常,在用戶大量、穩定優先考慮的網站,建議考慮排除。

[研究]ASP.NET WebForm 網站,IIS 10 中「要求篩選」允許的所有副檔名應該包含甚麼?

[研究]ASP.NET WebForm 網站,IIS 10 中「要求篩選」畫面預設所列的副檔名用途是甚麼?

[研究]ASP.NEt WebForm 網站,「要求篩選」評估:運作過程中,會否有動態產生的副檔名 ?

[研究]IIS的「允許高位元字元」無法被 Web.config 覆蓋,為何 HSTS 的 max-age 可被覆蓋?

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
26 TWGCB-04-014-0026 要求篩選與其他限制模組 URL長度上限 ▪這項原則設定決定URL字串(不包含查詢字串)之長度上限,以位元組為單位
▪當URL長度超過上限時,IIS將會記錄404.14狀態在日誌檔中
▪限制可接受之URL最大長度,可避免因過長之URL導致伺服器異常
▪預設值為4,096位元組
伺服器 IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\編輯功能設定\要求限制\URL長度上限(位元組) 4096以下,但須大於0

詳見上面項次25說明。
********************************************************************************

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
27 TWGCB-04-014-0027 要求篩選與其他限制模組 查詢字串上限 ▪這項原則設定決定查詢字串之長度上限,以位元組為單位
▪當查詢字串超過上限時,IIS將會記錄404.15狀態在日誌檔中
▪設定可接受的查詢字串長度,以避免因過長之查詢字串導致應用程式集區發生異常
▪預設值為2,048位元組
伺服器 IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\編輯功能設定\要求限制\查詢字串上限(位元組) 2048以下,但須大於0

詳見上面項次25說明。
********************************************************************************

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
28 TWGCB-04-014-0028 要求篩選與其他限制模組 允許高位元字元 ▪這項原則設定決定查詢字串是否允許使用高位元字元(非ASCII字元)。高位元字元之範例包括:Ж、Ы或Я
▪當查詢字串因含有高位元字元而被拒絕時,IIS將會記錄404.12狀態在日誌檔中
▪禁止使用高位元字元,可確保URL中不會出現非ASCII文字,以避免發生輸入特殊字元或跳脫命令字元等攻擊語法
▪預設值為允許高位元字元
伺服器 IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\編輯功能設定\一般\不勾選「允許高位元字元」 不允許

詳見上面項次25說明。
********************************************************************************

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
29 TWGCB-04-014-0029 要求篩選與其他限制模組 允許雙重逸出 ▪這項原則設定決定是否允許URL雙重逸出,即是否允許URL請求使用雙重編碼技術
▪有些網站攻擊可以將URL請求利用雙重編碼技術(例如將”../”雙重編碼成為"%252E%252E%252F"),以繞過安全防護機制或造成應用程式非預期之反應
▪設定為不允許雙重逸出時,IIS會將URL請求利用正規化(Normalize)加以還原其原字元,並執行兩次,如第一次與第二次之結果不同,該請求就會被拒絕,並記錄404.11狀態在日誌檔中
▪預設值為不允許
伺服器 IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\編輯功能設定\一般\不勾選「允許雙重逸出」 不允許

詳見上面項次25說明。
********************************************************************************

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
30 TWGCB-04-014-0030 要求篩選與其他限制模組 HTTP TRACE方法 ▪這項原則設定決定允許或拒絕使用HTTP TRACE方法
▪HTTP TRACE方法會傳回用戶端提交的HTTP請求內容,攻擊者可利用此方法繞過HttpOnly限制,來存取HTTP標頭中所包含的機敏資訊(如驗證資料或Cookie)
▪預設值為允許
伺服器 IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\HTTP指令動詞\動作\拒絕指令動詞\輸入「TRACE」





註:要重新啟動 IIS 服務或網站才能生效。

[研究]GCB,IIS 設定「拒絕 TRACE」影響

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
31 TWGCB-04-014-0031 要求篩選與其他限制模組 允許未列出的副檔名 ▪這項原則設定決定是否允許未列出的副檔名在網頁伺服器上被執行
▪限制網頁伺服器只能執行特定之檔案類型,可提升安全性
▪在取消勾選「允許未列出的副檔名」後,必須將網站中所有使用到之副檔名(例如:.asax、.cs及.html等)加入允許清單,網頁才能正常運作
伺服器 ▪取消勾選:
IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\編輯功能設定\一般\不勾選「允許未列出的副檔名」
▪新增允許副檔名:
IIS管理員\伺服器\IIS\要求篩選\動作\開啟功能\動作\允許副檔名
不允許

詳見上面項次25說明,以及下面說明。

下圖,所有允許的要逐一加入,若有漏,可能就有功能異常。相次31是否要符合 GCB 或排除要考慮。



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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
32 TWGCB-04-014-0032 要求篩選與其他限制模組 處理常式權限 ▪這項原則設定決定處理常式(Handler)可賦予之權限(包含無、讀取、寫入、指令碼及執行等5種選項)
▪設定處理常式不可同時具有「寫入」與「執行/指令碼」之權限,以降低在伺服器上執行惡意程式碼之風險
▪處理常式預設擁有「讀取」與「指令碼」權限
伺服器 IIS管理員\伺服器\管理\設定編輯器\動作\開啟功能\區段\system.webServer\handlers\accessPolicy 不能同時擁有執行/指令碼與寫入權限




預設值是【Read,Script】,GCB建議是【不能同時擁有執行/指令碼與寫入權限】,符合。
********************************************************************************

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
33 TWGCB-04-014-0033 要求篩選與其他限制模組 允許未指定的ISAPI模組 ▪這項原則設定決定是否允許未指定之ISAPI模組在此伺服器上執行
▪不允許未指定之ISAPI模組,可防止惡意使用者將未經授權之ISAPI二進制檔案複製到網頁伺服器中執行,以降低感染惡意程式之風險
伺服器 IIS管理員\伺服器\管理\設定編輯器\動作\開啟功能\區段\system.webServer\security\isapiCgiRestriction\notListedIsapisAllowed False



預設值和 GCB 相符,都是 False。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
34 TWGCB-04-014-0034 要求篩選與其他限制模組 允許未指定的CGI模組 ▪這項原則設定決定是否允許未指定之CGI擴充模組在伺服器上執行
▪不允許未指定之CGI模組,可防止惡意使用者執行含有惡意指令碼的CGI程式,以降低感染惡意程式之風險
伺服器 IIS管理員\伺服器\管理\設定編輯器\動作\開啟功能\區段\system.webServer\security\isapiCgiRestriction\notListedCgisAllowed False

詳見項次34的圖,預設值和 GCB 相符,都是 False。

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
35 TWGCB-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


這兩者超過會回應 HTTP 403.502 – Forbidden (Dynamic IP Restriction)


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


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

https://shaurong.blogspot.com/2025/11/gcbiis-ip-ip.html


預設值與 GCB 建議值不符。
預設沒有限制,GCB建議【啟用動態IP限制功能,並依需求設定「根據同時要求的數目拒絕IP位址」與「根據超過一段時間之要求數目拒絕IP位址」參數】,並沒有給建議數值,其實也很難給建議數值,GCB把承擔後果責任丟給 IIS 管理員。設太小若使用者連不上會被抱怨,可能業務相關工作無法進行,設太大不安全,設很大有設和沒設差不多。

「僅啟用記錄模式(L)」預設沒勾選,GCB也沒建議勾選,且勾選後前2設定值超過也會放行,有失去設定的意義。

如果一定要設,敝人會設定很大的值吧,避免使用者無法使用系統,避免業務相關工作無法進行。


********************************************************************************
小結

項次 25、26、27、29、32、33、34 預設值和 GCB 建議值相同,不討論。

項次 28【不勾選「允許高位元字元」】對非純英文網站 (例如:中文網站),建議排除。
項次 30【拒絕 TRACE】正式環境建議設定,開發機建議不要。
項次 31【不勾選「允許未列出的副檔名」】白名單可能無法完善,建議排除。

(完)

相關

[研究]IIS 10套用GCB設定路徑圖解(1)基本設定

[研究]IIS 10套用GCB設定路徑圖解(2)設定驗證與授權

[研究]IIS 10套用GCB設定路徑圖解(3)ASP.NET設定建議

[研究]IIS 10套用GCB設定路徑圖解(4)要求篩選與其他限制模組

[研究]IIS 10套用GCB設定路徑圖解(5)IIS記錄

[研究]IIS 10套用GCB設定路徑圖解(6)FTP要求

[研究]IIS 10套用GCB設定路徑圖解(7)傳輸加密


沒有留言:

張貼留言