IIS 資料夾權限深入 (IIS & SMB)

2022-01-21

筆記 IIS 與使用 SMB 協定存取檔案的要點,並討論 Static File Http Module 以及 UNC 做為網站來源的設定方式。

logo

關鍵詞彙

Identity As User
應用程式集區的識別方式,分為 ApplicationPoolIdentity 或自訂帳號,會影響 w3wp.exe 的使用者名稱
Impersonation As User
ASP.NET 驗證,分為停用、已驗證的使用者(啟用)與特定使用者。對於實際的 SC User Name 有最高決定權。
Connected As User
IIS 基本設定中可以設定的連線身分,分為特定使用者以及應用程式使用者(通過驗證)兩種設定。
Server Configuration User Name
簡稱 SC User Name,伺服器組態的一個項目。會根據 Identity As, Impersonation As, Connected As 的設置組合,有不同的值,包含應用程式集區、特定使用者或者是驗證登入的使用者。SC User Name 決定 ASP 如何在程式當中存取本機資源、UNC 資源以及網域驗證連線資料庫的身分,非常重要。
Auth User
登入驗證的使用者,如果是使用匿名驗證為 IUSR;使用 Windows 驗證則為各驗證登入者。
Statfic File Http Module
使用 Connected As User 或 Auth User 的身分,向網頁伺服器取得靜態檔案。
Proxy File
使用 ASP.NET 程式,會依據 SC User Name 的身分連線 Drirve / UNC 資源並進行讀取、寫入檔案。

Static File Http Module

http://domain.local/files/funPictures.png
http://domain.local/files/memo.txt
http://domain.local/files/style.css

Proxy File 示例

ASP.NET MVC Controller

public ActionResult GetFile(string serverPath)
{
    return File(serverPath, "text/plain");
}

如何決定 SC User Name

如何排除使用者讀取應用程式的特定資料夾及檔案

資料夾及檔案 排除方式
BIN 要求篩選的隱藏區段中預設排除
web.config 要求篩選的隱藏區段中預設排除
App_Data 要求篩選的隱藏區段中預設排除
App_code 要求篩選的隱藏區段中預設排除
*.cs 要求篩選的副檔名預設為拒絕
*.vb 要求篩選的副檔名預設為拒絕
*.mdf 要求篩選的副檔名預設為拒絕
*.ldf 要求篩選的副檔名預設為拒絕
*.config 要求篩選的副檔名預設為拒絕
*.cshtml 處理常式對應交由 System.Web.HttpForbidenHandler
*.vbhtml 處理常式對應交由 System.Web.HttpForbidenHandler
*.aspx 處理常式對應交由 IsapiModule 處理
*.ashx 處理常式對應交由 IsapiModule 處理
*.asp 處理常式對應交由 IsapiModule 處理
Views 資料夾內的 Web.config 設定交由 System.Web.HttpNotFoundHandler

UNC 作為應用程式實體路徑

假說:
搭配 Identity As User 的方式,使用 UNC 資料夾要提供的最小權限包含 Identity User 以及需要以 Static File Http Module 下載檔案的使用者。

網站資料夾的權限

假說:
只要讓網站的資料夾建立者對檔案擁有 NTFS 安全性讀取權限,則縱使登入的使用者對該檔案不具有 NTFS 安全性讀取權限,仍然可以 Static File Http Module 的方式讀取檔案。

集區識別與網站安全性的搭配

識別 資料夾 NTFS
ApplicationPoolIdentity IIS_IUSRS

ApplicationPoolIdentity 為 IIS_IUSRS 的成員,授權 IIS_IUSRS 對於網站資料夾擁有讀取權限後網站可以運行,好處在於授權的設定上相當方便。

但存在風險是若其他不同集區的網站被加入後門程式,其他集區若可以基於 IIS_IUSRS 權限存取個本系統,會受到影響。

識別 資料夾 NTFS
ApplicationPoolIdentity IIS Apppool\集區名稱

理想的設定方式,以及集區名稱的方式在 NTFS 安全上進行授權,有著更高的資安防護,但缺點是設定上略微麻煩,需要逐網站、應用程式設定。

識別 資料夾 NTFS
Specific User Authenticated Users

應用情境為應用程式實體路徑在 UNC 或者使用 Windows 驗證的方式連線資料庫 或者有存取檔案來源是在 UNC 上。Specific User 必須為 Authenticated 的成員,例如 AD 網域帳號 即可。

授權 Authenticated Users 的缺點在於若網站存在後門程式,其他具 Authenticated User 身分的執行以 Proxy File 的方式取得檔案內容。此外所有的 Authenticated Users 都可以基於此身分以 Http Module 的方式下載網站資料夾未受限(要求篩選、處理常式)的檔案。

識別 資料夾 NTFS
Specific User Specific User(佳)

與上一個使用情境相同,但差別在於在 UNC 資料夾上使用 Specific User 而非 Authenticated User,好處是有更高的安全性。但缺點是使用者無法 Http Module 的方式下載檔案,必須由應用程式經由 Proxy File 的方式提供檔案。

情境與設定

Setup Value
Identity As ApplicationPool
Impersonation As Enable
Connected As -
SC User Name Depends On Logon User
Proxy File LognOn Self Handle Error; Users, Auth Users, Everyone OK

Setup Value
Identity As AD User In IIS_IUSRS Group
Impersonation As AD User2
Connected As -
SC User Name AD User2
LogOn AD User2
Proxy File AD User2 Handle Error, AD User Denied
Http Module AD User2 OK, AD User Deny

Setup Value
Identity As AD User In IIS_IUSRS Group
Impersonation As AD User2
Connected As AD User 3 In IIS_IUSRS Group
SC User Name AD User2
LogOn AD User2
Proxy File Proxy AD User2 Handle Error
Http Module AD User3 OK, AD User, AD User2 Deny

Setup Value
Identity As ApplicationPool
Impersonation As AD User In IIS_IUSRS Groip
Connected As -
SC User Name AD User
LogOn AD User2
Proxy File Proxy AD User Handle Error
Http Module AD User2 OK, AD User Deny

Setup Value
Identity As AD User
Impersonation As -
Connected As -
SC User Name AD User
LogOn AD User
Proxy File Proxy AD User OK
Http Module Depends On LogOn

參考資料

自訂 HTTP Modules and HTTP Handlers

IIS Modules Overview

相關連結

IIS 資料夾權限的設定方式

IIS 筆記整理

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