由于被越來越多的駭客和制造者作為首要攻擊目標,IIS便也成為了可信賴計算計劃中首要關注的內容。因此,IIS 6.0被完全的重新設計,以實現(xiàn)默認安全和設計安全。本文主要講述了IIS 6.0在默認設置和設計上安全性的改變是如何使其成為關鍵web應用的平臺。
默認安全
過去,包括像這樣的,都在他們的web服務器上安裝一系列的默認示例腳本,文件處理和最小文件授權,以提高管理員管理的靈活性和可用性。但是,這些默認設置都增加了IIS的被攻擊面,或者成為了攻擊IIS的基礎。因此,IIS 6.0被設計成了一個比早期產品更安全的平臺。最顯而易見的變化是IIS 6.0并沒有被Windows Server 2003默認安裝,而是需要管理員顯式的安裝這個組件。其他的變化包括:
·默認只安裝靜態(tài)HTTP服務器
IIS 6.0的默認安裝被設置為僅安裝靜態(tài)HTML頁面顯示所需的組件,而不允許動態(tài)內容。下表比較了IIS 5.0和IIS 6.0的默認安裝設置:

·默認不安裝應用范例
IIS 6.0中不再包括任何類似showcode.asp或codebrws.asp等的范例腳本或應用。這些程序原被設計來方便程序員快速察看和調試的連接代碼,但是由于showcode.asp和codebrws.asp沒有正確的進行輸入檢查,以確定所訪問的文件是否位于站點根目錄下。這就允許攻擊者繞過它去讀取系統(tǒng)中的任何一個文件(包括敏感信息和本應不可見的配置文件),參考以下鏈接以獲取該漏洞的更多的細節(jié):http://www.microsoft.com/technet/treeview/default.asp?
url=/technethttp://security.chinaitlab.com/bulletin/MS99-013.asp
·增強的文件訪問控制
匿名帳號不再具有web服務器根目錄的寫權限。另外,用戶也被相互隔離在他們自己的根目錄中。這些限制有效的避免了用戶向文件系統(tǒng)的其他部分上傳一些有害程序。例如攻擊者可以向/scripts目錄上傳一些有害的可執(zhí)行代碼,并遠程執(zhí)行這些代碼,從而攻擊web站點。
·虛擬目錄不再具有執(zhí)行權限
虛擬目錄中不再允許執(zhí)行可執(zhí)行程序。這樣避免了大量的存在于早期IIS系統(tǒng)中的目錄遍歷漏洞、上傳代碼漏洞以及MDAC漏洞。
·去除了子驗證模塊
IIS 6.0中去除了IISSUBA.dll。任何在早期IIS版本中,需要該DLL模塊來驗證的賬號,現(xiàn)在需要具有"從網絡上訪問這臺計算機"的權限。這個DLL模塊的去除,可以強制要求所有的訪問都直接去SAM或者活動目錄進行身份驗證,從而減少IIS可能的被攻擊面。
·父目錄被禁用
IIS 6.0中默認禁用了對父目錄的訪問。這樣可以避免攻擊者跨越web站點的目錄結構,訪問服務器上的其他敏感文件,如SAM文件等。當然也請注意,由于父目錄默認被禁用,這可能導致一些從早期版本IIS上遷移過來的應用由于無法使用父目錄而出錯。
安全設計
IIS 6.0設計中安全性的根本改變表現(xiàn)在:改善的數(shù)據有效性、增強的日志功能、快速失敗保護、應用程序隔離和最小權限原則。
改善的數(shù)據有效性
IIS 6.0設計上的一個主要新特性是工作在內核模式的HTTP驅動--HTTP.sys。它不僅提高了web服務器的性能和可伸縮性,而且極大程度的加強了服務器的安全性。HTTP.sys作為web服務器的門戶,首先解析用戶對web服務器的請求,然后指派一個合適的用戶級工作進程來處理請求。工作進程被限制在用戶模式以避免它訪問未授權的系統(tǒng)核心資源。從而極大的限制了攻擊者對服務器保護資源的訪問。
IIS 6.0通過在內核模式的驅動中整合一系列的安全機制,以提升其設計上固有的安全性。這些機制包括避免潛在的緩沖溢出,改善的日志機制以輔助事件響應進程和檢查用戶有效性請求的先進URL解析機制。
為了第一時間的避免潛在的緩沖區(qū)和內存溢出漏洞的利用,微軟通過在HTTP.sys中進行特殊的URL解析設置以實現(xiàn)IIS 6.0安全設計中的深度防御原則。這些設置還可以通過修改注冊表中特定的鍵值來進一步優(yōu)化。下表提供了主要注冊表鍵值的位置(均在以下路徑HKLM\System\CurrentControlSet\Services\HTTP\Parameters):

增強的日志機制
一個全面的日志是檢測或響應一個安全事故的基礎要求。微軟也意識到了在HTTP.sys中進行全面的、可靠的日志機制的重要性。HTTP.sys在將請求指派給特定的工作進程之前就進行日志記錄。這樣可以保證,即使工作進程中斷了,也會保留一個錯誤日志。日志由發(fā)生錯誤的時間戳、來源目的IP和端口、協(xié)議版本、HTTP動作、URL地址、協(xié)議狀態(tài)、站點ID和HTTP.sys的原因解釋等條目構成。原因解釋能夠提供詳細的錯誤產生原因的信息,如由于超時導致的錯誤,或由于工作進程的異常終止而引發(fā)的應用程序池強行切斷連接而導致的錯誤。