Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Windows Server 2003 下 FSO (FileSystemObject) 安全配置實戰:NTFS 權限隔離虛擬主機跨目錄存取

編輯:關於伺服器

ASP 內建 FileSystemObject (FSO) 提供強大檔案系統操作能力 (讀/寫/複製/刪除/重命名),若未妥善限制,惡意用戶可上傳 FSO 木馬遍歷、竊取、破壞同主機其他虛擬主機網站檔案。禁用 FSO 則導致合法 ASP 應用 (CMS、上傳元件、日誌系統) 全面失效。本文提供 Windows Server 2003 環境下,透過 NTFS 權限與匿名帳號隔離實現「FSO 可用、跨站隔離」的完整配置方案。

核心原則:最小權限匿名身分 + 目錄級 ACL 隔離

  • 每個網站使用專屬匿名帳號 (而非共用 IUSR_機器名)。
  • 專屬匿名帳號僅對該網站根目錄擁有必要權限,對其他目錄完全無權限。
  • 移除磁碟根目錄 Everyone、Users 等寬鬆權限,建立「預設拒絕、顯式允許」基線。

階段一:系統磁碟 (C:) 基線權限重建

  1. 右鍵 C: → 「共用與安全性」→ 「安全性」索引標籤。
  2. 移除 Everyone、Users 群組。
  3. 若移除後 ASP 程式無法執行 (無法讀取系統元件、暫存目錄),新增 IIS_WPG 群組 (IIS 6.0 工作進程群組) 授予「讀取與執行」、「列出資料夾內容」、「讀取」權限。
  4. 重啟電腦生效 (或重啟 IIS Admin Service / WWW 服務)。

C: 安全性索引標籤移除 Everyone/Users、新增 IIS_WPG

此步驟確保 FSO 木馬以預設匿名身分執行時,無法存取系統目錄、其他網站目錄、甚至 C: 根目錄。

階段二:網站專屬匿名帳號建立與目錄 ACL 配置 (以 E:\Abc 為例)

步驟 1:建立專屬匿名用戶 AbcUser

  1. compmgmt.msc → 系統工具 → 本地用戶和群組 → 用戶 → 右鍵「新增用戶」。
  2. 用戶名:AbcUser,設定高複雜度密碼。
  3. 取消勾選「使用者下次登入時必須變更密碼」。
  4. 勾選「使用者無法變更密碼」、「密碼永遠不會過期」。
  5. 「隸屬於」→ 移除 Users,加入 Guests 群組 (最低權限基線)。

步驟 2:配置網站目錄 E:\Abc 專屬 ACL

  1. 右鍵 E:\Abc → 內容 → 安全性 → 進階。
  2. 取消勾選「允許繼承自父物件的權限傳播...」→ 選擇「移除」所有繼承權限條目 (ACL 變為空白)。
  3. 新增下列允許權限條目 (APPLY TO: 此資料夾、子資料夾和檔案):
主體權限說明
Administrators完全控制 (F)管理員完整管理
AbcUser修改 (M) / 讀取與執行、列出資料夾、讀取、寫入網站匿名身分讀寫執行
SYSTEM讀取與執行 (可選,視備份軟體需求)備份代理程式通常需 SYSTEM 讀取

關鍵: 不添加 Everyone、Users、IIS_WPG、IUSR_* 等其他身分。

步驟 3:IIS 網站綁定專屬匿名帳號

  1. IIS 管理員 → 右鍵網站 Abc.com → 內容 → 目錄安全性 → 「驗證與存取控制」→「編輯」。
  2. 「匿名存取」預設帳號為 IUSR_機器名,點擊「瀏覽」選取剛建立的 AbcUser。
  3. 輸入密碼確認 (輸入兩次) → 確定 → 套用。

IIS 匿名驗證編輯對話框選取 AbcUser

驗證隔離效果

  • 瀏覽 Abc.com 正常運作,ASP 上傳/讀寫/刪除功能正常 (以 AbcUser 身分)。
  • 嘗試在 ASP 中使用 FSO 存取 C:\、D:\OtherSite、E:\Xyz → 全部「拒絕存取」錯誤 (800A0046 / Permission denied)。
  • 其他網站使用各自專屬匿名帳號,同樣無法存取 E:\Abc。

常見問題與進階配置

問題:FSO 上傳檔案大小限制 200KB (預設)

解決: 修改 IIS Metabase 屬性 ASPMaxRequestEntityAllowed。

  1. 停止服務:net stop iisadmin /y (會級聯停止 WWW、FTP、SMTP 等)。
  2. 編輯 C:\Windows\System32\inetsrv\MetaBase.xml (備份後編輯)。
  3. 搜尋 ASPMaxRequestEntityAllowed,預設值 204800 (200KB)。
  4. 修改為所需位元組數,例:51200000 (50MB) 或 104857600 (100MB)。
  5. 儲存檔案,啟動服務:net start w3svc (依序啟動相關服務)。

注意: IIS 6.0 不支援透過 Metabase Explorer 即時修改此屬性,必須離線編輯 XML。修改後需重啟 IIS Admin Service 生效。

進階:結合 URLScan / Request Filtering 封鎖 FSO 惡意模式

  • URLScan 規則 (IIS 6.0) / Request Filtering 規則 (IIS 7.0+) 封鎖查詢字串/POST 資料中出現 FileSystemObject、CreateObject、WScript.Shell、ADODB.Stream 等高風險關鍵字 (需謹慎測試避免誤攔合法應用)。
  • 部署 Web 應用程式防火牆 (WAF) 如 ModSecurity (IIS 版)、FortiWeb、Cloudflare WAF 進行語意層面檢測。

進階:應用程式池身分隔離 (IIS 6.0 原生支援)

為每個網站建立獨立應用程式池,身分設定為對應的專屬匿名帳號 (AbcUser) 或建立專屬網域帳號。此法比匿名帳號隔離更徹底:連 IIS 工作進程層級都隔離,記憶體、句柄、權限標記完全獨立。

總結:FSO 安全配置檢查清單

項目檢查點狀態
系統磁碟基線C: 移除 Everyone/Users,新增 IIS_WPG 唯讀權限☐
專屬匿名帳號每網站一組,屬 Guests 群組,密碼複雜/永不過期☐
目錄 ACL僅 Administrators + 專屬帳號 (+SYSTEM 視備份需求),無繼承☐
IIS 綁定網站匿名驗證指向專屬帳號,密碼同步正確☐
上傳目錄專屬帳號有寫入權限,移除執行權限 (X) 防止上傳 ASP/EXE 執行☐
上傳大小MetaBase.xml ASPMaxRequestEntityAllowed 已調整☐
執行權限上傳目錄 IIS「主目錄」→「執行權限」設為「無/僅腳本」☐

落實「一站一帳號、一目錄一 ACL、預設拒絕、顯式允許」,在保留 FSO 強大功能的同時,將虛擬主機間的攻擊面壓縮至單一目錄邊界內,是共享主機環境資安的基石實作。

Copyright © Windows教程網 All Rights Reserved