2011年11月23日 星期三

IIS 設定Application Pool 和 新使用者的標準作業流程(SOP)

開Asp網頁的IIS主機重灌, 其實重灌前, 我就有發現 c:\windows\temp\ 的資料夾裡, 被放了奇怪跳板程式, 8成是這台主機的權限之前沒設好, 所以這次用比較高的安全性的設定方式來設定 IIS, 結果一設下去, 就出現:
Service Unavailable 的錯誤.

連直接執行 html file, 都出現 Service Unavailable 的錯誤訊息, 錯誤發生的原因是, 修改 IIS 中應用程式集區(Application Pool)的身份識別, 如果設回去使用 網路服務(NETWORK SERVICE), 網頁就又可以正常執行, 但會彈出安全性的登入框, 因為 test.html 檔案, 網路服務(NETWORK SERVICE)帳號目前沒有存取的權限.


修改 Application Pool 的步驟是,
1.先在系統中新增一位新的使用者 (假設叫做 webUser )
2.修改 IIS 中應用程式集的身份識別設定 (如下圖)





如果在事件檢視器中查詢錯誤紀錄,你就會發現是 Application Pool 發生錯誤, 造成 Service Unavailable.



下就是正確設定的標準作業流程(SOP):
1.新增使用者
2.將該使用者加入 IIS_WPG 群組
3.修改系統暫存目錄 ( C:\WINDOWS\Temp ) 權限, 為特殊權限, 只需要和 NETWORK SERVICE 的設定值一樣,只要有「列出資料夾/讀取資料」與「刪除」兩種權限就可以正常運行 ASP.NET 了。


檢視/設定使用者詳細權限(進階安全性設定)的方法如下:
1.按右鍵, 設定安全性.
2.按 "進階" 按鈕.
3.選 webUser(新增的使用者).
4.按 "編輯" 按鈕.



資料來源: IIS應用程式集區自訂身份識別後如何讓 ASP.NET 正常執行
http://blog.miniasp.com/post/2008/12/ASPNET-and-Application-Pool-Identity-setting-in-IIS-60.aspx

保哥說:
我們都知道 ASP.NET 在 IIS 6.0 中運行的時候,真正的執行權限使用者是應用程式集區(Application Pool)的身份識別(Identity)頁籤中定義的那位使用者,預設的使用者是「網路服務(NETWORK SERVICE)」,而且實際在執行的程序名稱(Process Name)為 w3wp.exe,各位可以從工作管理員中看到。

我們先設定一種情境,如果一台 IIS 中有兩個 ASP.NET 網站,分別由不同的開發團隊或客戶所管理,而兩個網站都有設定檔案上傳的功能,因此兩個網站一定會有特定目錄需要賦予 ASP.NET 可寫入權限,因為在 IIS 中 ASP.NET 的預設權限使用者就等於應用程式集區中定義的身份識別使用者,也就是所謂的 NETWORK SERVICE 系統使用者。

如果當其中第一個網站被入侵或值入後門程式時,也代表著這些後門程式正以 NETWORK SERVICE 的身份在你的主機中肆虐,攻擊的對象即便僅限於「網站」,但當然也包括第二個網站的部分可寫入路徑。

若要增強網站間的安全性與隔離性,我們這時就會需要修改應用程式集區(Application Pool)的身份識別設定,讓兩個 ASP.NET 網站個別使用不同的身份識別來執行所有的程式。


* 附註: IUSER 請使用 guests group 而不是 user group, 以避免權限的問題.

沒有留言:

張貼留言

Facebook 留言板