小知識:為什么Windows Server 2003缺省沒有安裝IIS 6.0?
在過去,包括微軟在內(nèi)的廠商打包一系列的樣本腳本,文件處理和給管理員提供的必要的便于是用的小型的文件系統(tǒng)許可在網(wǎng)絡(luò)服務(wù)器默認安裝程序中。然而,這樣一來增加了被攻擊的可能性,而且也是多種對IIS進行攻擊的基礎(chǔ)。因此,IIS6.0比其以前的版本都要安全。其中最為顯著的改變是IIS6.0不是作為windows server 2003的缺省安裝。
在Windows Server 2003安裝IIS 6.0:
單擊“開始”“控制面板”→“添加/刪除程序”→“添加/刪除 Windows 組件”按鈕,啟動“Windows 組件向?qū)А薄T凇癢indows 組件”列表中,選中“應(yīng)用程序服務(wù)器”旁的復(fù)選框,單擊“詳細信息”。在“應(yīng)用程序服務(wù)器”→“應(yīng)用程序服務(wù)器子組件”下方,突出顯示“Internet 信息服務(wù) (IIS)”,單擊“詳細信息”。在“Internet 信息服務(wù) (IIS) 子組件”列表中,選擇“萬維網(wǎng)服務(wù)”,單擊“詳細信息”。要添加可選組件,選中要安裝的組件旁的復(fù)選框。單擊“下一步”,然后單擊“完成”。
圖1
在解釋IIS 6.0安全性配置之前,首先應(yīng)該介紹一下IIS 6.0的幾個不安定因素:IIS管理服務(wù)(inetinfo.exe,提供IIS的管理工作,SMTP,NNTP,FTP等服務(wù)),WWW管理服務(wù)(WAS,工作處理程序管理,組態(tài)管理),HTTP.sys(負責出來Request,提供Cache,Queue等功能),工作處理程序(W3Wp.exe)。接下來筆者圍繞這些因素談?wù)勏嚓P(guān)安全配置的取舍。
WEB應(yīng)用程序(如ASP)緩沖池
實驗證明,在給網(wǎng)站配備了應(yīng)用程序緩沖池之后,網(wǎng)站的訪問效率提高的幾倍甚至十幾倍。IIS 6.0最大的改進之一就是應(yīng)用程序緩沖池允許隔離。IIS 5.0中,所有WEB應(yīng)用程序只允許共用一個緩沖池。由于將web應(yīng)用程序隔離在獨立的單元將會導(dǎo)致嚴重的性能下降,因此沒有實現(xiàn)應(yīng)用程序隔離。
通常一個web應(yīng)用程序的失敗會影響同一服務(wù)器上其他應(yīng)用程序。然而,IIS 6.0在處理請求時,通過將應(yīng)用程序隔離成一個個叫做應(yīng)用程序池的孤立單元這種設(shè)計上的改變,成倍的提高了性能。每個應(yīng)用程序池中通常由一個或多個工作進程。這樣就允許確定錯誤的位置,防止一個工作進程影響其他工作進程。這種機制也提高了服務(wù)器以及其上應(yīng)用的可靠性。
這樣的結(jié)構(gòu)明顯很不合理,造成了權(quán)限的混亂。而在IIS 6.0中,也許是微軟汲取了非典期間的智慧,把各個緩沖池進行了隔離。可以設(shè)定多個緩沖池,定義它們的名字。指定在網(wǎng)站,目錄,甚至虛擬目錄中的WEB程序到任何一個緩沖池。
首先要選擇到底采用IIS 5.0還是采用IIS 6.0的隔離措施。出于對舊版本的兼容性,IIS 6.0允許仍然采用IIS 5.0的方式。但兩種方式不能同時啟用。
點擊“開始”→“設(shè)置”→“控制面板”→“管理工具”→“IIS管理器”,右鍵單擊網(wǎng)站,點擊“屬性”→“服務(wù)”,把“以IIS 5.0的隔離模式運行WWW服務(wù)”復(fù)選框前的鉤去掉。
圖2
圖3
單擊“應(yīng)用程序池”,右鍵單擊右邊空白處,點擊“新建”→“應(yīng)用程序池”,給新建的應(yīng)用程序池設(shè)置一個名字,點擊確定即可。這里所謂的依照某一模板新建,是指新建的應(yīng)用程序池的屬性配置與之前建好的某應(yīng)用程序池。點擊“網(wǎng)站”前的加號,展開當前目錄下的所有網(wǎng)站,右鍵單擊目標網(wǎng)站,點擊“屬性”→“主目錄”→“應(yīng)用程序池”,選定剛剛建好的緩沖池。重復(fù)這些步驟,便可為不同的網(wǎng)站設(shè)立不同的應(yīng)用程序緩沖池。這些緩沖池是隔離開的,提高了服務(wù)器的穩(wěn)定性和安全性。
1.右擊適當?shù)膽?yīng)用程序池,然后單擊“屬性”。出現(xiàn)應(yīng)用程序池的屬性對話框。 單擊“回收”選項卡,然后設(shè)置適當?shù)膽?yīng)用程序池設(shè)置。“內(nèi)存回收”是等效于 memoryLimit ASP.NET 進程模型設(shè)置的應(yīng)用程序池設(shè)置。它指定輔助進程可以使用的最大內(nèi)存量。如果輔助進程超出了這一數(shù)量,將創(chuàng)建新的進程來替換它,并且當前所有請求都被重新分配給該新進程。
2.右擊適當?shù)膽?yīng)用程序池,然后單擊“屬性”。出現(xiàn)應(yīng)用程序池的屬性對話框。 單擊“性能”選項卡,然后設(shè)置適當?shù)膽?yīng)用程序池設(shè)置。“空閑超時”是指定輔助進程或應(yīng)用程序池在開始處于不活動狀態(tài)后,過多長時間將其關(guān)閉。
默認情況“空閑超時”是啟用的而且設(shè)置為 20 分鐘。通過更改數(shù)值調(diào)節(jié)框中的值,可以指定一個不同的時間限制。“請求隊列限制”指定在異常終止后等待輔助進程啟動時在 ASP.NET ISAPI 中排隊的請求的最大數(shù)目。默認情況下“請求隊列限制”是啟用的而且設(shè)置為 1000 個請求。通過更改數(shù)值調(diào)節(jié)框中的值,可以對排隊的請求的數(shù)目指定不同的限制。
3.右擊適當?shù)膽?yīng)用程序池,然后單擊“屬性”。出現(xiàn)應(yīng)用程序池的屬性對話框。 單擊“健全”選項卡,然后設(shè)置適當?shù)膽?yīng)用程序池設(shè)置。“啟用 ping”是指定 ASP.NET ISAPI 檢查輔助進程是否存在的時間間隔。如果沒有輔助進程,則重新啟動輔助進程。默認情況下“啟用 ping”是啟用的而且設(shè)置為 30 秒。
通過更改數(shù)值調(diào)節(jié)框中的值,可以指定一個不同的時間間隔。“關(guān)閉時間限制”是指定提供給輔助進程的用來正常關(guān)閉的時間長度。如果輔助進程在指定的時間長度內(nèi)沒有關(guān)閉,則 ASP.NET ISAPI 將結(jié)束該輔助進程。默認情況下“關(guān)閉時間限制”設(shè)置為 90 秒。通過更改數(shù)值調(diào)節(jié)框中的值,可以指定一個不同的時間限制。