2025年11月3日 星期一

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

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

2025-11-03

除項次42外,項次43 ~ 項次 53 可跳到本文最後,用別的方式處理較快。

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設定值
42 TWGCB-04-014-0042 傳輸加密 HSTS標頭 ▪這項原則設定決定是否在HTTP回應標頭設定使用HTTP嚴格傳輸安全(HTTP Strict Transport Security,以下簡稱HSTS)
▪HSTS主要用來宣告瀏覽器與伺服器之間的通訊方式必須強制使用TLS/SSL加密通道,只要從伺服器端送出一個HSTS標頭(Header)給瀏覽器,就可以告訴瀏覽器在未來某段時間內一律使用SSL連接該網站(可設定包含所有子域名網站),如果有發生憑證失效之情況,使用者將無法瀏覽該網站,如此一來便可大幅減少中間人攻擊之問題發生
伺服器 ▪IIS管理員\伺服器\IIS\HTTP回應標頭\動作\開啟功能\新增
▪名稱:Strict-Transport-Security
▪值:max-age=480(已使用HTTPS連線的網站480秒內不再檢查)
▪名稱:Strict-Transport-Security
▪值:max-age設為480以上







上面 HSTS 是設定到「伺服器」層級,但HSTS可以靠 Web.Config 設定,是「網站」層級,會比較好。但 GCB既然是「伺服器」層級,最好也設定一下。

<configuration>
<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Strict-Transport-Security" value="max-age=31536000" />
    </customHeaders>
  </httpProtocol>
</system.webServer>
</configuration>


GCB建議max-age設定480以上,但RFC 6797(“HTTP Strict Transport Security (HSTS)”)的定義,關於 Strict-Transport-Security: max-age=<seconds> 的 max-age 沒有明文規定一個上限值,實務上多數安全建議會使用 1 年(31536000 秒),設定過長的 max-age,而網站/憑證出現問題(如憑證到期、子域未支援 HTTPS 等),可能造成使用者無法回退到 HTTP 或難以修正。

[研究]GCB,IIS和Web.config都設定HSTS值後最終 max-age值為何?https://shaurong.blogspot.com/2025/11/gcbiiswebconfighsts-max-age.html

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
43 TWGCB-04-014-0043 傳輸加密 SSLv2 ▪這項原則設定決定是否停用SSLv2加密協定
▪SSLv2存在已知弱點,為提升安全性應停用SSLv2加密協定
regedit ▪執行以下步驟:
(1)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server\Enabled」機碼是否存在,存在時,確認Enabled類型為DWord且資料欄位值為0,不存在時,請於SSL 2.0下新增機碼且命名為Server,並新增DWord值,名稱設為Enabled,資料欄位值設為0
(2)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server\DisabledByDefault」機碼是否存在,存在時,確認DisabledByDefault類型為DWord且資料欄位值為1,不存在時,請於SSL 2.0下新增機碼且命名為Server,並新增DWord值,名稱設為DisabledByDefault,資料欄位值設為1
(3)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client\Enabled」機碼是否存在,存在時,確認Enabled類型為DWord且資料欄位值為0,不存在時,請於SSL 2.0下新增機碼且命名為Client,並新增DWord值,名稱設為Enabled,資料欄位值設為0
(4)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client\DisabledByDefault」機碼是否存在,存在時,確認DisabledByDefault類型為DWord且資料欄位值為1,不存在時,請於SSL 2.0下新增機碼且命名為Client,並新增DWord值,名稱設為DisabledByDefault,資料欄位值設為1
停用

HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server\Enabled 
HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server\DisabledByDefault
HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client\Enabled
HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client\DisabledByDefault
等4個於Windows Server 2019預設不存在,只到
HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

沒有預設值時,預設是停用。

註:本測試系統使用Windows Server 2019 (updated Nov 2022) (x64) - DVD (Chinese-Traditional)(2022-11-15)安裝,不保證早期 Windows Server 2019 或更早 Windows Server 2016 的 SSLv2 也是預設停用。
停用上述機碼的 .reg 匯入檔案如下:43.reg

Windows Registry Editor Version 5.00
; 停用 SSL 2.0 Server
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001

; 停用 SSL 2.0 Client
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client]
"Enabled"=dword:00000000
"DisabledByDefault"=dword:00000001






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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
44 TWGCB-04-014-0044 傳輸加密 SSLv3 ▪這項原則設定決定是否停用SSLv3加密協定
▪目前已知SSLv3存在POODLE弱點,為提升安全性應停用SSLv3加密協定
regedit ▪執行以下步驟:
(1)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server\Enabled」機碼是否存在,存在時,確認Enabled類型為DWord且資料欄位值為0,不存在時,請於SSL 3.0下新增機碼且命名為Server,並新增DWord值,名稱設為Enabled,資料欄位值設為0
(2)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server\DisabledByDefault」機碼是否存在,存在時,確認DisabledByDefault類型為DWord且資料欄位值為1,不存在時,請於SSL 3.0下新增機碼且命名為Server,並新增DWord值,名稱設為DisabledByDefault,資料欄位值設為1
(3)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client\Enabled」機碼是否存在,存在時,確認Enabled類型為DWord且資料欄位值為0,不存在時,於SSL 3.0下新增機碼且命名為Client,並新增Dword值命名為Enabled,最後資料欄位值設定為0
(4)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client\DisabledByDefault」機碼是否存在,存在時,確認DisabledByDefault類型為DWord且資料欄位值為1,不存在時,請於SSL 3.0下新增機碼且命名為Client,並新增DWord值,名稱設為DisabledByDefault,資料欄位值設為1
停用



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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
45 TWGCB-04-014-0045 傳輸加密 TLS 1.0 ▪這項原則設定決定是否停用TLS 1.0加密協定
▪SSL加密協定與早期版本的TLS 1.0在2016年6月30日之後,已被視為不安全之加密協定
regedit 執行以下步驟:
(1)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server\Enabled」機碼是否存在,存在時,確認Enabled類型為DWord且資料欄位值為0,不存在時,請於TLS 1.0下新增機碼且命名為Server,並新增DWord值,名稱設為Enabled,資料欄位值設為0
(2)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server\DisabledByDefault」機碼是否存在,存在時,確認DisabledByDefault類型為DWord且資料欄位值為1,不存在時,請於TLS 1.0下新增機碼且命名為Server,並新增DWord值,名稱設為DisabledByDefault,資料欄位值設為1
(3)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client\Enabled」機碼是否存在,存在時,確認Enabled類型為DWord且資料欄位值為0,不存在時,請於TLS 1.0下新增機碼且命名為Client,並新增DWord值,名稱設為Enabled,資料欄位值設為0
(4)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client\DisabledByDefault」機碼是否存在,存在時,確認DisabledByDefault類型為DWord且資料欄位值為1,不存在時,請於TLS 1.0下新增機碼且命名為Client,並新增DWord值,名稱設為DisabledByDefault,資料欄位值設為1
停用

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
46 TWGCB-04-014-0046 傳輸加密 TLS 1.1 ▪這項原則設定決定是否停用TLS 1.1加密協定 ▪TLS 1.1加密協定不支援較安全之新加密演算法,建議停用TLSv1.1以降低資訊洩露之風險 regedit 執行以下步驟:
(1)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server\Enabled」機碼是否存在,存在時,確認Enabled類型為DWord且資料欄位值為0,不存在時,請於TLS 1.1下新增機碼且命名為Server,並新增DWord值,名稱設為Enabled,資料欄位值設為0
(2)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server\DisabledByDefault」機碼是否存在,存在時,確認DisabledByDefault類型為DWord且資料欄位值為1,不存在時,請於TLS 1.1下新增機碼且命名為Server,並新增DWord值,名稱設為DisabledByDefault,資料欄位值設為1
(3)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client\Enabled」機碼是否存在,存在時,確認Enabled類型為DWord且資料欄位值為0,不存在時,請於TLS 1.1下新增機碼且命名為Client,並新增DWord值,名稱設為Enabled,資料欄位值設為0
(4)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client\DisabledByDefault」機碼是否存在,存在時,確認DisabledByDefault類型為DWord且資料欄位值為1,不存在時,請於TLS 1.1下新增機碼且命名為Client,並新增DWord值,名稱設為DisabledByDefault,資料欄位值設為1
停用

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
47 TWGCB-04-014-0047 傳輸加密 TLS 1.2 ▪這項原則設定決定是否啟用TLS 1.2加密協定
▪TLS 1.2為較新之加密協定,用以保護HTTP傳輸之機密性與完整性
regedit 執行以下步驟:
(1)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server\Enabled」機碼是否存在,存在時,確認Enabled類型為DWord且資料欄位值為1,不存在時,請於TLS 1.2下新增機碼且命名為Server,並新增DWord值,名稱設為Enabled,資料欄位值設為1
(2)確認「HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server\DisabledByDefault」機碼是否存在,存在時,確認DisabledByDefault類型為DWord且資料欄位值為0,不存在時,請於TLS 1.2下新增機碼且命名為Server,並新增DWord值,名稱設為DisabledByDefault,資料欄位值設為0
啟用

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
48 TWGCB-04-014-0048 傳輸加密 NULL Cipher ▪這項原則設定決定是否停用NULL Cipher
▪NULL Cipher無法確保資料機密性或完整性
regedit ▪確認下列機碼是否存在:
▪HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\NULL\Enabled
▪不存在時,表示停用
▪存在時,確認Enabled類型為DWord且資料欄位值為0
停用

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
49 TWGCB-04-014-0049 傳輸加密 DES ▪這項原則設定決定是否停用DES加密套件 ▪DES已被視為安全性不足之加密套件 regedit ▪確認下列機碼是否存在: ▪HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\DES 56/56\Enabled ▪不存在時,表示停用 ▪存在時,確認Enabled類型為DWord且資料欄位值為0 停用

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
50 TWGCB-04-014-0050 傳輸加密 RC4加密套件 ▪這項原則設定決定是否停用RC4加密套件
▪在TLS與SSL連線中使用RC4加密套件可能會讓攻擊者能夠進行中間人攻擊,並從加密之Session中還原純文字內容
regedit ▪確認以下4個機碼是否存在:
(1)HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128\Enabled
(2)HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128\Enabled
(3)HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 64/128\Enabled
(4)HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128\Enabled
▪不存在時,表示停用
▪存在時,確認Enabled類型為DWord且資料欄位值為0
停用

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
51 TWGCB-04-014-0051 傳輸加密 AES 128/128 ▪這項原則設定決定是否啟用AES 128/128加密套件
▪AES 128/128加密套件已被視為安全性不足,建議停用
regedit ▪確認下列機碼是否存在:
▪HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\AES 128/128\Enabled
▪不存在時,表示停用
▪存在時,確認Enabled類型為DWord且資料欄位值為0
停用

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
52 TWGCB-04-014-0052 傳輸加密 AES 256/256 ▪這項原則設定決定是否啟用AES 256/256加密套件
▪AES 256/256加密套件可用以保護HTTP傳輸之機密性與完整性
▪預設為啟用,且機碼值不存在
regedit ▪確認下列機碼是否存在:
▪HKLM\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\AES 256/256\Enabled
▪不存在時,表示啟用
▪存在時,確認Enabled類型為DWord且資料欄位值為1
啟用

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

項次 TWGCB-ID 類別 原則設定名稱 說明 設定位置 設定路徑 GCB設定值
53 TWGCB-04-014-0053 傳輸加密 TLS加密套件順序 ▪這項原則設定決定TLS加密套件順序
▪加密套件是一組包含身分驗證、加密、訊息鑑別碼及金鑰交換演算法的組合,用於設定使用TLS協定之網路連線安全性。客戶端會依優先順序向伺服器發送其支援之加密套件清單,而伺服器則會從該清單中選擇一組加密套件進行回應
▪加密套件應從最強到最弱進行排序,以確保伺服器與用戶端之間使用較安全之傳輸加密協定
regedit 針對「HKLM\System\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002\Functions」機碼,其數值資料欄位設定如下:
TLS_AES_256_GCM_SHA384,
TLS_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_AES_256_GCM_SHA384,
TLS_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

HKLM\System\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002\Functions


Windows Server 2019 Standard 預設如下

TLS_AES_256_GCM_SHA384
TLS_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_NULL_SHA256
TLS_RSA_WITH_NULL_SHA
TLS_PSK_WITH_AES_256_GCM_SHA384
TLS_PSK_WITH_AES_128_GCM_SHA256
TLS_PSK_WITH_AES_256_CBC_SHA384
TLS_PSK_WITH_AES_128_CBC_SHA256
TLS_PSK_WITH_NULL_SHA384
TLS_PSK_WITH_NULL_SHA256

GCB 建議設定如下
TLS_AES_256_GCM_SHA384,
TLS_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
********************************************************************************
【(7)傳輸加密】的小結

項次 42,最好GCB建議的位置和網站的 Web.config 都設定 (若有 Source Code,其中 Web.Config 也要改)。

項次 43 ~ 53 建議用下面方式處理較快

[研究]IIS Crypto 4.0 Build 18 - Released February 13, 2025簡易使用


(完)

相關

[研究]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)傳輸加密


沒有留言:

張貼留言