[研究]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」 |
拒 絕 |
[研究]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位址及網域限制」設定功能
如果有,
最小值 (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)傳輸加密