微軟IIS 7安全的最佳做法
多年來,微軟的互聯網信息服務(IIS)Web服務器給許多企業帶來了大量的安全問題,包括十二年前臭名昭著的Code Red蠕蟲病毒。IIS的一個重要安全隱患是它會默認安裝和啟用很多功能,比如腳本和虛擬目錄等,但這其中的許多功能又被證實是很容易被利用,從而導致重大安全事故。
幾年前發布的IIS 6采用了一種“默認鎖定”的方法,即不安裝某些功能,或者安裝以后將其默認禁用,而最新版本IIS 7則采取了更多措施。Windows Server 2008甚至沒有默認安裝IIS 7,而在安裝的時候,IIS 7網絡服務器經過配置后只提供具有匿名身份驗證和本地管理的靜態內容,雖然生成的只是最簡單的網絡服務器,但卻把受到安全攻擊的幾率降至最小。
做到這一點是可能的,因為IIS 7已被完全模塊化。讓我們簡單的研究一下IIS 7更加安全的原因,以及它的安全性是如何實現的。通常而言,管理員可以從40多個單獨的功能模塊中做出選擇,實現完全自定義的安裝。通過只安裝某個網站所需要的功能,管理員可以大大減小潛在的攻擊面,并且節省資源。
然而,請注意這只適用于清潔安裝(clean install)。如果你在運行老版本的IIS,你又要升級你的Windows操作系統,所有的元數據庫和IIS狀態信息都會被收集并保存。結果,許多不必要的Web服務器功能會在升級時被安裝到系統中。因此,企業在升級之后最好重新查看應用程序對IIS功能的依賴性,并卸載不需要的IIS模塊。
更少的組件意味著更少的設置管理,以及更少的問題修補,因為人們只需要維護那些正在使用的模塊附屬內容。這樣可以減少停機時間并提高可靠性。此外,標簽混亂的IIS管理控制臺已經被更加直觀的GUI工具所取代,這讓安全設置的可視化更加簡單,理解起來也更加容易。比如,如果支持基本身份驗證的組件沒有安裝在你的系統中,該組件的配置設置就不會出現,以免混淆視聽。
那么,安全運行IIS可能需要哪些組件呢?下面列出的九個組件中,運行靜態網頁以及其他功能的網站都需要前六個;而需要加密服務器與客戶端之間數據的人則需要第七和第八項;當你擁有一個Web farm,并且想要farm中每個Web服務器都使用相同的配置文件和加密密鑰時,你將需要第九項共享配置:
1、驗證組件,其中包括集成Windows驗證、客戶端證書驗證以及基于ASP.NET格式的驗證,這些驗證可以讓你在應用層上管理客戶端注冊和驗證,而不是依靠Windows賬戶。
2、URL驗證,它很好地與ASP.NET會員和角色管理整合,然后根據用戶名和角色來授權或者拒絕應用程序中的URL,防止沒有授權的用戶去訪問受限制的內容。
3、IPv4地址和域名規則(Domain Name Rules)提供了基于IP地址和域名的內容訪問管理。新屬性“allowUnlisted”可以更容易的阻止人們訪問所有的IP地址,除非列表中允許。
4、CGI和ISAPI約束,它們允許你用CGI文件方式(.exe)和ISAPI擴展方式(.dll)啟用或禁用動態內容。
5、請求過濾器,它結合了UrlScan工具中限制HTTP請求類型的功能,IIS 7將會拒絕這些包含可疑數據的請求。像Apache的mod_rewrite屬性一樣,它可以用正則表達式來阻止攻擊或者基于動詞、文件擴展名、大小、命名空間和時序的修改請求。
6、日志,它現在可以提供有關應用程序池、進程、網站、應用程序域和運行請求的實時狀態信息,并且能夠在整個請求與應答過程中跟蹤某個請求。
7、服務器證書
8、安全套接層
9、共享配置
其他增強IIS 7安全性的功能還包括:Web服務器專用的新型內置用戶帳戶和組帳戶。該功能啟用了一個系統之間通用的安全標識符(SID),從而簡化了訪問控制列表管理,以及應用程序池保護機制(sandboxing)。同時,應用程序管理員可以配置哪些設置,服務器管理員都能完全控制,同時讓他們直接在應用程序上做出配置的改變,無需使用管理權限去訪問服務器。
IIS 7與以前的產品相比非常不同,這對用戶來說是一件好事。它的設計與創建遵循了經典的安全原則,它為使用Windows系統的企業提供了一個比過去更加安全的、更容易配置和管理的Web服務器。從安全的角度看,它可能還做得不夠,還不能動搖Linux和Apache工作站的地位,但是微軟的確已經縮小了與它們的差距。管理員可能還需要一段時間來適應新的模塊化方式以及管理工具和任務。盡管管理員都熟悉Windows操作系統和框架,但仍需要培訓和進行系統測試。
【編輯推薦】