IIS6.0詳解

IIS6.0詳解
 
IIS6.0是微軟在WEB瀏覽應用方面里程碑的改進,相比IIS5.1IIS6.0不只僅是版本號的差異,更多的是功能上的改進和加強。那麼IIS6.0中到底有一些什麼新特性呢?本文就IIS6.0中的一些重要特性進行介紹。

(一)改善的IIS安裝方式

Microsoft Windows Server 2003家族中的Internet信息服務 IIS)提供了可用於IntranetInternetExtranet上的集成 Web 服務器能力,這種服務器具備可靠性、可伸縮性、安全性以及可管理性的特色,可使用IIS 6.0爲動態網絡應用程序建立功能強大的通信平臺。IIS 6.0提供了一些新功能來幫助組織、IT專業人士和Web管理員爲單個IIS服務器或多個服務器上可能存在的上千個網站實現高性能、可靠性、可伸縮性和安全性的目標。IIS 6.0只能在Windows Server 2003服務器的數據中心版、企業版、標準版以及Web版這四種版本之中運行,不能在Windows XP2000NT上運行。
  除了Windows 2003 Web版以外,Windows 2003的其他版本默認再也不安裝IISWindows 2003 Server安裝完成後,安裝IIS有三種途徑:即利用「管理您的服務器」嚮導、利用控制面板「添加或刪除程序」的「添加/刪除Windows組件」功能以及執行無人值守安裝。
微軟在利用「管理您的服務器」嚮導來安裝IIS時較之前有了很大的改觀,採用了一種新型的「安裝任何部件以前老是徵求用戶意見」的IIS安裝策略,在高度安全和「鎖定」模式下安裝。說明微軟確實在認真對待安全問題;而使用控制面板中的「添加/刪除Windows組件」功能比較靈活,能夠自行選擇組件進行安裝。在IIS 6.0中增長了20多個組件,在IIS中取消了文檔,全部文檔都以幫助文件的形式發佈,再也不有IISHelp虛擬目錄,並且在IIS 6.0網站上必須本身建立該目錄。在默認狀況下,IIS只爲靜態內容提供服務,即ASPASP.NET、在服務器端的包含文件、WebDAV發佈和 FrontPage® Server Extensions 等功能只有在啓用時才工做。

(二)加強的服務

  微軟在IIS 6.0中對大部分模塊都進行了從新設計以便利用基本Windows內核HTTP.sys。這使其具備內置的響應和請求緩存和隊列功能,並可以將應用程序進程請求直接路由到工做進程,從而改善可靠性和性能。IIS 6.0中提供了POP3服務和POP3服務Web管理器,從而在Windows 2003 Server上能夠不用安裝Exchange Server,也能夠接受和發送郵件。
  統一描述、發現和集成協議(Universal Description, Discovery, and Integration,即UDDI)服務是Windows 2003 Server提供的跟IIS有關的又一種新的功能,默認不安裝。UDDI是一種產業標準,可以經過廣告發布IIS服務器提供的Web服務——這裏「廣告」一詞的含義與平常生活中的廣告不一樣,它是指一種讓客戶程序(一般是Web瀏覽器)獲知Web服務(一般是ASP.NET應用)各類細節的方式。UDDI仍在發展之中,但一些企業已經在內部採用UDDI,以便開發者將本身的代碼發佈給其餘協做開發的人。最後一種重要的支持服務是後臺智能傳送服務(Background Intelligent Transfer Service,簡稱BITS)。BITS是一種後臺文件傳輸機制和隊列管理器,也稱做節流傳輸服務。BITS控制文件請求,減小帶寬消耗並改善最終用戶的體驗。針對IIS啓用BITS可保證Web服務器的服務質量,若是沒有BITS,當100個用戶同時下載一個500 MB的文件,服務器的帶寬可能就被消耗殆盡,致使其餘訪問Web服務的用戶頻繁地遇到超時錯誤。

(三)全新設計的內核

  IIS 4.0IIS 5.0從體系結構上來看,其內核都是同樣的,採用TCP/IP內核,前者應用程序爲MTX.exe,後者爲DLLhost.exe。它們都是在用戶模式下運行的發佈Web內容的應用程序,或者在Inetinfo進程以內以System帳號運行,或者在Inetinfo進程以外以IWAM用戶運行,其體系結構如圖1所示。
1 IIS4.X以及IIS5.X體系結構
IIS 6.0開始,爲了使IIS不只可以輕鬆地支持1000Web網站,並且可以支持10000個甚至更多的網站,同時還要提升Web服務器的安全性和可靠性,微軟放棄了原有的IIS內核,從新構造了一個內核http.sys內核,其體系結構如圖2所示。
2 IIS6.0體系結構
IIS 6.0中能夠將監聽請求、建立和監視Web網站、運行Web服務等不一樣的任務隔離了開來。新的設計極大地改善可用性、安全和性能;IIS 6.0的內核體系主要創建在W3SVChttp.sys以及W3Core三個組件之上。
1W3SVC
  W3SVC組件的任務是根據配置數據的設置建立和監視工做線程,由工做線程運行Web網站應用。在IIS 5.0中與IIS6.0中的W3SVC組件最接近的是IIS管理服務,IIS管理服務是Inetinfo的一部分,若是Inetinfo出現問題,IIS管理服務也會出現問題,出現問題後就沒法從新啓動IIS管理服務。在IIS 6.0W3SVC做爲一個獨立的進程運行,Web應用出現問題後不會影響其它服務。W3SVC一直處於運行狀態,實時監視Web應用的情況,一旦出現異常狀況可根據用戶指定的參數監視和從新啓動應用程序。
2http.sys
   Windows Server 2003 家族成員中的超文本傳輸協議(HTTP)棧以一個名爲HTTP.sys 的內核模式設備驅動程序形式來實現,它是網絡子系統的一部分。IIS 6.0體系設計中最重大的變化是加入了http.sys驅動程序,http.sys驅動程序的任務是處理HTTP請求,它爲 HTTP 服務器應用程序提供高性能的鏈接性,並且它在內核模式下執行操做。將處理HTTP請求的任務從IIS 5.0IIS 4.0的用戶模式改變到IIS 6.0的內核模式標誌着新一代IIS服務器的誕生。
  IIS 6.0https.sys內核模式驅動程序極大地減小了用戶模式和內核模式之間的切換次數。http.sys監聽着HTTP請求,決定由哪個用戶模式的進程來處理該請求,或者是否由驅動程序自己返回用戶請求的內容。另外,微軟在http.sys驅動程序中採用了許多優化的算法,使其可以將請求直接轉發到適當的工做進程。
3W3Core
默認狀況下,IIS 6.0在工做進程隔離模式下運行,在這種模式中,對於每個Web應用,IIS 6.0都用一個獨立的w3wp.exe的實例來運行它。w3wp.exe也稱爲工做進程(Worker Process),或W3Core 工做進程隔離模式不存在進程內(In-Process)應用程序存在的問題,有效地提升了可靠性和安全性。w3wp.exe的全部實例都在一個權限有限的「網絡服務」帳號下運行,必要時,還能夠將工做進程配置成用其餘用戶帳號運行。若是緩衝區溢出***成功***了一個Web應用,***者只能訪問當時運行工做進程的帳號有權訪問的資源,默認的網絡服務帳號不能寫入Inetpub文件夾,執行權限也極其有限,因此象CodeRed蠕蟲之類的***根本不可能得逞。

(四)帶寬和鏈接限制

  在IIS 5.0IIS 4.0中不能直接操做服務器的網卡,雖然能夠經過Web網站屬性對話框的「性能」來容許啓用帶寬限制功能,指定容許網站佔用的最大帶寬,可是這個功能不必定起做用。IIS 6.0啓用帶寬限制功能後,必須在服務器中安裝QoS數據包計劃程序,該安裝爲自動安裝,在安裝QoS數據包計劃程序期間Windows 2003 Server會臨時地中止全部網絡服務。配置好QoS數據包計劃程序後,才能設置帶寬限制,經過配置給定站點的網絡帶寬,能夠更好地控制該站點容許的流量。
帶寬限制能夠是針對全部網站,也能夠是針對單個網站的。設置全局WWW服務最大帶寬不會替代已爲服務器上的單個網站設定的最大帶寬。單個站點根據已設置的最大值來限制帶寬,而全局設置限制全部其餘未限制帶寬的網站。另外,全局WWW服務帶寬限制設置不會影響FTP站點或FTP服務。
II6中容許設置的最小帶寬限制值是1024 Byte/秒。對於「正常」的負載,服務器使用的帶寬不該超過其所有可用帶寬的50%。若是服務器有較大的高峯負載,請將正常負載保持在50%如下,剩下的帶寬可在高峯期使用。
IIS6.0中能夠將 Internet 信息服務(IIS)配置成容許數目不受限制的併發鏈接,或限制該網站接收的鏈接個數。若是鏈接趨向于波動,則將「網站鏈接」設置成不受限制。若是爲了保證系統性能,能夠將站點限定在特定的鏈接數,網站的併發鏈接數是衡量網站性能的一個指標。

(五)網站標識與ID

網站標識由 IP 地址、TCP 端口以及主機頭名(可選)組成,它使名稱與靜態 IP 地址相關聯從而主控多個站點。將主機名添加到名稱解析系統(DNS)中,以便當有請求到達服務器時,IIS使用主機名來肯定客戶端請求的站點,該主機名在 HTTP 頭中傳遞。
對於IIS服務器來講,惟一標識一個網站的不是網站的名稱,而是網站的ID數值。當在IIS 5.0IIS 4.0中建立一個新網站時,Web服務器將下一個可用的數字順序號指定給網站,即Web服務器給默認站點指定的數字是1,下一個網站是2,接下來是34,等等),這個數字就是網站的惟一ID。若是要訪問一個網站的日誌文件,首先必須知道該網站的ID,由於日誌文件保存在W3SVC<網站的ID編號>目錄。若是Web服務器上運行着多個網站,僅僅依靠日誌文件的路徑名稱根本沒法判斷哪個日誌目錄屬於哪個網站,並且在編寫管理腳本和修改配置數據文件時,必須知道網站ID
IIS 5.0IIS 4.0中,從IIS管理器沒法直接找到網站的ID編號。而IIS 6.0的管理器在網站清單中增長了一個新的「標識符」列,該列的內容就是網站的ID編號。網站的ID是根據網站的名字計算出網站的ID,例如130023491,該網站對應日誌文件路徑爲「W3SVC130023491」。在IIS6中經過修改註冊表可使用原有的網站ID順序生成方式,也能夠禁用IIS 6.0新式的ID生成方式,禁用後順序生成是在現有的ID基礎上開始累加。如要要禁用現有的ID生成方式而改成順序生成ID方式,其具體的操做步驟是:找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetMgr\Parameters註冊子鍵,建立一個REG_DWORD值「IncrementalSiteIDCreation」,將它設置爲十進制「2」。

(六)安全以及安全策略

   IIS 6.0默認不安裝在Windows 2003 Server服務器中,即便按照缺省方式安裝,Web服務器只能提供靜態內容服務。除此以外Windows Server 2003還有一個新的組策略「禁止安裝IIS」,有了該組策略,能夠禁止Windows 2003在活動目錄(AD)森林中禁止不許備做Web服務器用的機器上安裝IIS 6.0,防止網絡上出現根本無用的、不安全的IIS 6.0服務器。  要想在IIS 6.0上運行程序,必須使用IIS 6.0的一種新特性——Web服務擴展(Web Service Extension)。
Web服務擴展管理中能夠看到「全部未知ISAPI擴展」和「全部未知CGI擴展」默認狀況下是禁用的,意味着除非明確地容許一個應用在IIS 6.0上運行,不然它就不能運行。若是一個用戶請求了某個沒有啓用的文件,IIS 6.0將向用戶返回404錯誤——文件或目錄沒有找到,同時在W3SVC日誌中記錄「404.2文件或目錄沒法找到:鎖定策略禁止該請求」。另外,「systemroot\system32」下有一個iisext.vbs腳本,它也可以配置並管理運行帶有IIS 6.0Windows Server 2003Web服務擴展、應用程序和單獨的文件。管理員可使用此腳原本啓用和列出應用程序;添加和刪除應用程序依存關係;啓用、禁用和列出 Web 服務擴展;以及添加、刪除、啓用、禁用和列出單個文件。
  另外一個安全方面的改進之處是IIS 6.0容許指派一個加密服務提供者(Cryptographic Service ProviderCSP),可以將基於硬件的安全套接字層(SSL)加速器集成到IIS 6.0,從而把加密任務從服務器的通用CPU轉移到了專門爲加密操做而優化的專用設備,有利於提升性能和可靠性。除此以外在IIS6.0中還有其它一些安全改進:
1)以具備低級訪問權限的帳戶運行。IIS 工做進程在訪問權限極少的用戶上下文中運行。這大大減小了潛在***的影響。
2)提升了ASP運行程序的安全性。全部的ASP內置功能老是以具備極少訪問權限的帳號IUSR_computername運行。
3)運行可執行文件的限制。爲了運行系統文件夾中的大多數可執行文件(如cmd.exe),必須是Administrators組、LocalSystemInteractiveService帳號的成員。該限制限制了對 Administrators的遠程訪問,所以匿名用戶沒法運行可執行文件。
4)修補程序管理。對於修補程序管理,管理員可在不中斷服務的狀況下安裝最新的安全修補程序。
5IIS 只爲對具備已知文件擴展名的文件的請求提供服務。若是請求內容的文件擴展名未映射到已知的擴展,則服務器拒絕請求。
6)內容的寫保護。在默認狀況下,拒絕匿名用戶(以IUSR_computername帳號運行)對 Web 內容進行寫入訪問。
7)超時和限制。在IIS 6.0中,默認設置是安全而主動的,這樣可最大限度地減小因之前太寬鬆的超時和限制而形成的***。
8)上載數據限制,管理員能夠限制能上載到服務器的數據。
9)緩衝區溢出保護,工做進程會檢測緩衝區溢出,並在檢測到時退出程序。
10)文件驗證,IIS 在將請求發送到請求處理程序(ISAPI 擴展)以前會驗證請求的內容是否存在。
11)腳本資源訪問:該權限容許訪問 ASP 頁腳本和其餘腳本的「源代碼」,它是新增功能,且在默認狀況下被禁用。它可在選擇了「讀取」或「寫入」權限時可用。

(七)異步CGI處理

IIS 5.0IIS 4.0以同步方式運行CGICommon Gateway Interface,通用網關接口)進程,這實際上意味着每次只有一個線程可以訪問一個CGI進程,因此IIS 5.0IIS 4.0CGI支持的可伸縮性不佳。IIS 6.0可以異步運行CGI進程,因此若是一個線程調用了一個CGI應用程序,它沒必要再等待CGI進程處理完畢和返回信息。異步CGI改善了IIS服務器運行CGI Web應用程序的性能,使得IIS可以運行更多執行關鍵任務的基於CGI的應用程序。
CGI程序在Web服務器接收到包含CGI程序名和程序所需參數的URL時執行。若是將 CGI 程序編譯爲可執行 (.exe) 文件,則必須提供包含程序執行權限的目錄,以便用戶能夠運行程序。若是 CGI 程序以腳本形式(例如 Perl 腳本)編寫,則既可爲目錄提供執行權限,也可爲其提供腳本權限。要使用腳本權限,必須將腳本解釋程序標記爲腳本引擎。
在默認狀況下IIS_WPG組不具有啓動CGI進程的權利。若是建立了新帳號並將其添加到 IIS_WPG 組以運行工做進程標識,還必須授予此帳號兩種啓動 CGI 進程的用戶權利。這些用戶權利是「調整進程的內存配額」和「替換進程級令牌」。 爲更加安全起見,Web 服務器不將命令解釋程序的特殊字符傳遞給映射的 CGI 應用程序。默認狀況下,「( , ; % < >」字符不能包含在調用 CGI 應用程序的 URL 中。

(八)應用程序池

   IIS 6.0只有在工做進程隔離模式下運行時才能使用這個應用程序池功能,應用程序池是將一個或多個應用程序連接到一個或多個工做進程集合的配置。由於應用程序池中的應用程序與其餘應用程序被工做進程邊界分隔,因此某個應用程序池中的應用程序不會受到其餘應用程序池中應用程序所產生的問題的影響。經過建立新的應用程序池以及爲其指派網站和應用程序,可讓服務器更加有效、可靠,同時也可讓其餘應用程序一直保持可用狀態。
    在應用程序池的「屬性」對話框有「回收」、「性能」、「運行情況」以及「標識」四個標籤。在工做進程隔離模式中,IIS能夠配置成按期從新啓動應用程序池中的工做進程,從而更好地管理那些有錯誤的工做進程。這確保了池中的應用程序運行正常,而且能夠恢復丟失的系統資源。默認狀況下,應用程序池每隔1740分鐘(29小時)回收一次。W3SVC根據「運行情況」頁的選項來判斷應用程序池運行是否正常。在默認狀況下,當IIS 6.0回收一個池時,它會使用一種稱爲「overlapped recycle」的回收技術。在這種回收模式下,失敗的工做進程仍會保持運行狀態,同時建立一個新的工做進程。

(九)配置數據

  在IIS 5.0IIS 4.0中,配置數據庫採用二進制文件結構,而在IIS 6.0中的配置數據由Metabase.xmlmbschema.xml這兩個XML文件構成。Metabase.xml包含IIS 6.0服務器的配置信息,mbschema.xml包含配置數據的模式定義。按照這種方式保存配置數據時,IIS 6.0利用系統的機器碼(Machine Key)加密配置數據的某些部分,所以,配置數據的副本只對建立該副本的機器有用,在IIS管理器還容許保存配置數據副本。在IIS6.0中還可使用命令行腳本iisback.vbs(在systemroot\System32中)建立和管理遠程或本地計算機的IIS配置的備份副本,管理員可使用此腳本工具建立其IIS配置的備份副本,從備份副本還原IIS配置以及列出和刪除備份副本。這樣能夠先精心配置一個模板,而後用它來建立和配置新的網站,並且在出現問題時,配置信息副本還能夠用來恢復網站的設置。
因爲IIS 6.0配置信息是可移植的,所以便於升級。IIS 6.0的配置數據是標準的文本文件(XML文件),能夠用記事本之類的文本編輯器打開和編輯。若是修改了IIS 5.0IIS 4.0的配置數據,有時必須從新啓動IIS,若是系統上網站的數量不少,可能須要很多時間。IIS 6.0支持一種「運行時容許編輯」功能,這樣IIS 6.0幾乎當即就能根據配置文件的設置做相應的修改,根本無需從新啓動。
IIS6.0中提供了配置文件歷史版本目錄,在進行配置/還原時能夠很方便的恢復到某個版本的配置。在IIS6.0配置中還提供了對某一個文件打開時直接進行受權——即在IIS管理器中選擇一個文件夾右鍵單擊,而後選擇「權限」菜單打開文件夾的「安全」對話框。在該對話框中能夠設置文件夾的NTFS受權,沒必要再離開IIS管理器,不但節約時間,並且很是方便。
  在IIS6.0中對「目錄安全性」頁下的「安全通訊」容許配置SSL、證書信任列表(CTL)、客戶證書。在IIS 5.0IIS 4.0中,除非在Web網站上安裝一個證書,不然不能訪問該屬性頁。IIS 6.0沒必要在Web服務器上安裝證書也能夠訪問和使用該屬性頁。

(十)通配符應用程序

   IIS 5.0IIS 4.0ISAPI篩選器能夠針對全部進入Web服務器或Web網站的請求執行操做的代碼。IIS 6.0提供了一種更加靈活的新型機制來提供一般由ISAPI篩選器提供的服務,它就是ISAPI截取器(Interceptor),或者稱爲通配符應用程序(Wildcard Application)。在 「應用程序配置」對話框中能夠將一個或多個ISAPI DLL配置成通配符應用程序,對於每個接收到的請求,IIS 6.0將調用這裏列出的各個通配符應用程序。除了針對全部網站配置通配符應用程序,還能夠針對單個網站或在目錄層次上配置通配符應用程序。因爲這些ISAPI截取器是標準的ISAPI應用程序,它們具備普通ISAPI應用程序具有的全部功能,包括訪問消息正文的能力。
  通配符應用程序能夠作到開發者要作的任何事情,諸如URL定製、驗證身份、記錄特殊的日誌信息、檢測***企圖、建立內容,等等。通配符應用程序結束處理後,它把請求轉交給適當的處理引擎(例如處理ASP頁面的asp.dll),由處理引擎進一步處理請求。另外,通配符應用程序還能夠經過調用爲ISAPI應用程序新增的ExecuteURL功能,將請求傳遞到同一個應用程序池中的任意頁面。

(十一)日誌功能

  與IIS4.xIIS5.x相比,IIS 6.0在日誌功能方面有許多重大的改進。在IIS 6.0中,記錄日誌的功能由http.sys實現,http.sys在內核模式下運行。這就加快了日誌寫入速度,同時避免了多個工做進程爭用同一日誌文件。當http.sys遇到錯誤時,不能將日誌信息寫入Web網站的日誌,這時http.sys會把事件寫入一個新的日誌文件httperr.log
  在排解故障、優化IIS 6.0的過程當中,httperr.log日誌文件是十分重要的。默認狀況下,httperr.log文件保存在system32/logfiles目錄。在httperr.log日誌文件中能夠找到的信息包括:全部的503(服務不可用)錯誤,空閒鏈接超時,解析URL時出現的各類錯誤,最後10個提交給失敗的應用程序池的請求。
  IIS 6.0提供了「集中的二進制日誌記錄」,它是多個網站用來向單個日誌文件寫入不帶格式的二進制日誌數據的過程。當啓用時,運行IISWeb服務器上的全部網站都將數據寫入單個日誌文件中,日誌文件的擴展名是「.ibl」。對於有大量網站的公司,建立成百上千個帶格式的日誌文件以及將日誌數據寫入磁盤中的過程可快速消耗運行 IIS 的服務器上寶貴的 CPU 和存儲器資源,從而產生性能和可伸縮性問題。要啓用二進制日誌功能,只要把配置文件的W3SVCC/CentralBinaryLoggingEnabled條目設置成ture1)便可。微軟的Log Parser 2.0工具可以讀取二進制日誌文件並生成報告,它還可以讀取前面介紹的httperr.log文件並生成報告。
  IIS 5.0IIS 4.0IIS管理器容許在指定日誌文件路徑的時候輸入一個遠程服務器的通用命名規範(UNC)的路徑,但Web服務器實際上不會把日誌保存到遠程服務器。IIS 6.0能夠經過網絡,使用完整的通用命名約定 (UNC) 路徑將日誌數據寫入到遠程共享上。

(十二)默認設置的變化

  在IIS 6.0中許多配置項目的默認值已經與IIS 5.0IIS 4.0的不一樣。
1)默認的鏈接超時時間已經從900秒減小到120秒。
2EnableParentPaths設置默認關閉。
3)若是某種文件類型沒有在MimeMap配置屬性中映射,全部對該類文件的請求將被拒絕。
4 默認狀況下,全部工做進程會在1740分鐘後自動回收,回收期間會話信息可能丟失。
5)運行CGI應用程序的用戶上下文必須是一個IIS_WPG組的成員。
6Windows 2003不安裝Collaboration Data Objects for Windows NT ServerCDONTS)。
7ASP請求默認限制在204800字節之下,每個域限制在100 KB之下。
8)默認狀況下,http.sys僅接受標題小於16 KB的請求。
9)在新安裝的 IIS 6.0 中的子驗證,在默認狀況下再也不啓用。
  本文從十二個方面介紹了IIS6.0的一些新功能和特性,IIS6.0的體系結構設計以及功能提高等方面具備突破性意義,與IIS4.0IIS5.0相比是一個里程碑,在IIS6.0中還有不少實用的功能和新特性,讀者朋友能夠親自去體驗IIS6.0
相關文章
相關標籤/搜索