
圖一
在圖一中,注意“所有未知ISAPI擴(kuò)展”和“所有未知CGI擴(kuò)展”這兩種Web服務(wù)擴(kuò)展。默認(rèn)情況下,這兩種擴(kuò)展是禁用的,意味著除非明確地允許一個(gè)應(yīng)用在IIS 6.0上運(yùn)行,否則它就不能運(yùn)行。如果一個(gè)用戶請(qǐng)求了某個(gè)沒有啟用的文件,IIS 6.0將向用戶返回404錯(cuò)誤――文件或目錄沒有找到,同時(shí)在W3SVC日志中記錄“
404.2文件或目錄無(wú)法找到:鎖定策略禁止該請(qǐng)求”。在IIS 6.0中,404.2和其他子狀態(tài)代碼是W3SVC日志文件的一項(xiàng)可選功能,用來(lái)幫助排解故障、疑難(IIS 5.0和IIS 4.0中也有子狀態(tài)代碼,不過(guò)不會(huì)在日志文件中記錄,但可以將它們轉(zhuǎn)到定制的錯(cuò)誤頁(yè)面,便于根據(jù)子狀態(tài)代碼執(zhí)行特殊的處理)。IIS 6.0的子狀態(tài)代碼很有用,它們提供了描述問(wèn)題的詳細(xì)信息,例如:403.20,禁止訪問(wèn):Passport登錄失??;403.18,禁止訪問(wèn):無(wú)法在當(dāng)前應(yīng)用程序池中執(zhí)行請(qǐng)求的URL;404.3,文件或目錄無(wú)法找到:MIME映射策略禁止該請(qǐng)求;500.19,服務(wù)器錯(cuò)誤:該文件的數(shù)據(jù)在配置數(shù)據(jù)庫(kù)中配置不正確。所有這些錯(cuò)誤和其他錯(cuò)誤都映射到定制的錯(cuò)誤頁(yè)面,錯(cuò)誤頁(yè)面不會(huì)把子狀態(tài)代碼發(fā)送給用戶,攻擊者無(wú)法獲知具體的錯(cuò)誤信息。
另一個(gè)安全方面的改進(jìn)之處是IIS 6.0允許指派一個(gè)加密服務(wù)提供者(Cryptographic Service Provider,CSP),能夠?qū)⒒谟布陌踩捉幼謱樱⊿SL)加速器集成到IIS 6.0,從而把加密任務(wù)從服務(wù)器的通用CPU轉(zhuǎn)移到了專門為加密操作而優(yōu)化的專用設(shè)備,有利于提高性能和可靠性。
二、配置數(shù)據(jù)
在IIS 5.0和IIS 4.0中,配置數(shù)據(jù)庫(kù)采用二進(jìn)制文件結(jié)構(gòu),但I(xiàn)IS 6.0放棄了這一做法。IIS 6.0的配置數(shù)據(jù)由兩個(gè)XML文件構(gòu)成:一個(gè)是Metabase.xml,包含IIS 6.0服務(wù)器的配置信息;另一個(gè)是mbschema.xml,包含配置數(shù)據(jù)的模式定義。IIS管理器提供了一項(xiàng)新的功能,允許保存配置數(shù)據(jù)副本,只要右擊Web網(wǎng)站,然后選擇“所有任務(wù)”→“將配置保存到一個(gè)文件”,然后指定配置數(shù)據(jù)副本的文件名字和保存路徑即可。按照這種方式保存配置數(shù)據(jù)時(shí),IIS 6.0利用系統(tǒng)的機(jī)器碼(Machine Key)加密配置數(shù)據(jù)的某些部分,因此,配置數(shù)據(jù)的副本只對(duì)創(chuàng)建該副本的機(jī)器有用。
不過(guò),在“將配置保存到一個(gè)文件”對(duì)話框中,我們可以選中“用密碼對(duì)配置進(jìn)行加密”選項(xiàng),然后指定密碼,用密碼來(lái)保護(hù)導(dǎo)出的配置文件。如果提供了密碼,IIS 6.0將用密碼來(lái)替代機(jī)器碼,以后只要提供同一個(gè)密碼,就可以將配置數(shù)據(jù)導(dǎo)入到另一個(gè)服務(wù)器。另外,我們可以使用命令行腳本iisback.vbs(在systemroot/System32中)創(chuàng)建和管理遠(yuǎn)程或本地計(jì)算機(jī)的IIS配置的備份副本,管理員可以使用此腳本工具創(chuàng)建其IIS配置的備份副本,從備份副本還原IIS配置以及列出和刪除備份副本。
有些時(shí)候,我們只要保存某個(gè)應(yīng)用程序池、Web網(wǎng)站或虛擬目錄的配置,而不是保存全部的配置信息,這時(shí)可以按照如下步驟操作:右擊要保持配置信息的對(duì)象,選擇菜單“所有任務(wù)”→“將配置保存到一個(gè)文件”,如圖二所示,如果準(zhǔn)備將配置數(shù)據(jù)導(dǎo)入到另一個(gè)服務(wù)器,必須提供加密文件的密碼。

圖二
如果右擊一個(gè)應(yīng)用程序池、Web網(wǎng)站組或單個(gè)網(wǎng)站,然后選擇“新建”→“應(yīng)用程序池(來(lái)自文件)”,或者“新建”→“網(wǎng)站”→“來(lái)自文件”,或者“新建”→“虛擬目錄(來(lái)自文件)”,就可以從保存的配置文件創(chuàng)建新的應(yīng)用程序池、Web網(wǎng)站或虛擬目錄。因此,必要的時(shí)候,我們可以只創(chuàng)建和配置一個(gè)對(duì)象,利用“將配置保存到一個(gè)文件”功能導(dǎo)出對(duì)象
的配置信息,然后利用“新建”→“虛擬目錄(來(lái)自文件)”等功能將配置信息導(dǎo)入到多個(gè)Web網(wǎng)站。這就是說(shuō),我們可以先精心配置一個(gè)模板,然后用它來(lái)創(chuàng)建和配置新的網(wǎng)站。當(dāng)然,出現(xiàn)問(wèn)題時(shí),配置信息副本還可以用來(lái)恢復(fù)網(wǎng)站的設(shè)置。
由于IIS 6.0配置信息是可移植的,它還有另外一個(gè)好處,這就是方便了升級(jí)。假設(shè)我們升級(jí)時(shí)不能直接在Win 2K/IIS 5.0上安裝Windows 2003/IIS 6.0,必須換一臺(tái)機(jī)器,這時(shí)就要解決如何將IIS 5.0不可移植的配置數(shù)據(jù)轉(zhuǎn)移到新的IIS 6.0服務(wù)器的問(wèn)題。利用IIS 6.0配置數(shù)據(jù)的可移植性,解決辦法是:首先安裝好新的Windows 2003服務(wù)器,為原來(lái)的Win 2K服務(wù)器做一個(gè)完整的備份,然后在Win 2K服務(wù)器上安裝第二個(gè)Windows 2003服務(wù)器將它升級(jí),導(dǎo)出第二個(gè)Windows 2003服務(wù)器的配置數(shù)據(jù)(用密碼加密),然后將配置數(shù)據(jù)導(dǎo)入到新的Windows 2003服務(wù)器。新安裝的Windows 2003服務(wù)器必須作一些調(diào)整,例如允許IUSR帳戶等,但至少現(xiàn)在不必重新執(zhí)行全部配置操作了。
IIS 6.0的配置數(shù)據(jù)是標(biāo)準(zhǔn)的文本文件(XML文件),所以可以用記事本之類的文本編輯器打開和編輯。如果修改了IIS 5.0或IIS 4.0的配置數(shù)據(jù),有時(shí)必須重新啟動(dòng)IIS,如果系統(tǒng)上網(wǎng)站的數(shù)量很多,可能需要不少時(shí)間,例如ISP的服務(wù)器就屬于這類情況。為了解決這個(gè)問(wèn)題,IIS 6.0支持一種“運(yùn)行時(shí)允許編輯”功能?!斑\(yùn)行時(shí)允許編輯”功能按照如下方式啟用:在IIS管理器中,右擊服務(wù)器,選擇菜單“屬性”,然后選中“允許直接編輯配置數(shù)據(jù)庫(kù)”選項(xiàng),如圖三所示。啟用了這個(gè)功能之后,如果我們用記事本打開配置數(shù)據(jù)文件,插入一個(gè)虛擬目錄的配置,然后保存并關(guān)閉配置文件,IIS 6.0幾乎立即就能根據(jù)配置文件的設(shè)置作相應(yīng)的修改,根本無(wú)需重新啟動(dòng)。

圖三
既然允許直接編輯配置文件,因配置文件不合法造成的服務(wù)器、應(yīng)用程序故障也必然增多。為此,IIS 6.0提供了配置文件歷史版本目錄,即/system32/inetsrv/history,每次修改配置數(shù)據(jù)或重新啟動(dòng)IIS 6.0,IIS 6.0都會(huì)在該目錄中保存一份原有的配置數(shù)據(jù)。
三、IIS管理器
每次產(chǎn)品重大升級(jí),人們都會(huì)試圖從用戶界面尋找令人激動(dòng)的新功能。IIS 6.0的管理器確實(shí)有了變化,不過(guò)改動(dòng)之處出乎意料地少。
其中一個(gè)改動(dòng)之處雖小,但很實(shí)用。如果在IIS管理器中右擊一個(gè)文件夾,現(xiàn)在可以選擇“權(quán)限”菜單打開文件夾的“安全”對(duì)話框。在這個(gè)對(duì)話
框中可以設(shè)置文件夾的NTFS授權(quán),不必再離開IIS管理器。雖然這是一個(gè)小小的改動(dòng),也許它今年會(huì)為全世界所有的IIS管理員總共節(jié)省數(shù)千小時(shí)的工作時(shí)間。
右擊一個(gè)Web網(wǎng)站,選擇“屬性”,轉(zhuǎn)到“目錄安全性”頁(yè),點(diǎn)擊“安全通信”下面的“編輯”按鈕,在這里可以找到另一個(gè)重要的改動(dòng)之處――安全通信屬性頁(yè)允許配置SSL、證書信任列表(CTL)、客戶證書。在IIS 5.0和IIS 4.0中,除非在Web網(wǎng)站上安裝一個(gè)證書,否則不能訪問(wèn)該屬性頁(yè),這一限制令人不快,因?yàn)閺募夹g(shù)上看,配置CTL、客戶證書并不要求服務(wù)器上安裝了證書,換句話說(shuō),在IIS 5.0中我們安裝證書的唯一用途可能就是因?yàn)橛脩艚缑嫘枰?。IIS 6.0改正了這一多余的要求,現(xiàn)在我們不必在Web服務(wù)器上安裝證書也可以訪問(wèn)和使用該屬性頁(yè)了。
四、通配符應(yīng)用程序
如果你熟悉IIS 5.0和IIS 4.0的ISAPI篩選器,可能也熟悉它們的缺點(diǎn)。ISAPI篩選器不僅編寫困難,而且由于它們?cè)贗netinfo進(jìn)程內(nèi)運(yùn)行,如果編寫時(shí)不小心留下了一點(diǎn)錯(cuò)誤,很容易導(dǎo)致災(zāi)難性的后果,出錯(cuò)的代碼可能造成整個(gè)IIS崩潰。另外,ISAPI篩選器不能擁有常規(guī)ISAPI DLL擁有的功能。當(dāng)然,不管怎樣,在IIS 5.0和IIS 4.0中,ISAPI篩選器仍是一種非常有用的組件,是唯一可以針對(duì)所有進(jìn)入Web服務(wù)器或Web網(wǎng)站的請(qǐng)求執(zhí)行操作的代碼。
IIS 6.0提供了一種更加靈活的新型機(jī)制來(lái)提供通常由ISAPI篩選器提供的服務(wù),它就是ISAPI截取器(Interceptor),或者稱為通配符應(yīng)用程序(Wildcard Application)。通配符應(yīng)用程序的配置方式是:在IIS管理器中右擊Web網(wǎng)站,選擇菜單“屬性”,轉(zhuǎn)到“主目錄”頁(yè)面,點(diǎn)擊“應(yīng)用程序設(shè)置”下面的“配置”按鈕,出現(xiàn)“應(yīng)用程序配置”對(duì)話框,如圖四所示。在對(duì)話框的“映射”頁(yè)中,我們可以將一個(gè)或多個(gè)ISAPI DLL配置成通配符應(yīng)用程序。對(duì)于每一個(gè)接收到的請(qǐng)求,IIS 6.0將調(diào)用這里列出的各個(gè)通配符應(yīng)用程序。除了針對(duì)所有網(wǎng)站配置通配符應(yīng)用程序,還可以針對(duì)單個(gè)網(wǎng)站或在目錄層次上配置通配符應(yīng)用程序。由于這些ISAPI截取器是標(biāo)準(zhǔn)的ISAPI應(yīng)用程序,它們具有普通ISAPI應(yīng)用程序具備的所有功能,包括訪問(wèn)消息正文的能力,而不僅僅象ISAPI篩選器那樣訪問(wèn)消息頭。

圖四
通配符應(yīng)用程序可以做到開發(fā)者要做的任何事情,諸如URL定制、驗(yàn)證身份、記錄特殊的日志信息、檢測(cè)攻擊企圖、創(chuàng)建內(nèi)容,等等。通配符應(yīng)用程序結(jié)束處理后,它把請(qǐng)求轉(zhuǎn)交給適當(dāng)?shù)奶幚硪妫ɡ缣幚鞟SP頁(yè)面的asp.dll),由處理引擎進(jìn)一步處理請(qǐng)求。另外,通配符應(yīng)用程序還可以通過(guò)調(diào)用為ISAPI應(yīng)用程序新增的ExecuteURL功能
,將請(qǐng)求傳遞到同一個(gè)應(yīng)用程序池中的任意頁(yè)面。
新增的ISAPI通配符應(yīng)用程序?yàn)閯?chuàng)造性的應(yīng)用程序設(shè)計(jì)大開方便之門。例如,IIS 6.0的URL授權(quán)功能就是作為一個(gè)ISAPI通配符應(yīng)用程序(urlauth.dll)實(shí)現(xiàn)。URL授權(quán)功能允許IIS 6.0根據(jù)一系列的規(guī)則授予對(duì)某個(gè)URL的訪問(wèn)權(quán),例如用戶是否為某個(gè)組的成員、地理位置,以及其他在數(shù)據(jù)庫(kù)或AD中與用戶有關(guān)的信息。有關(guān)ISAPI通配符應(yīng)用程序和URL授權(quán)的更多信息,請(qǐng)參見IIS 6.0的幫助文檔。
新聞熱點(diǎn)
疑難解答
圖片精選