為了提高IIS的安全性,微軟提供了兩個工具:IIS Lockdown和URLScan,其中IIS Lockdown 2.1包含了URLScan。IIS Lockdown 2.1具有如下功能:
⑴ 禁用或者刪除不必要的IIS服務和組件。
⑵ 修改默認配置,提高系統文件和Web內容目錄的安全性。
⑶ 用URLScan來過濾HTTP請求。
本文介紹如何運用IIS Lockdown 2.1的前兩項功能。注意本文的說明針對 IIS Lockdown 2.1版本,以前版本的用法大不相同。
一、注意事項
IIS Lockdown會改變IIS的運行方式,因此很可能與依賴IIS某些功能的應用沖突。特別地,如果要在一個運行Microsoft Exchange 2000 Server、Exchange Server 5.5或Microsoft SharePoint Portal Server的服務器上安裝IIS Lockdown和URLScan,應當加倍小心。
微軟的兩篇文章解釋了可能遇到的困難和解決辦法:《XADM:在Exchange 2000環境中使用IIS Lockdown向導的已知問題和調整策略》http://support.microsoft.com/default.aspx?scid=kb;en-us;q309677),以及《SPS:IIS Lockdown工具影響SharePoint Portal Server》http://support.microsoft.com/default.aspx?scid=kb;en-us;q309675)。
另外,在正式應用IIS Lockdown或URLScan之前,務必搜索微軟的知識庫,收集可能出現問題的最新資料。掌握這些資料並了解其建議之後,再在測試服務器上安裝IIS Lockdown,全面測試Web應用需要的IIS功能是否受到影響。最後,做一次全面的系統備份,以便在系統功能受到嚴重影響時迅速恢復。
二、安裝
IIS Lockdown 2.1可以http://www.microsoft.com/downloads/release.asp?releaseid=33961下載。下載之後得到一個iislockd.exe,雙擊運行,把它解壓縮到一個臨時目錄並啟動IIS Lockdown向導。但是,如果要用IIS Lockdown來保護多個服務器,最好按照下文的說明把它解壓縮到一個專用目錄,這樣就不必每次運行IIS Lockdown都要重新解壓縮了。
必須注意的是,下載得到的是一個自解壓縮的執行文件,這個執行文件與壓縮包裡面的應用執行文件同名。因此,如果把iislockd.exe解壓縮到它本身所在的目錄,就會引起文件名稱沖突。請按照下面的安裝步驟執行,以避免可能出現的問題:
㈠ 將iislockd.exe下載到一個臨時目錄。
㈡ 打開控制台窗口,進入臨時目錄,執行命令“iislockd.exe /q /c /t:c:\IISLockdown”解開壓縮,/q要求以“安靜”模式操作,/c要求IIS Lockdown只執行提取文件的操作,和-t選項一起使用,-t選項指定了要把文件解壓縮到哪一個目錄(例如在本例中,要求把文件解壓縮到c:\IISLockdown目錄)。表一列出了iislockd.exe解壓縮得到的主要文件,注意iislockd.exe包含了URLScan的文件,但本文不准備詳細探討URLScan。
表一:IIS Lockdown 2.1主要文件
IIS Lockdown文件 說明
iislockd.exe IIS Lockdown主執行文件。
iislockd.ini 配置和選項文件。
iislockd.chm 聯機幫助。
runlockdunattended.doc 有關“無人值守”運行方式的文檔。
404.dll “文件沒有找到”應答文件。
URLScan文件 說明
urlscan.exe URLScan安裝程序包。
urlscan.doc URLScan文檔。
urlscan*.ini 配置和選項文件。
urlscan_unattend.txt 無人值守方式安裝URLScan的配置文件。
readme.txt 針對無人值守方式運行URLScan的說明
unattend.cmd 無人值守方式安裝URLScan的命令文件。
三、實踐應用
IIS Lockdown的用法很簡單。雙擊啟動iislockd.exe,出現Internet Information Services Lockdown向導,按照向導的提示一步一步操作,很快就可以為Web服務器加上一把鎖。首先出現的是歡迎屏幕,點擊“下一步”出現最終用戶許可協議屏幕,選中I Agree選項,點擊“下一步”進入服務器模板選擇對話框
對話框中選擇一個最接近當前服務器配置的模板,本文假定使用Static Web Server(靜態Web服務器)模板。選中View Template Settings選項,向導將顯示出一系列有關該模板類型的對話框,如果不選中這個選項,向導將跳過這些對話框,直接進入URLScan安裝過程。
點擊“下一步”,出現Internet Services對話框,如圖二,這是第一個真正配置IIS加鎖選項的頁面。IIS Lockdown能夠禁用或刪除四種IIS服務:HTTP,FTP,SMTP,以及NNTP(Network News Transport Protocol,網絡新聞傳輸協議)。怎樣才能知道哪些服務才是必需的呢?除了前面選擇的服務器模板類型可資參考之外,個人經驗、全面地測試也同樣重要。
Internet Services對話框中的IIS服務選項有三種狀態:
㈠ 啟用:選項處於選中狀態,檢查框有標記,例如圖二的Web services。清除檢查框的標記將禁用服務。
㈡ 啟用,但推薦禁用,例如圖二的E-mail service:選項沒有選中,檢查框沒有標記。如果保留檢查框的清除狀態,服務將被禁用。
㈢ 禁用,且不可選擇,例如圖二的File Transfer service:如果一個選項變灰,它的檢查框也沒有選中標記,則表示不允許修改該服務,可能是因為服務沒有安裝,也可能是因為當前選擇的服務器模板需要該服務。
如果服務器的用途不是經常改變,最好徹底刪除不用的服務,這樣就再也沒有人會意外地激活它了。
點擊“下一步”,向導顯示出Script Maps(腳本映射)對話框,如圖三所示。腳本映射是指把特定的文件擴展名關聯到ISAPI(Internet Server API)執行文件,由指定的ISAPI文件來解釋該類文件的內容。例如,.asp文件類型映射到asp.dll。
如果禁用了某種類型的腳本文件,IIS Lockdown會把腳本映射指向一個特殊的DLL,當用戶試圖運行該類腳本文件時這個DLL會返回“文件沒有找到”的信息。要禁用某種類型的文件,只需在圖三對話框中清除該類文件的檢查框。
點擊“下一步”,進入最後一個IIS Lockdown的選項對話框Additional Security,如圖四所示,通過這個對話框可以刪除不需要的目錄,禁止未經授權的用戶訪問文件系統。IIS安裝好之後會有許多用於開發和學習的虛擬目錄,正式向用戶提供服務的環境不需要這些目錄,IIS Lockdown將刪除圖四對話框中選中的虛擬目錄,但仍會完好地保留這些目錄包含的數據。
默認情況下,IIS會限制對Web內容目錄的匿名訪問,但還應該加上一層對系統工具(如cmd.exe)的保護,以防止未經授權的用戶在系統安全出現漏洞時訪問這些工具。如果選中圖四對話框中的Running system utilities (for example, Cmd.exe, Tftp.exe)檢查框,IIS Lockdown將修改\%windir%目錄及其子目錄下所有執行文件的訪問控制屬性(ACE,Access Control Entry),明確地禁止本地Web匿名用戶組和Web用戶組的運行權限。如果選中Writing to content directories 檢查框,IIS Lockdown還會加強所有Web內容目錄的安全性,即設置ACE,禁止本地Web匿名用戶組和We應用組的寫入權限。
圖四窗口底部有一個Disable Web Distributed Authoring and Versioning(WebDAV)選項,即禁用Web分布式創作和版本控制。WebDAV功能用來支持遠程Web內容創作和管理,如果確實不必用到該功能,那就可以選中Disable Web Distributed Authoring and Versioning檢查框。選中該選項之後,IIS Lockdown將設置httpext.dll(實現WebDAV功能的執行文件)的ACE,禁止將httpext.dll文件裝入inetinfo.exe的進程,從而也就禁止了WebDAV功能。
點擊圖四對話框的“下一步”,IIS Lockdown將詢問是否要安裝URLScan,如圖五。如果要用篩選器來禁止IIS處理某些可能有惡意的URL,即經常被黑客用來攻擊系統的URL,那就可以用URLScan作為守衛IIS的前門(即篩選器)。本文不准備詳細介紹URLScan,請訪http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/tools/urlscan.asp了解更多有關URLScan的說明。
安裝URLScan的選項,點擊“下一步”,IIS Lockdown顯示出一系列將要執行的操作,如圖六。點擊“取消”可以放棄操作,點擊“下一步”則開始執行圖六清單中列出的“加鎖”操作。加鎖操作一旦開始,中途不能停止。
依賴於具體的修改操作,IIS Lockdown可能在\%windir%\system32\inetsrv目錄下創建幾個日志文件和IIS元數據備份文件,如表二所示。雖然沒有人要求我們一定要保證這些IIS Lockdown日志文件和元數據備份文件的安全,但如果要手工撤銷IIS Lockdown所做的操作,或者需要重新安裝OS,那就要用到這些文件。因此,最好把這些文件復制到另一個磁盤,或者把它們保存到另一個服務器。
表二:IIS Lockdown日志和元數據備份文件
.log或.md0文件 說明
oblt-log.log IIS Lockdown為了提高服務器安全性而執行的一系列操作的清單。
oblt-rep.log 加鎖過程的一個簡短總結。加鎖過程結束後,點擊View Report按鈕可以看到這個文件。
oblt-undo.log IIS Lockdown為了撤銷加鎖操作而采取的一系列動作的清單。
metaback\oblt-mb.md0 IIS元數據的備份文件。
metaback\oblt-beforeundo-mb.md0 在IIS Lockdown Undo命令恢復元數據備份之前備份的IIS元數據。
如果在正式為用戶提供服務的機器上運行IIS Lockdown,一定要安排在正常的關機維護期間進行。IIS Lockdown開始執行修改操作時會關閉Web服務,安排在正常的維護期間進行修改可以避免給用戶帶來不必要的麻煩。
四、嘗嘗後悔藥
只要能夠找到oblt-log.log文件,IIS Lockdown就給你後悔的機會。如果你打算讓服務器采用一種新的IIS Lockdown配置,首先必須撤銷前一次操作,然後再啟動IIS Lockdown,按照新的配置運行向導。如果已經在前一次加鎖操作時刪除了不必要的服務,那就必須用控制面板中的添加/刪除程序功能重新安裝服務。類似地,如果已經在加鎖過程中安裝了URLScan,也要用添加/刪除程序功能刪除它。
IIS Lockdown的撤銷操作會重新啟用在加鎖操作之前備份的元數據副本。因此,加鎖操作和撤銷操作之間的所有對IIS的修改都會丟失。不過,IIS Lockdown的撤銷操作會在啟用上次備份的元數據之前另行備份當時的元數據,因此必要時可以重新執行丟失的修改操作。
五、無人值守
要用無人值守方式運行IIS Lockdown也很簡單。用記事本打開iislockd.ini,修改[Info]部分的兩個鍵,使之成為:
Unattended=TRUE
UnattendedServerType= <ServerType>
ServerType的取值從ServerTypesNT4和ServerTypes鍵列出的值選擇,這兩個鍵也屬於[info]部分。IIS Lockdown 2.1不支持命令行參數,因此修改iislockd.ini是唯一實現自動加鎖的辦法。由於這一局限,如果要針對幾類不同的服務器配置使用IIS Lockdown加鎖,就會遇到一定的困難。要解決這個問題,可以按照下面的步驟操作:
㈠ 為每一種不同的配置創建一個專用的目錄。
㈡ 在每一個目錄的iislockd.ini文件中,啟用無人值守模式,並針對該配置要求設定服務器類型。
㈢ 針對要加鎖的服務器類型,進入適當的目錄,然後啟動IIS Lockdown執行無人值守的加鎖操作。
iislockd.ini配置文件的[info]部分中,最後一個鍵也值得一提,它就是Undo,設置成TRUE可以撤銷前一次加鎖操作。當IIS Lockdown執行撤銷操作時,它不會再返回來按照UnattendedServerType鍵指定的服務器類型執行加鎖操作。
六、定制服務器模板
如果要創建自定義的服務器配置模板,並將模板加入到IIS Lockdown的配置清單中,只要修改iislockd.ini文件增加適當的信息就可以了。請按照下面的步驟創建定制的服務器模板:
⑴ 用記事本打開iislockd.ini文件。
⑵ 檢查一下ServerTypesNT4和ServerTypes鍵中已有的模板名稱,然後加入定制模板的名稱,注意定制模板的名稱不能與已有的模板沖突。用於NT 4.0平台的模板名字加入到ServerTypesNT4鍵,其他模板名字加入到ServerTypes鍵。
⑶ 在iislockd.ini文件的現有模板中,選擇一個最接近定制模板配置的,將它復制到.ini文件的最後。
⑷ 把模板名稱(即[]括號內的單詞)修改成步驟2中指定的定制模板名稱。
⑸ 將Label鍵的值修改成定制模板的說明文字。
⑹ 根據服務器配置需要編輯其他鍵,以啟用或禁用各個IIS Lockdown修改選項。這些選項對應前文“實踐應用”部分的對話框選項,在此不再贅述。
最後必須指出的是,IIS Lockdown確實能夠方便地提高Web服務器的安全性,但不意味著有了IIS Lockdown就可以高枕無憂。安全是一個不斷發展和變化的概念,唯有時刻牢記在心,才能防患於未然。