IIS 網頁伺服器的安全設定 (IIS Security Configuration)


  1. 說明
    1. 減少被攻擊的面積 (Attack Surface)
      1. 自主探測伺服器的資訊 🕵️‍♂️
      2. 隱藏伺服器資訊 💡
      3. 設定為 Devployment Retail
      4. 停用不安全的 Encryption 💡
      5. Remove Unnecessary Modules / Featrues 💡
    2. Secuire Cookies & Secure Sessions
    3. Request Filter (要求篩選)
  2. 參考資料

本次的筆記源自 Pluralsight - Securing IIS WebsitesPluralsight - Auditing IIS Web Servers for Security and Best Practices課程心得、CSI Bnechmark IIS、技服中心 Government Configuration Baseline 的實務設定及相關文章的綜合整理:關於 IIS 安全實務設定建議。

良好的 IIS 安全設定可以和 Application Security 互相輝映,同時也可以補充不足,本次筆記綜合課程的內容,並反思個人在 IIS 設定上的心得 😄

logo

說明

2022-02-27 加入來自 CSI Benchmark 以及參考技服中心 GCB

減少被攻擊的面積 (Attack Surface)

自主探測伺服器的資訊 🕵️‍♂️

Http Headers Scan
SSL Server Test
DNS Lookup
DNS Query - Whois
Port scan - Nmap
Passive Web Site Analysis - Wappalyzer

隱藏伺服器資訊 💡

  • Server
  • MVC Version
  • Powered-By
<system.web>
    <httpRuntime targetFramework="*" enableVersionHeader="false" />
</system.web>

<system.webServer>
   <httpProtocol>
     <customHeaders>
     <!-- Hide Server Information -->
      <remove name="X-Powered-By" />
      <remove name="X-AspNetMvc-Version" />
     </customHeaders>
   </httpProtocol>
</system.webServer>

設定為 Devployment Retail

設定以後會主動啟用 customErrros 並且將 compilation debug 設定為關閉,此外 trace 也會被關閉。

<system.web>
  <deployment retail="true" />
</system.web>

停用不安全的 Encryption 💡

可以藉由修改機碼 (Registry) 或者使用 IISCrypto 來關閉傳輸層不安全的加密法。

Alan Tsai - 每個Server都應該做的資安防護 - 使用IIS Crypto一鍵設定該啟用和停用的SChannel

Remove Unnecessary Modules / Featrues 💡

Secuire Cookies & Secure Sessions

於 Web.config 中設定,藉由調整 Http Header 來避免 SesssionID 被竊取的問題。

ASP.NET Web.config & Http Headers 安全設定大全 | sdwh.dev

Request Filter (要求篩選)

IIS 要求篩選的設定筆記 (Requests Filtering)

參考資料

Windows Server 101: Hardening IIS via Security Control Configuration

IIS Security: How to Harden a Windows IIS Web Server in 10 Steps

Secure Content in IIS Through File System ACLs

Security Best Practices for IIS 8