背景與挑戰
FileSystemObject (FSO) 提供強大的檔案系統存取能力,但也因此成為 ASP 木馬的利用對象。多數虛擬主機商選擇直接禁用 FSO,卻導致合法 ASP 應用無法運作。如何在允許 FSO 的前提下,確保不同虛擬主機用戶間的檔案隔離?本文提供基於 NTFS 權限與獨立帳號的完整解決方案(以 Windows 2000 Server 為例)。
核心策略:最小權限原則 + 帳號隔離
第一階段:硬碟分區層級鎖定
- 開啟資源管理器,右鍵各分區→「屬性」→「安全性」標籤。
- 新增「Administrators」、「Backup Operators」、「Power Users」、「Users」群組,給予完全控制或適當權限。
- 關鍵步驟:移除「Everyone」群組,絕不給予「Guests」群組及「IUSR_機器名」帳號任何權限。此舉讓預設匿名身分無法直接存取檔案系統。
第二階段:為每個虛擬主機建立專屬匿名帳號
- 開啟「電腦管理」→「本機使用者和群組」→「使用者」,新增使用者(如
IUSR_VHOST1)。
- 密碼設定:取消「使用者下次登入時須變更密碼」,勾選「使用者無法變更密碼」與「密碼永遠有效」。
- 帳號屬性→「隸屬於」標籤:移除預設的「Users」群組,改加入「Guests」群組。這限制了帳號的系統層級權限。
第三階段:目錄權限精細化
- 找到虛擬主機網站根目錄(如
F:\VHOST1),右鍵→「屬性」→「安全性」。
- 取消勾選「允許繼承自父代的權限傳播給此物件」。
- 加入「Administrators」群組與剛建立的
IUSR_VHOST1,給予「完全控制」權限。嚴禁加入「Guests」或「IUSR_機器名」。
第四階段:IIS 匿名驗證綁定專屬帳號
- 開啟「Internet 資訊服務」,右鍵虛擬主機→「屬性」→「目錄安全性」→「匿名存取和驗證控制」→「編輯」。
- 點擊「編輯」→「瀏覽」,選取剛建立的
IUSR_VHOST1,輸入對應密碼確認。
效果驗證與補充
設定完成後,該虛擬主機的 ASP 腳本透過 FSO 僅能存取自身目錄(F:\VHOST1),嘗試越界存取將出現「拒絕存取」、「磁碟未就緒」或「500 內部錯誤」。
補充: 若用戶需讀取磁碟分區容量、序列號等資訊,需在分區根目錄「安全性」中為該帳號加入「讀取」權限;因子目錄已封鎖繼承,不會影響下層隔離。