字體:  

構建免受FileSystemObject組件威脅虛擬主機

adj 發表於: 2007-11-20 08:46 來源: ADJ網路控股集團


現在絕大多數的虛擬主機都禁用了 ASP 的標準組件:FileSystemObject
現在絕大多數的虛擬主機都禁用了 ASP 的標準組件:FileSystemObject, 因為這個組件為 ASP 提供了強大的文件系統訪問能力,可以對服務器硬碟上的任何文件進行讀、寫、複製、刪除、改名等操作(當然,這是指在使用默認設置的 Windows NT / 2000 下才能做到)。但是禁止此組件後,引起的後果就是所有利用這個組件的 ASP 將無法運行,無法滿足客戶的需求。

  如何既允許 FileSystemObject 組件,又不影響服務器的安全性( 即:不同虛擬主機用戶之間不能使用該組件讀寫別人的文件)呢? 這裡介紹本人在實驗中獲得的一種方法,下文以 Windows 2000 Server 為例來說明。

  在服務器上打開資源管理器,用鼠標右鍵點擊各個硬碟分區或卷的盤符,在彈出菜單中選擇「屬性」, 選擇「安全」選項卡,此時就可以看到有哪些帳號可以訪問這個分區(卷)及訪問權限。默認安裝後, 出現的是「Everyone」具有完全控制的權限。點「添加」,將「Administrators」、「Backup Operators」、 「Power Users」、「Users」等幾個組添加進去,並給予「完全控制」或相應的權限,
注意,不要給「Guests」組、「IUSR_機器名」這幾個帳號任何權限。然後將「Everyone」組從列表中刪除,這樣,就只有授權的組和用戶才能訪問此硬碟分區了,而 ASP 執行時,是以「IUSR_機器名」的身份訪問硬碟的, 這裡沒給該用戶帳號權限,ASP 也就不能讀寫硬碟上的文件了。

  下面要做的就是給每個虛擬主機用戶設置一個單獨的用戶帳號,然後再給每個帳號分配一個允許其完全控制的目錄。

  如下圖所示,打開「計算機管理」→「本地用戶和組」→「用戶」,在右欄中點擊鼠標右鍵,
在彈出的菜單中選擇「新用戶」:

  在彈出的「新用戶」對話框中根據實際需要輸入「用戶名」、「全名」、「描述」、「密碼」、
「確認密碼」,並將「用戶下次登入時須更改密碼」前的對號去掉,選中「用戶不能更改密碼」和「密碼永不過期」。 本例是給第一虛擬主機的用戶建立一個匿名訪問 Internet 訊息服務的內置帳號「IUSR_VHOST1」, 即:所有客戶端使用
http://xxx.xxx.xxxx/ 訪問此虛擬主機時,都是以這個身份來訪問的。 輸入完成後點「創建」即可。可以根據實際需要,創建多個用戶,創建完畢後點「關閉」:

  現在新建立的用戶已經出現在帳號列表中了,在列表中雙擊該帳號,以便進一步進行設置:

  在彈出的「IUSR_VHOST1」(即剛才創建的新帳號)屬性對話框中點「隸屬於」選項卡:
  剛建立的帳號默認是屬於「Users」組,選中該組,點「刪除」:
  現在出現的是如下圖所示,此時再點「添加」:
  在彈出的「選擇 組」對話框中找到「Guests」,點「添加」,此組就會出現在下方的文本框中,
然後點「確定」:
www.knowsky.com]

  出現的就是如下圖所示的內容,點「確定」關閉此對話框:
  打開「Internet 訊息服務」,開始對虛擬主機進行設置, 本例中的以對「第一虛擬主機」設置為例進行說明,右擊該主機名,在彈出的菜單中選擇「屬性」:
  彈出一個「第一虛擬主機 屬性」的對話框,從對話框中可以看到該虛擬主機用戶的使用的是「F:\VHOST1」 這個文件夾:

  暫時先不管剛才的「第一虛擬主機 屬性」對話框,切換到「資源管理器」,找到「F:\VHOST1」這個文件夾,右擊,選「屬性」→「安全」選項卡, 此時可以看到該文件夾的默認安全設置是「Everyone」完全控制(視不同情況顯示的內容不完全一樣),首先將最將下的「允許將來自父系的可繼承權限傳播給該對像」前面的對號去掉:

  此時會彈出如下圖所示的「安全」警告,點「刪除」:
  此時安全選項卡中的所有組和用戶都將被清空(如果沒有清空,請使用「刪除」將其清空),然後點「添加」按鈕。

  將如圖中所示的「Administrator」及在前面所創建的新帳號「IUSR_VHOST1」添加進來, 將給予完全控制的權限,還可以根據實際需要添加其他組或用戶,但一定不要將「Guests」組、「IUSR_機器名」 這些匿名訪問的帳號添加上去!

再切換到前面打開的「第一虛擬主機 屬性」的對話框,打開「目錄安全性」選項卡, 點匿名訪問和驗證控制的「編輯」: 在彈出的「驗證方法」對方框(如下圖所示),點「編輯」:彈出了「匿名用戶帳號」,默認的就是「IUSR_機器名」,點「瀏覽」: 在「選擇 用戶」對話框中找到前面創建的新帳號「IUSR_VHOST1」,雙擊: 此時匿名用戶名就改過來了,在密碼框中輸入前面創建時,為該帳號設置的密碼:

  再確定一遍密碼:

  OK,完成了,點確定關閉這些對話框。 經此設置後,「第一虛擬主機」的用戶,使用 ASP 的 FileSystemObject 組件也只能訪問自己的目錄:F:\VHOST1 下的內容,當試圖訪問其他內容時,會出現諸如「沒有權限」、 「硬碟未準備好」、「500 服務器內部錯誤」等出錯提示了。 另:如果該用戶需要讀取硬碟的分區容量及硬碟的序列號,那這樣的設置將使其無法讀取。 如果要允許其讀取這些和整個分區有關的內容,請右鍵點擊該硬碟的分區(卷),選擇「屬性」→「安全」, 將這個用戶的帳號添加到列表中,並至少給予「讀取」權限。由於該卷下的子目錄都已經設置為 「禁止將來自父系的可繼承權限傳播給該對像」,所以不會影響下面的子目錄的權限設置

原文引用: http://www.shinher.com/article/view_7.html