保障Web服務器的安全可能是令IT部門最頭疼的問題之一。每當想到系統防御中存在著漏洞,這些漏洞允許外部人員訪問我們的網絡和數據,我們就會利用自己的最大努力盡可能地將系統的對外暴露完全關閉。而且我們不太可能將Web服務器與網絡的其它部分完全分離開,雖然這樣會極大地減少可能的風險。更別說,這臺機器需要與非常敏感的數據進行交互,這些數據你是絕對不可能使其受到破壞的。
如果你喜歡微軟的產品,你可能選擇使用微軟的Web服務器產品─IIS(Internet Information Services)。雖然Apache無疑是響應HTTP響應請求的最重要的軟件產品。(根據Netcraft的每月調查,Apache占有超過50%市場份額),IIS在的Web服務器中約占三分之一。
使用IIS這種較為流行的、容易得到的、容易安裝的產品有著另外一面,那就是黑客們早就準備好了如何對它進行訪問,而且他們可以找到各種各樣的方法來利用系統的漏洞。不幸的是,IIS從一開始就沒有真正地提供一個Web服務器所要求的安全水平,因此那些對IIS情有獨鐘的人需要當心了!
在此,我們假定你是在Windows Server 2003中使用IIS 6.0,如果你沒有使用該軟件,建議你用這個版本。你最好使用一個正確配置的Windows Server 2003/IIS 6,而不是使用其以前的版本。
最基本的安全
在采取措施之前,需要從一些基本的問題開始,特別是一些基本的規則需要對所有的服務器實施。例如,確保你已經為你的Web服務器準備了良好的備份和恢復過程,以求使“巖機”時間最小化,而且你的Web服務器要位于一個堅固的、受監視的、最新的防火墻之后。定期監視服務器的日志,并且在安全更新可用時立即安裝之。
當然,最重要的規則就是最簡單的:如果你不需要它,就不要用它!現在IIS已經不再是默認安裝了,因此如果因為你一開始就安裝了一個本不需要的服務,而導致有人攻擊了你的系統你可不要后悔莫及。
只要可能,要讓服務器只負責Web頁面。如果預算允許的話,應該盡可能地將服務器的職責進行分離。例如,讓一臺計算機作為域控制器,另一臺作為SQL 服務器等等。如果你的預算不允許,就要確保讓管理層徹底明白,這種省錢之道有可能會導致嚴重的后果。
進一步的安全
好了,這樣一來你就需要設置一臺主機掌管公共訪問的Web站點而且你確定要使用IIS這種Web服務器。假使你已經安裝了所有的可用的補丁,改變了管理員的登錄名(不再是administrator,而是一個不容易猜測的名稱),而且你還為其創建了一個不是過于簡單的口令,卸載了你絕對不需要的任何程序或服務,并且將你的Web服務器放在一個DMZ的合理位置。這是一個很好的開始,不過還遠遠不夠。
默認情況下,IIS 6.0是被鎖定的。雖然默認安裝只能將靜態的頁面內容提供給訪問者(ASP.NET 和 FrontPage Server Extensions 需要手動設置啟用),Windows系列產品簡單易用的另外一面是容易受到利用,不管是出于什么目的。要解決這個問題,可以下載并運行Microsoft Baseline Security Analyzer (MBCA)。MBCA會查看你的系統并比較徹底地發現一些錯誤的安全設置,希望在別有用心的人發現之前你能解決這些問題。
還有一點,IIS不僅僅是一個Web服務器,而是一個互聯網服務的整套組件。FTP、SMTP,NNTP和其它的服務也都包含在這個組件中。
默認地,匿名用戶能夠以一個名為IUSR_yourcomputername的用戶名訪問你的系統。要確保你正使用NTFS(這要遠比FAT32安全),而且要保證NTFS對這種用戶的訪問權限可能的嚴格。只有在不得不為匿名用戶放開寫權限時,你才能這樣做。
所有這些都假定我們正在談論的是一個可被公眾訪問的web服務器。如果你的機器只能被已知的用戶訪問,你就應該完全禁用匿名用戶的訪問,并且考慮只允許特定的IP地址的連接。如果你對此不太了解,可到微軟的網點找到相關的鏈接,根據其易于操作的文檔進行。
“隱藏信息”成就的安全
首先,需要強調,我并不是提倡通過隱藏某些信息作為防御的唯一手段。只通過隱藏這種手段,與沒有采用什么安全措施沒有什么兩樣。然而,如果將其與本文介紹的其它的方法結合起來,它就會很有用處。如果用這種手段能夠阻止25%的可能的黑客,這不是很有意義的事情嗎?
記住,黑客用以攻擊的手段與其所檢測到的Web服務器的版本是息息相關的。如果你能隱藏正在使用IIS的這個事實,那么,你就會挫敗一些攻擊者的險惡居心,這要比在發現攻擊之后再進行阻止要強多了。
真得感謝微軟,其IIS 6.0并沒有允許遠程用戶通過一個簡單的與80端口的telnet請求而使其得到IIS的版本。不過,還是有些細節會透露出使用的是IIS軟件。例如,默認的“under construction”(正在建設中……)頁面(只要安裝了IIS就會創建)就會提及“IIS”這個名稱,正如默認的錯誤頁面(404,etc)所顯示的那樣。因此,立即修改這些文件并隱藏這種信息!
此外,如果這不是一個可被公共訪問的服務器,可以考慮將IIS與一個非標準的端口綁定。一種簡單的攻擊方法會首先確定80端口是否可用。不過,如果某個家伙如果掃描你計算機的所有端口試圖找到IIS,你可能會花費額外一些時間來檢測和阻礙這種攻擊。