如何在IIS7.5下設定HTTP Strict Transport Security

Lawrence Yi-Hsuan Chuang
5 min readJul 19, 2019

--

因為之前專案在轉換到 HTTPS 協定之後出現一個資安上的 low issue
檢測工具 : HP Web Inspect
系統環境 : Windows Server 2008 R2 Standard
Low Issue : Insecure Transport: HSTS Not Set ( 11365 )

上網搜尋了一下什麼是 HSTS
根據維基百科的敘述:

HTTP 強制安全傳輸技術(英語: HTTP Strict Transport Security ,縮寫: HSTS )是一套由網際網路工程任務組發布的網際網路安全策略機制。網站可以選擇使用 HSTS 策略,來讓瀏覽器強制使用 HTTPS 與網站進行通信,以減少連線劫持風險。

HSTS 的作用是強制用戶端(如瀏覽器)使用 HTTPS 與伺服器建立連線。伺服器開啟HSTS的方法是,當用戶端通過 HTTPS 發出請求時,在伺服器返回的 Response Headers 中包含Strict-Transport-Security欄位。非加密傳輸時設定的 HSTS 欄位無效;此外,HSTS 可以用來抵禦 SSL 剝離攻擊( SSL 剝離攻擊為中間人攻擊的一種)。

再根據Will 保哥的解說:

HTTP Strict Transport Security (HSTS) 是一份國際標準規格 (RFC 6797),主要用來宣告瀏覽器與伺服器之間的通訊方式必須強制使用 TLS/SSL 加密通道,只要從伺服器端送出一個 Strict-Transport-Security 標頭 (Header) 給瀏覽器,就可以告訴瀏覽器在未來的某段時間內一律使用 SSL 連接該網站 (可設定包含所有子域名網站),如果有發生憑證失效的情況,使用者將無法瀏覽該網站,如此一來便可大幅減少中間人攻擊的問題發生。

那麼接下來就讓我們一起來設定HSTS吧!

目前最常看到的解法是用 web.config 的方式:

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

但這不完全正確,因為即使不在 HTTPS 協定下,依然會在 Response Headers下發送 HSTS,但其實不應該透過 HTTPS 發送 HSTS,而是只能透過 HTTPS 來發送。因此,在這邊必須利用到IIS下的模組 - URL Rewrtie 來幫我們達成!

筆者先貼上完成設定後的 web.config,接下來再分享如何設定!

web.config

Step 1:

進入IIS管理員介面 --> 於站台下選擇URL Rewrite模組 --> 新增一輸入規則
URL Rewrite

進入 URL Rewrite 後,先於上方的輸入規則框框內點右鍵,並點選新增規則

新增輸入規則

接著輸入名稱、模式、條件、動作

名稱: HTTP to HTTPS redirect
模式: (.*)
條件:輸入{HTTPS}、類型為符合模式、模式為off
動作:動作類型為重新導向、重新導向URL請輸入https://yourIP or DNS/{R:1}、附加查詢字串打勾、重新導向類型請選擇永久(301)
(詳細設定請參考下圖)
輸入規則設定

Step 2:

接著新增輸出規則

同樣進入URL Rewrite模組 --> 於下方輸出規則上點選右鍵 --> 新增一輸出規則
新增一輸出規則

接著輸入名稱、變數名稱、模式、條件、動作

名稱:Add Strict-Transport-Security when HTTPS
變數名稱:RESPONSE_Strict_Transport_Security
模式:.*
條件:{HTTPS}、類型為符合模式、模式為on
動作:動作類型為重寫、值為max-age=31536000
(詳細設定可參考下圖)
輸出規則設定

這樣就完成新增 HSTS 啦!

切記別忘了重新啟動站台套用設定哦!

--

--

Lawrence Yi-Hsuan Chuang
Lawrence Yi-Hsuan Chuang

Written by Lawrence Yi-Hsuan Chuang

擁有超過9年工作經驗的工程師,目前在University of Nevada, Reno就讀Computer Science的碩士生,曾在軟體、銀行顧問和物聯網產業服務並擁有豐富的經驗。在這裡主要分享個人在學習技術方面的心得與知識。此外,我也是攝影愛好者,如果有任何關於技術、職場或攝影的問題,都歡迎一起討論、交流!

No responses yet