問:在 IIS 6 中,Web 應用程序的工做進程設置爲以進程標識「Network Service」運行。在 IIS 5 中,進程外 Web 應用程序則設置爲以 IWAM_<服務器名> 賬戶運行,這個賬戶是普通的本地用戶賬戶。能否提供有關這個新賬戶的信息,它對於安全性以及管理來講很重要嗎?
答:Network Service 是 Windows Server 2003 中的內置賬戶。您說得很對,瞭解 IIS 5 上的本地用戶賬戶(IUSR 和 IWAM)與這個內置賬戶之間的區別是很是重要的。爲了理解這一點,您應該知道,Windows 操做系統中的全部賬戶都分配了一個 SID(安全標識,Security ID)。服務器是根據 SID,而不是與 SID 相關的名稱來識別服務器上全部賬戶的,而你我在與用戶界面進行交互時,則是使用名稱進行交互的。服務器上建立的絕大部分賬戶都是本地賬戶,都具備一個惟一的 SID,用於標識此賬戶隸屬於該服務器用戶數據庫的成員。因爲 SID 只是相對於服務器是惟一的,所以它在任何其餘系統上無效。因此,若是您爲本地賬戶分配了針對某文件或文件夾的 NTFS 權限,而後將該文件及其權限複製到另外一臺計算機上時,目標計算機上並無針對這個遷移 SID 的用戶賬戶,即便其上有一個同名賬戶也是如此。這使得包含 NTFS 權限的內容複製可能出現問題。
內置賬戶是由操做系統建立的、一類較爲特別的賬戶或組,例如 System 賬戶、Network Service 和 Everyone 組。這些對象的重要特徵之一就是,它們在全部系統上都擁有一個相同的、衆所周知的 SID。當將分配了 NTFS 權限的文件複製到內置賬戶時,權限在服務器之間是有效的,由於內置賬戶的 SID 在全部服務器上都是相同的。Windows Server 2003 服務中的 Network Service 賬戶是特別設計的,專用於爲應用程序提供訪問網絡的足夠權限,並且在 IIS 6 中,無需提高權限便可運行 Web 應用程序。這對於 IIS 安全性來講,是一個特大的消息,由於不存在緩衝溢出,懷有惡意的應用程序沒法破譯進程標識,或是對應用程序的***不能進入 System 用戶環境。更爲重要的一點是,不再能造成針對 System 賬戶的「後門」,例如,再也沒法經過 InProcessIsapiApps 元數據庫項利用加載到 Inetinfo 的應用程序。
Network Service 賬戶在建立時不只僅考慮了在 IIS 6 中的應用。它還具備進程標識 W3WP.exe 的絕大部分(並非所有)權限。如同 ASPNET 用戶爲了運行 ASP.net 應用程序,須要具備 IIS 5 服務器上某些位置的訪問權限,進程標識 W3WP.exe 也須要具備相似位置的訪問權限,並且還須要一些默認狀況下沒有指派給內置組的權限。
爲了管理的方便,在安裝 IIS 6 時建立了 IIS_WPG 組(也稱爲 IIS 工做進程組,IIS Worker Process Group),並且它的成員包括 Local System(本地系統)、Local Service(本地服務)、Network Service(網絡服務)和 IWAM 賬戶。IIS_WPG 的成員具備適當的 NTFS 權限和必要的用戶權限,能夠充當 IIS 6 中工做進程的進程標識。如下位置具備指派給 IIS_WPG 的權限:
• |
%windir%\help\iishelp\common – 讀取
|
• |
%windir%\IIS Temporary Compressed Files – 列出、讀取、寫入
|
• |
%windir%\system32\inetsrv\ASP Compiled Template – 讀取
|
• |
Inetpub\wwwroot(或內容目錄)- 讀取、執行
|
另外,IIS_WPG 還具備如下用戶權限:
• |
忽略遍歷檢查(SeChangeNotifyPrivilege)
|
• |
做爲批處理做業登陸(SeBatchLogonRight)
|
• |
從網絡訪問此計算機(SeNetworkLogonRight)
|
所以,Network Service 賬戶提供了訪問上述位置的權限,具備充當 IIS 6 工做進程的進程標識的充足權限,以及具備訪問網絡的權限。