保護 Web 伺服器的安全

發布日期: 1/21/2005 | 更新日期: 1/21/2005

查看全部的安全性指導主題 Microsoft Corporation

本單元概要Web 伺服器位於宿主基礎結構的前端。它與 Internet 直接相連,負責接收來自客戶端的請求,創建動態 Web 頁並響應請求數據。安全的 Web 伺服器能夠為宿主環境提供堅實的基礎,它的配置在整個 Web 應用程序安全中起著關鍵的作用。但是,怎樣才能使 Web 伺服器安全呢?確定目標是保護 Web 伺服器的安全所面臨的挑戰之一。只要您知道了什麼是安全的 Web 伺服器,就能夠了解如何應用必需的配置設置創建一個伺服器。本單元提供了一種系統化、可重複的方法,可以用來成功地配置安全的 Web 伺服器。還介紹了一種保護 Web 伺服器安全的方法,該方法將伺服器的配置分為 12 個安全區域。這些安全區域是通過一系列高層次操作步驟覆蓋的。這些步驟是模塊化的,說明了如何將此方法付諸實踐。

返回頁首目標使用本單元可以:?知道安全的 Web 伺服器是什麼。?使用已經過證實的方法保護 Web 伺服器的安全。?了解 IIS 的完整安裝和默認時 Microsoft_ Windows_ 2000 Server 操作系統上的 .NET Framework 安裝。?知道安全的 Web 伺服器上哪些服務可以安全地禁用。?安全地配置 Web 伺服器,包括操作系統協議、帳號、文件、目錄、共享、埠、註冊表、審核和日誌。?安全地配置 Web 伺服器應用程序(在這裡是 IIS)組件,包括 Web 站點、虛擬目錄、腳本映射、ISAPI 篩選器、元資料庫和伺服器證書。?安全地配置 .NET Framework 設置,包括 Machine.config 和代碼訪問安全。?安全地安裝和使用終端服務以進行遠程管理。?知道應該應用哪些對策,從而應對常見的 Web 伺服器威脅,包括分析、拒絕服務、未授權的訪問、任意代碼執行、特權提升、病毒、蠕蟲和特洛伊木馬。

返回頁首適用範圍本單元適用於下列產品和技術:?Microsoft? Windows? Server 2000 和 Windows Server? 2003 操作系統?Microsoft .NET Framework 1.1 和 ASP.NET 1.1?Microsoft Internet 信息服務 (IIS) 5.0 和 6.0

返回頁首如何使用本單元要從本單元受益最多:?請閱讀「威脅與對策」單元。這能夠使您對 Web 應用程序所面臨的潛在威脅有更加廣泛的理解。?使用快照。「安全 Web 伺服器的快照」部分列出並解釋了安全 Web 伺服器的各種屬性。它反映了來自各界(包括客戶、業界專家和 Microsoft 開發和支持小組)的意見。可以使用快照表在配置伺服器時作為參考。?使用核對錶。「核對錶:保護 Web 伺服器的安全」提供了可以列印的作業幫助以作為快速參考。使用基於任務的核對錶,可以快速評估必需步驟的範圍,幫助您完成各個步驟。?使用「如何……」部分。本指導中的「如何……」包括以下指導性文章:?「如何使用 URLScan」?「如何使用 Microsoft 基準安全分析程序」?「如何使用 IISLockdown」本頁內容

本單元概要

目標

適用範圍

如何使用本單元

概述

威脅與對策

保護 Web 伺服器的方法

IIS 和 .NET Framework 安裝注意事項

安裝推薦

保護 Web 伺服器的步驟

第 1 步:修補程序和更新

第 2 步:IISLockdown

第 3 步:服務

第 4 步:協議

第 5 步:帳號

第 6 步:文件和目錄

第 7 步:共享

第 8 步:埠

第 9 步:註冊表

第 10 步:審核和日誌

第 11 步:站點和虛擬目錄

第 12 步:腳本映射

第 13 步:ISAPI 篩選器

第 14 步:IIS 元資料庫

第 15 步:伺服器證書

第 16 步:Machine.Config

第 17 步:代碼訪問安全

安全 Web 伺服器的快照

保持安全

遠程管理

將安全變得簡單化和自動化

小結

其他資源

返回頁首概述怎樣才能使 Web 伺服器安全呢?確定目標是保護 Web 伺服器的安全所面臨的挑戰之一。只要您知道了什麼是安全的 Web 伺服器,就能夠了解如何應用必需的配置設置創建一個伺服器。本單元提供了一種系統化、可重複的方法,可以用來成功地配置安全的 Web 伺服器。本單元從回顧影響 Web 伺服器的最常見威脅開始。然後從這一角度創建了一個方法。本單元繼而將此方法付諸實踐,採取分步驟的方法,說明了如何提高 Web 伺服器的安全性。雖然此基本方法可以重複用於各種技術,但是本單元主要討論保護運行 Microsoft Windows 2000 操作系統並宿主 Microsoft .NET Framework 的 Web 伺服器。

返回頁首威脅與對策攻擊者能夠進行遠程攻擊這一事實使 Web 伺服器成為很有吸引力的目標。理解 Web 伺服器所面臨的威脅,而且能夠找出適當的對策,使您能夠預期許多攻擊並阻止攻擊者數目的不斷增長。Web 伺服器的主要威脅是:?分析?拒絕服務?未授權訪問?任意代碼執行?特權提升?病毒、蠕蟲,和特洛伊木馬圖 1 總結了更主要的攻擊和常見漏洞。

圖 1. 主要的 Web 伺服器威脅和常見漏洞分析分析(也稱為主機枚舉)是用來收集 Web 站點信息的探索性過程。攻擊者使用這些信息攻擊已知的弱點。漏洞?使伺服器易受分析影響的常見漏洞包括:?不必要的協議?打開的埠?Web 伺服器在旗標中提供配置信息攻擊常見的用於分析的攻擊包括:?埠掃描?Ping 掃射?NetBIOS 和伺服器消息塊 (SMB) 枚舉對策對策包括阻塞所有不必要的埠,阻塞 Internet 控制消息協議 (Internet Control Message Protocol, ICMP) 流量,以及禁用不必要的協議(例如 NetBIOS 和 SMB)。拒絕服務在您的伺服器被服務請求所淹沒時,發生了拒絕服務攻擊。其威脅在於,您的 Web 伺服器將由於被淹沒而無法對合法客戶端請求做出響應。漏洞增加拒絕服務攻擊可能性的漏洞包括:?脆弱的 TCP/IP 堆棧配置?未安裝修補程序的伺服器攻擊常見的拒絕服務攻擊包括:?網路級 SYN 洪水?緩衝區溢出?用來自分布位置的請求洪水攻擊 Web 伺服器對策對策包括加固 TCP/IP 堆棧和不斷對系統軟體應用最新的軟體修補程序和更新。未授權訪問在沒有正確許可權的用戶獲取了訪問受限信息或者執行受限操作所需許可權的時候,就發生了未授權的訪問。漏洞導致未授權訪問的常見漏洞包括:?脆弱的 IIS Web 訪問控制,包括 Web 許可權?脆弱的 NTFS 許可權對策對策包括使用安全的 Web 許可權、NTFS 許可權,和 .NET Framework 訪問控制機制(包括 URL 授權)。任意代碼執行當攻擊者在伺服器上運行惡意代碼以威脅伺服器資源的安全或者對下游系統實施其他攻擊時,就發生了代碼執行攻擊。漏洞可能導致惡意代碼執行的漏洞包括:?脆弱的 IIS 配置?未安裝修補程序的伺服器攻擊常見的代碼執行攻擊包括:?路徑遍歷?導致代碼注入的緩衝區溢出對策對策包括將 IIS 配置為拒絕帶有「../」的 URL 以防止路徑遍歷,用限制性訪問控制列表 (ACL) 鎖定系統命令和實用工具,以及安裝新的修補程序和更新。特權提升當攻擊者通過使用特權進程帳號運行代碼時,就發生了特權提升攻擊。漏洞使您的 Web 伺服器容易遭受特權提升攻擊的常見漏洞包括:?特權過高的進程帳號?特權過高的服務帳號對策對策包括使用最低特權帳號以及使用最低特權服務和用戶帳號運行進程。病毒、蠕蟲,和特洛伊木馬惡意的代碼有幾種變種,包括:?病毒。旨在執行惡意操作並導致操作系統或者應用程序崩潰的程序。?蠕蟲。可以自我複製和自我持續的程序。?特洛伊木馬。看似有用但是實際上會進行破壞的程序。在許多情況下,惡意的代碼直至開始消耗系統資源並減慢或者阻礙了其他程序的執行時,才會被注意到。例如,紅色代碼蠕蟲就是最臭名昭著的能夠影響 IIS 的病毒之一,它依賴於 ISAPI 篩選器中的一個緩衝區溢出漏洞。漏洞使您容易遭受病毒、蠕蟲和特洛伊木馬攻擊的常見漏洞包括:?未安裝修補程序的伺服器?運行不必要的服務?不必要的 ISAPI 篩選器和擴展對策對策包括提示應用最新的軟體修補程序,禁用未用的功能(例如未用的 ISAPI 篩選器和擴展),用最低特權帳號運行進程以減小出現攻擊時破壞的範圍。

返回頁首保護 Web 伺服器的方法要保護 Web 伺服器,必須應用許多配置設置以減少受攻擊的伺服器漏洞。但是,怎麼知道從哪裡入手,又怎麼知道什麼時候著手呢?最好的方法是將您必須採取的防範措施和必須配置的設置按類別進行組織。使用類別使您能夠自頂向下系統化地實施保護過程,也可以選擇某個特殊的類別然後完成特定的步驟。配置類別本單元中的安全方法已經組織為如圖 2 中所示的類別。

圖 2. Web 伺服器配置類別類別的基本信息如下所示:?修補程序和更新許多安全威脅是由於廣為發布而且眾所周知的漏洞所造成的。在許多情況下,當發現一個新的漏洞時,利用此漏洞的代碼將在首次成功攻擊後幾小時內就張貼到 Internet 公告板上。如果您不修補和更新伺服器,就相當於為攻擊者和惡意的代碼提供機會。修補和更新伺服器軟體是保護 Web 伺服器關鍵的第一步。?服務對於能夠利用服務的特權和能力訪問本地 Web 伺服器或者其他下游伺服器的攻擊者而言,服務是主要的漏洞。如果服務對於 Web 伺服器的操作並不必要,就不要在您的伺服器上運行它。如果服務是必要的,就對其進行保護和維護。考慮監視任何服務以確保可用性。如果您的服務軟體不安全,但是又需要此服務,嘗試尋找安全的替代方案。?協議不要使用內在不安全的協議。如果您無法避免使用這些協議,採取適當的措施提供安全的身份驗證和通信,例如,通過使用 IPSec 策略。不安全的明文協議的例子有 Telnet、郵局協議 (POP3)、簡單郵件傳輸協議 (SMTP),和文件傳輸協議 (FTP)。?帳號帳號能夠為計算機授予身份驗證的訪問許可權,而且這些帳號必須進行審核。用戶帳號的目的何在呢?它有多大的訪問許可權?常見帳號可能成為攻擊目標嗎?服務帳號是否可能被攻擊因此必須包含嗎?將賬號配置為最低特權有助於防止特權提升。刪除任何不需要的帳號。用強密碼策略減慢蠻力和字典攻擊,然後審核和警告登錄失敗。?文件和目錄使用受限的 NTFS 許可權保護所有文件和目錄,只允許訪問必要的 Windows 服務和用戶帳號。使用 Windows 審核,在可疑或者未授權的活動出現時能夠檢測到。?Shares如果不需要,刪除所有不必要的文件共享(包括默認的管理共享)。用受限的 NTFS 許可權保護任何剩下的共享。雖然共享可能並不直接向 Internet 公開,但是防範策略(使用受限和受保護的共享)將減少伺服器受攻擊所帶來的風險。?埠運行在伺服器上的服務偵聽特定的埠,以響應傳入的請求。定期審核伺服器上的埠,以確保 Web 伺服器上不存在活動的不安全或者不必要的服務。如果您檢測到非管理員打開的一個活動埠,這是未授權訪問和安全威脅的可靠標誌。?註冊表許多與安全相關的設置存儲在註冊表中,因此,您必須保護註冊表。您可以通過應用受限的 Windows ACL 或者通過阻塞遠程註冊表管理進行保護。?審核和日誌記錄審核是標識入侵者、實施中的攻擊和發生攻擊的證據最重要的工具。結合使用 Windows 和 IIS 的審核功能,以配置 Web 伺服器上的審核。事件和系統日誌也有助於解決安全疑難問題。?站點和虛擬目錄站點和虛擬目錄直接向 Internet 公開。即使安全的防火牆配置和防禦性 ISAPI 篩選器(例如 URLScan,隨 IISLockdown 工具發行)能夠阻塞對受限配置文件或者程序可執行文件的請求,仍然推薦採取一個縱深防範策略。將站點和虛擬目錄移到到非系統分區,並使用 IIS Web 許可權進一步限制訪問。?腳本映射刪除所有可選文件擴展名的不必要的 IIS 腳本映射,以防止攻擊者利用處理這些類型文件的 ISAPI 擴展中的任何錯誤。未用的擴展映射經常會被忽視,並且存在很大的安全漏洞。?ISAPI 篩選器攻擊者已經成功地利用了 ISAPI 篩選器中的漏洞。從 Web 伺服器上刪除不必要的 ISAPI 篩選器。?IIS 元資料庫IIS 元資料庫維護 IIS 配置設置。必須確保與安全相關的設置適當地進行了配置,而且使用加固的 NTFS 許可權限制對元資料庫文件的訪問。?Machine.configMachine.config 文件存儲應用於 .NET Framework 應用程序(包括 ASP.NET Web 應用程序)的機器級配置設置。修改 Machine.config 中的設置以確保安裝在伺服器上的任何 ASP.NET 應用程序都應用了安全的默認值。?代碼訪問安全限制代碼訪問安全策略設置以確保從 Internet 或者 intranet 下載的代碼沒有許可權,並因此不允許執行。

返回頁首IIS 和 .NET Framework 安裝注意事項在能夠保護 Web 伺服器之前,您需要知道在安裝 IIS和 .NET Framework 後 Windows 2000 伺服器上有哪些組件。本部分解釋了將安裝哪些組件。IIS 將安裝什麼組件?IIS 安裝了大量服務、帳號、文件夾和 Web 站點。IIS 安裝的一些組件可能並不是 Web 應用程序所使用的,而且如果伺服器上有這些服務,它們會使伺服器容易遭到攻擊。表 1 列出了在 Windows 2000 伺服器上選擇所有組件完全安裝 IIS 時,所創建的服務、帳號和文件夾。表 1 IIS 安裝默認值項 詳細信息 默認值服務IIS 管理服務(用於 Web 和 FTP 服務的管理)WWW 發布服務FTP 發布服務簡單郵件傳輸協議 (SMTP)網路新聞傳輸協議 (NNTP)安裝安裝安裝安裝安裝帳號和組IUSR_MACHINE(匿名 Internet 用戶)IWAM_MACHINE(進程外 ASP Web 應用程序;不用於 ASP.NET 應用程序,除了運行在域控制器上的;您的 Web 伺服器不應該是域控制器)添加到 Guest 組添加到 Guest 組文件夾%windir%system32inetsrv(IIS 程序文件)%windir%system32inetsrviisadmin (文件用於遠程IIS 管理)%windir%helpiishelp(IIS 幫助文件)%systemdrive%inetpub(Web、FTP,和 SMTP 根文件夾)Web 站點默認的 Web 站點 — 埠 80:%SystemDrive%inetpubwwwroot管理 Web 站點 — 埠 3693:%SystemDrive%System32inetsrviisadmin允許匿名訪問僅本地機器和管理員訪問.NET Framework 安裝了什麼?當您在宿主 IIS 的伺服器上安裝 .NET Framework 時,.NET Framework 將註冊 ASP.NET。作為此過程的一部分,將創建一個名為 ASPNET 的本地、最低特權帳號。它運行 ASP.NET 輔助進程 (aspnet_wp.exe) 和會話狀態服務 (aspnet_state.exe),可以用來管理用戶會話狀態。注 在運行 Windows 2000 和 IIS 5.0 的伺服器計算機上,所有 ASP.NET Web 應用程序都運行在一個 ASP.NET 輔助進程的實例中,並且應用程序域提供了隔離。在 Windows Server 2003 上,IIS 6.0 通過使用應用程序池提供了進程級隔離。表 2 顯示了 .NET Framework 1.1 版本默認安裝創建的服務、帳號和文件夾。表 2 .NET Framework 安裝默認值項 詳細信息 默認值服務ASP.NET 狀態服務:提供對進程外 ASP.NET 會話狀態的支持。手工啟動帳號和組ASPNET用於運行 ASP.NET 輔助進程 (Aspnet_wp.exe) 和會話狀態服務 (Aspnet_state.exe) 的帳號。添加到 Users 組文件夾%windir%Microsoft.NETFramework{version}1033ASP.NETClientFilesCONFIGMUITemporary ASP.NET FilesISAPI 擴展Aspnet_isapi.dll:處理對 ASP.NET 文件類型的請求。將請求轉發到 ASP.NET 輔助進程 (Aspnet_wp.exe)。ISAPI 篩選器Aspnet_filter.dll:僅用來支持無 cookie 會話狀態。運行在 Inetinfo.exe (IIS) 進程中。應用程序映射ASAX, ASCX, ASHX, ASPX, AXD, VDISCO, REM, SOAP, CONFIG, CS, CSPROJ, VB, VBPROJ, WEBINFO, LICX, RESX, RESOURCESWINNTMicrosoft.NETFramework{version} Aspnet_isapi.dll

返回頁首安裝推薦默認情況下,Windows 2000 Server 設置將安裝 IIS。但是,不推薦在安裝操作系統過程中安裝 IIS,應該以後在已經更新和修補基礎操作系統之後再安裝它。在安裝 IIS 之後,必須重新應用 IIS 修補程序,並加固 IIS 配置,以確保它受到完全保護。只有這時,將伺服器連接到網路才是安全的。IIS 安裝推薦如果您安裝和配置一個新的 Web 伺服器,請遵循如下所述的過程。要構建一個新的 Web 伺服器1.安裝 Windows 2000 Server,但是不要在操作系統安裝過程中安裝 IIS。2.對操作系統應用最新的服務包和修補程序。(如果您需要配置多個伺服器,請參閱本部分後面「在基本安裝中包含服務包」。)3.分別通過在控制面板中使用 Add/Remove Programs 安裝 IIS。 如果您不需要以下服務,在安裝 IIS 時不要安裝它們:?文件傳輸協議 (FTP) 伺服器?Microsoft FrontPage_ 2000 伺服器擴展?Internet 服務管理器 (HTML)?NNTP 服務?SMTP 服務?Visual InterDev RAD 遠程部署支持注 通過在完全修補和更新的操作系統上安裝 IIS,可以防止利用現在已經修補的已知漏洞(例如 NIMDA)攻擊。.NET Framework 安裝推薦不要在生產伺服器上安裝 .NET Framework 軟體開發工具包 (SDK)。SDK 包含伺服器不需要的實用工具。如果攻擊者獲取對伺服器的訪問許可權,攻擊者能夠使用這些工具中的一部分來輔助其他攻擊。相反,安裝可再發行軟體包,您可以從 Microsoft.com 網站上的「下載」鏈接獲取,網址是:http://www.microsoft.com/net/。在基本安裝中包含服務包如果您需要構建多個伺服器,可以將服務包直接包含到 Windows 安裝中。服務包包括名為 Update.exe 的一個程序,它可以將服務包包含在 Windows 安裝文件中。要在 Windows 安裝文件中包含服務包1.下載最新的服務包。2.從服務包提取 Update.exe,通過 -x 選項啟動服務包安裝,如下所示:w3ksp3.exe -x3.將服務包與 Windows 安裝源集成,通過 -s 選項運行 update.exe,傳遞 Windows 安裝的文件夾路徑,如下所示:update.exe -s c: YourWindowsInstallationSource有關更多信息,請參閱 MSDN 文章「自定義無人參與的 Win2K 安裝」,網址是:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnw2kmag01/html/custominstall.asp。

返回頁首保護 Web 伺服器的步驟下面的部分將引導您完成保護 Web 伺服器的過程。這些部分將使用本單元「保護 Web 伺服器安全的方法」部分中介紹的配置類別。每一個高層次的步驟還包含一個或者多個保護特殊區域或者功能的操作。第 1 步修補程序和更新第 10 步審核和日誌記錄第 2 步IISLockdown第 11 步站點和虛擬目錄第 3 步服務第 12 步腳本映射第 4 步協議第 13 步ISAPI 篩選器第 5 步賬號第 14 步IIS 元資料庫第 6 步文件和目錄第 15 步伺服器證書第 7 步共享第 16 步Machine.config第 8 步埠第 17 步代碼訪問安全第 9 步註冊表

返回頁首第 1 步:修補程序和更新用最新的服務包和修補程序更新伺服器。必須更新和修補所有 Web 伺服器組件,包括 Windows 2000 (和 IIS)、.NET Framework,和 Microsoft 數據訪問組件 (MDAC)。在此步驟中,應該:?檢測和安裝必需的修補程序和更新。?更新 .NETFramework。檢測和安裝修補程序和更新使用 Microsoft 基準安全分析程序 (MBSA) 檢測當前安裝遺漏的修補程序和更新。MBSA 將您的安裝與在 XML 文件中維護的一系列當前可用更新進行比較。MBSA 可以在掃描伺服器時下載 XML 文件,也可以手工將文件下載到伺服器,或者放在網路伺服器上。要檢測和安裝修補程序和更新1.下載和安裝 MBSA。可以從 MBSA 主頁下載和安裝,網址是:http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/tools/Tools/mbsahome.asp。如果您沒有 Internet 訪問許可權,那麼當您運行 MBSA 時,MBSA 無法從 Microsoft 檢索包含最新安全設置的 XML 文件。但是,您可以使用另一個計算機下載 XML 文件。然後可以將其複製到 MBSA 程序目錄。XML 文件可以從http://download.microsoft.com/download/xml/security/1.0/nt5/en-us/mssecure.cab 獲取。2.通過雙擊桌面圖標或者從 Programs 菜單選擇它,運行 MBSA。3.單擊 Scan a computer。MBSA 默認為掃描本地計算機。4.清除所有複選框,除了 Check for security updates。這個選項將檢測遺漏了哪些修補程序和更新。5.單擊 Start scan。現在將對您的伺服器進行分析。當掃描結束時,MBSA 顯示一個安全報告,同時還會寫入 %userprofile%SecurityScans 目錄。6.下載和安裝遺漏的更新。單擊所有失敗檢查旁邊的 Result details 鏈接,查看遺漏的安全更新列表。所生成的對話框將顯示 Microsoft 安全公告參考號碼。單擊參考可以找到更多公告的信息,還可以下載更新。有關使用 MBSA 的更多信息,請參閱本指導「如何……」部分中的「如何使用 Microsoft 基準安全分析程序」。更新 .NET Framework在撰寫本單元時(2003 年 5 月),MBSA 還無法檢測 .NET Framework 更新和修補程序。因此,必須手工檢測 .NET Framework 更新。手工更新 .NET Framework 1.0 版本?確定 .NET Framework 服務包是否已安裝在您的 Web 伺服器上。為此,請參閱 Microsoft 知識庫文章 318785,「INFO:確定 .NET Framework 服務包是否已安裝」。?將 .NET Framework 的安裝版本與當前服務包進行比較。為此,使用 Microsoft 知識庫文章 318836 「INFO:如何獲取最新的 .NET Framework 服務包」中列出的 .NET Framework 版本。

返回頁首第 2 步:IISLockdownIISLockdown 工具有助於自動化一些安全步驟。IISLockdown 極大地減少了 Windows 2000 Web 伺服器中的漏洞。它允許您選擇一個特定類型的伺服器角色,然後使用自定義模板提高該特殊伺服器的安全性。模板將禁用或者保護各種功能。除此之外,IISLockdown 還將安裝 URLScan ISAPI 篩選器。URLScan 允許 Web 站點管理員根據管理員控制的一組規則集限制伺服器能夠處理的 HTTP 請求種類。通過阻塞特定的 HTTP 請求,URLScan 篩選器能夠防止潛在有害的請求到達伺服器,導致損壞。在此步驟中,應該:?安裝和運行 IISLockdown。?安裝和配置 URLScan。安裝和運行 IISLockdownIISLockdown 可以從 Microsoft Web 站點通過 Internet 下載,網址是:http://download.microsoft.com/download/iis50/Utility/2.1/NT45XP/EN-US/iislockd.exe。將 IISlockd.exe 保存在本地文件夾中。IISlockd.exe 是 IISLockdown 的嚮導,而不是一個安裝程序。您可以通過再次運行 IISlockd.exe 恢復 IISLockdown 所做的任何更改。如果您鎖定了宿主 ASP.NET 頁的基於 Windows 2000 的計算機,可以在 IISLockdown 工具提示您的時候選擇動態 Web 伺服器模板。當您選擇動態 Web 伺服器時,IISLockdown 將執行以下操作:?它禁用了以下不安全的 Internet 服務:?文件傳輸協議 (FTP)?電子郵件服務 (SMTP)?新聞服務 (NNTP)?它通過將以下文件擴展名映射到 404.dll 禁用了腳本映射:?索引伺服器?Web 界面 (.idq, .htw, .ida)?伺服器端包含文件 (.shtml, .shtm, .stm)?Internet 數據連接器 (.idc)?.HTR 腳本 (.htr), Internet 列印 (.printer)?它刪除以下虛擬目錄:IIS Samples、 MSADC、IISHelp、Scripts 和 IISAdmin。?它限制匿名訪問系統實用工具以及使用 Web 許可權寫入 Web 內容目錄的能力。?它禁用 Web 分散式創作和版本控制 (WebDAV)。?它安裝 URLScan ISAPI 篩選器。注 如果您不使用傳統的 ASP,就不要使用靜態 Web 伺服器模板。這個模板將刪除 ASP.NET 頁需要的基本功能,例如支持 POST 命令。日誌文件IISLockdown 創建了兩個報告,列出了已經應用的更改:?%windir%system32inetsrvoblt-rep.log。其中包含高層次信息。?%windir%system32inetsrvoblt-log.log。其中包含低層次的詳細信息,例如哪個程序文件配置了拒絕訪問控制項 (ACE),以防止匿名 Internet 用戶帳號訪問它們。這個日誌文件還可以用來支持 IISLockdown Undo Changes 功能。Web 匿名用戶和 Web 應用程序組IISLockdown 創建了 Web Anonymous Users 組和 Web Application 組。 Web Anonymous Users 組包含 IUSR_MACHINE 帳號。Web Application 組包含 IWAM_MACHINE 帳號。許可權是按照這些組賦予系統工具和內容目錄的,而不是直接賦予 IUSR 和 IWAM 帳號。您可以通過查看 IISLockdown 日誌 %windir%system32inetsrvoblt-log.log 來審查特定的許可權。404.dllIISLockdown 安裝了 404.dll,您可以將不能由客戶端運行的文件擴展名映射到此文件。有關更多信息,請參閱「第 12 步:腳本映射。」URLScan如果您安裝 URLScan ISAPI 篩選器作為 IISLockdown 的一部分,URLScan 設置將在運行 IISLockdown 時與所選擇的伺服器角色集成。例如,如果您選擇了一個靜態 Web 伺服器,URLScan 將阻塞 POST 命令。恢復 IISLockdown 的更改要恢復 IISLockdown 執行的更改,可以再次運行 IISLockd.exe。這不會刪除 URLScan ISAPI 篩選器。有關更多信息,請參閱下一主題中的「刪除 URLScan」。更多信息有關 IISLockdown 工具的更多信息,請參閱以下文章:?有關運行 IISLockdown 的更多信息,請參閱本指導「如何……」部分中的「如何使用 IISLockdown.exe」。?有關 IISLockdown 的疑難解答信息,請參閱Microsoft 知識庫文章 325864,「如何:安裝和使用 IIS Lockdown 嚮導」。(在運行 IISLockdown 後最常見的問題是接受不希望出現的「404 File Not Found」錯誤消息。)?有關自動化 IISLockdown 的信息,請參閱Microsoft 知識庫文章 310725,「如何:運行 IIS 中無人參與的 IIS Lockdown 嚮導」。安裝和配置 URLScanURLScan 是在您運行 IISLockdown 時安裝的,雖然可以分別下載和安裝。不運行 IISLockdown 而安裝 URLScan1.從http://download.microsoft.com/download/iis50/Utility/2.1/NT45XP/EN-US/iislockd.exe 下載 IISlockd.exe。2.運行以下命令提取 URLScan 設置:iislockd.exe /q /cURLScan 將阻塞包含不安全字元的請求(例如,用來利用漏洞的字元,例如用於目錄遍歷的「..」)。URLScan 將在 %windir%system32inetsrvurlscan 目錄中記錄包含這些字元的請求。使用 .ini 文件 %windir%system32inetsrvurlscanurlscan.ini 中的設置配置 URLScan。除了阻塞惡意的請求,您還可以使用 URLScan 在請求到達 ASP.NET 之前保護您的伺服器免受拒絕服務攻擊。為此,在 URLScan.ini 文件中的 MaxAllowedContentLength、MaxUrl 和 MaxQueryString 參數里設置限制。有關更多信息,請參閱本指導「如何……」部分中的「如何使用 URLScan」。恢復 URLScan 更改不存在刪除 URLScan 的自動化操作。如果使用 URLScan 出現問題,可以從 IIS 中刪除,或者通過日誌記錄拒絕的請求來分析問題。為此,在 URLScan .ini 文件中使用選項 RejectResponseUrl=/~*。有關如何刪除 ISAPI 篩選器的更多信息,請參閱本單元後面的「第 13 步:ISAPI 篩選器」。更多信息有關 URLScan 工具的更多信息,請參閱以下文章:?有關運行 URLScan 的信息,請參閱本指導「如何……」部分中的「如何使用 URLScan」。?有關 URLScan 配置和 URLScan.ini 文件設置的信息,請參閱 Microsoft 知識庫文章 326444,「如何:配置 URLScan 工具」。

返回頁首第 3 步:服務不會對客戶端進行身份驗證的服務、使用不安全協議的服務,或者以過多特權運行的服務都存在風險。如果您不需要它們,就不要運行它們。通過禁用不必要的服務,能夠快速和容易地減小受攻擊面。還減少了維護方面的開銷(修補程序、服務帳號,等等。)如果您運行了一個服務,應該確保它是安全的和並且可維護。為此,可以使用最低特權帳號運行服務,通過應用修補程序使服務保持最新。在此步驟中,應該:?禁用不必要的服務。?禁用 FTP、SMTP 和 NNTP,除非需要它們。?禁用 ASP.NET 狀態服務,除非需要。禁用不必要的服務Windows 服務很容易被攻擊者利用其特權和功能以獲取訪問本地和遠程系統資源的許可權。作為一種防範措施,應該禁用系統和應用程序不需要的 Windows 服務。您可以通過使用位於管理工具程序組的服務 MMC 管理單元來禁用 Windows 服務。注 在禁用服務之前,應該確保首先在測試或者模擬測試環境中進行了測試。在大多數情況下,以下默認的 Windows 服務在 Web 伺服器上都不需要:Alerter、Browser、Messenger、Netlogon(僅域控制器必需),簡單 TCP/IP 服務 和 Spooler。Telnet 服務是隨 Windows 安裝的,但是默認情況下並不啟用。IIS 管理員經常會啟用 Telnet。但是,它是一種不安全的協議,容易被人利用。終端服務提供了一種更安全的遠程管理選擇。有關遠程管理的更多信息,請參閱本單元後面的「遠程管理」。禁用 FTP、SMTP 和 NNTP,除非需要它們FTP、SMTP 和 NNTP 都是不安全協議的例子,容易被人濫用。如果您不需要它們,就不要運行它們。如果您目前正在運行它們,應該嘗試尋找安全的替代方案。如果您必須運行它們,應該對其進行保護。注IIS Lockdown 提供了禁用 FTP、SMTP 和 NNTP 的選項。要消除 FTP 利用的可能性,應該在不需要使用的情況下禁用 FTP 服務。如果啟用了 FTP,而且存在出站連接,攻擊者就能夠使用 FTP 從攻擊者的遠程系統向 Web 伺服器上傳文件和工具。工具和文件傳輸到 Web 伺服器上之後,攻擊者就可以攻擊 Web 伺服器或者其他相連接的系統了。如果您使用 FTP 協議,則用來訪問 FTP 站點的用戶名和密碼和所傳輸的數據都沒有編碼或者加密。IIS 不支持 SSL 用於 FTP。如果安全的通信非常重要,而且您使用 FTP 作為傳輸協議(而不是 SSL 上的 WWW 分散式創作和版本控制 (WebDAV)),可以考慮通過加密信道使用 FTP,例如使用點到點隧道協議 (PPTP) 或者 Internet 協議安全 (IPSec) 保護的虛擬專用網 (VPN)。禁用 ASP.NET 狀態服務,除非需要.NET Framework 安裝 ASP.NET 狀態服務 (aspnet_state.exe),為 ASP.NET Web 應用程序和 Web 服務管理進程外用戶會話狀態。默認情況下,該服務配置為手工啟動,並以最低特權本地 ASPNET 帳號運行。如果應用程序都不需要通過使用這個服務存儲狀態,那麼就禁用它。有關保護 ASP.NET 會話狀態的更多信息,請參閱「保護 ASP.NET 應用程序的安全」單元中的「會話狀態」部分。

返回頁首第 4 步:協議通過防止使用不必要的協議,可以減少受攻擊的可能。 .NET Framework 通過 Machine.config 文件中的設置,提供了對協議的細粒度控制。例如,您可以控制 Web 服務是否能夠使用 HTTP GET、POST 或者 SOAP。有關在 Machine.config 中配置協議的更多信息,請參閱「第 16 步: Machine.config」。?在此步驟中,應該:?禁用或者保護 WebDav。?加固 TCP/IP 堆棧。?禁用 NetBIOS 和 SMB 。禁用或保護 WebDAVIIS 支持 WebDAV 協議,該協議是 HTTP 1.1 的一個標準擴展,用於協作內容發布。如果沒有使用,在產品伺服器上禁用這個協議。注IISLockdown 提供了一個選項,可以刪除對 WebDAV 的支持。從安全的角度來看,WebDAV 比 FTP 更優越,但是需要保護 WebDAV。有關更多信息,請參閱 Microsoft 知識庫文章 323470,「如何:創建安全的 WebDAV 發布目錄」。如果您不需要 WebDAV,請參閱 Microsoft 知識庫文章 241520,「如何:在 IIS 5.0 中禁用 WebDAV」。加固 TCP/IP 堆棧Windows 2000 支持對配置 TCP/IP 實現的許多參數的細粒度控制。有些默認的設置是配置用來提供伺服器可用性和其他特定功能的。有關如何 加固 TCP/IP 堆棧的信息,請參閱本指導「如何……」部分中的「如何加固 TCP/IP 堆棧」。禁用 NetBIOS 和 SMB禁用所有不必要的協議,包括 NetBIOS 和 SMB。Web 伺服器在其面對 Internet 的網卡 (NIC) 中不需要 NetBIOS 或者 SMB。禁用這些協議以防範主機枚舉威脅。注SMB 協議可以通過空會話向未經身份驗證的用戶返回有關計算機的豐富信息。您可以通過按「第 9 步:註冊表」中所述來設置 RestrictAnonymous 註冊表項,以阻塞空會話。禁用 NetBIOSNetBIOS 使用以下埠:?TCP 和用戶數據報協議 (UDP) 埠 137(NetBIOS 名稱服務)?TCP 和 UDP 埠 138(NetBIOS 數據報服務)?TCP 和UDP 埠 139(NetBIOS 會話服務)禁用 NetBIOS 對於防止 SMB 通信是不夠的,因為如果標準 NetBIOS 埠不可用,SMB 還可以使用 TCP 埠 445。(這個埠稱為 SMB 直接宿主。)因此,必須採取步驟分別禁用 NetBIOS 和 SMB。禁用 TCP/IP 上的 NetBIOS注 這個過程將禁用 Nbt.sys 驅動程序,而且要求您重啟系統。1.右鍵單擊桌面上的 MyComputer,然後單擊 Manage。2.展開系統工具,並選擇 DeviceManager。3.右鍵單擊 DeviceManager,指向 View,然後單擊 Show hidden devices。4.展開 Non-Plug and Play Drivers。5.右鍵單擊 NetBios over Tcpip,然後單擊 Disable。這將禁用 TCP 445 和 UDP 445 上的 NetBIOS 直接宿主偵聽程序。禁用 SMBSMB 使用以下埠:?TCP 埠 139?TCP 埠 445要禁用 SMB,使用 Local Area Connection 屬性中的 TCP/IP 屬性對話框解除 SMB 與面對 Internet 埠的綁定。解除 SMB 與面對 Internet 埠的綁定1.單擊 Start 菜單,指向 Settings,然後單擊 Network and Dial-up Connections。2.右鍵單擊面對 Internet 的連接,然後單擊 Properties。3.清除 Client for Microsoft Networks 框。4.清除 File and Printer Sharing for Microsoft Networks 框。注Advanced TCP/IP Settings 對話框的 WINS 選項卡包含一個 Disable NetBIOS over TCP/IP 單選按鈕。選擇這個選項,禁用使用 TCP 埠 139 的 NetBIOS 會話服務。它並不能完全禁用 SMB。為此,請使用上述過程。

返回頁首第 5 步:帳號您應該刪除不使用的帳號,因為攻擊者可能發現並使用它們。要求使用強密碼。脆弱的密碼將增加成功的蠻力或者字典攻擊的可能性。使用最低特權。攻擊者能夠使用具有過多特權的帳號獲取對未授權資源的訪問。在此步驟中,應該:?刪除或者禁用未用的帳號。?禁用 Guest 帳號。?重命名管理員帳號。?禁用 IUSR 帳號。?創建自定義匿名 Web 帳號。?強制堅固的密碼策略。?限制遠程登錄。?禁用空會話(匿名登錄)。刪除或者禁用未用的帳號未用的帳號及其特權可能被攻擊者用來訪問伺服器。審核伺服器上的本地帳號,禁用未使用的本地帳號。如果禁用帳號不會導致任何問題,就刪除帳號。(已刪除的帳號是無法恢復的。)在生產伺服器上禁用帳號之前,應該禁用測試伺服器上的帳號。確保禁用帳號不會對應用程序的操作產生負面影響。注 管理員帳號和 Guest 帳號是無法刪除的。禁用 Guest 帳號Guest 帳號是在匿名連接計算機的時候使用的。要限制匿名連接計算機,始終禁用這個帳號。Guest 帳號在 Windows 2000 上默認時是禁用的。要檢查它是否啟用,在計算機管理工具中顯示 Users 文件夾。Guest 帳號應該顯示帶有叉號圖標。如果沒有禁用,顯示其 Properties 對話框並選擇 Account is disabled。重命名管理員帳號默認的本地管理員帳號是惡意使用的目標之一,因為它在計算機上擁有提升的特權。要提高安全性,重命名默認的管理員帳號,並賦予其強密碼。如果您想執行本地管理,請配置帳號以拒絕網路登錄許可權,並要求管理員互動式地登錄。這樣做,能夠防止用戶(無論有意與否)從遠程位置使用管理員帳號登錄伺服器。如果本地管理策略太不靈活,可以實現安全的遠程管理解決方案。有關更多信息,請參閱本單元後面的「遠程管理」。禁用 IUSR 帳號禁用默認的匿名 Internet 用戶帳號 IUSR_MACHINE。這是在 IIS 安裝期間創建的。MACHINE 的伺服器在 IIS 安裝時的 NetBIOS 名稱。創建自定義匿名 Web 帳號如果應用程序支持匿名訪問(例如,因為它們使用自定義身份驗證機制,例如窗體身份驗證),則應該創建自定義最低特權匿名帳號。如果您運行 IISLockdown,添加自定義用戶到所創建的 Web 匿名用戶組。IISLockdown 拒絕 Web 匿名用戶組訪問系統實用工具,也拒絕它寫入 Web 內容目錄。如果您的 Web 伺服器宿主多個 Web 應用程序,可能需要使用多個匿名帳號,每個應用程序一個,這樣您可以獨立地保護和審核每個應用程序的操作。有關宿主多個 Web 應用程序的更多信息,請參閱「宿主多個 Web 應用程序」單元。強制堅固的密碼策略要對抗對應用程序的密碼猜測和蠻力字典攻擊,應該應用堅固的密碼策略。要強制施行堅固的密碼策略:?設置密碼長度和複雜性。要求堅固的密碼以減少密碼猜測攻擊或者字典攻擊的威脅。堅固的密碼是指 8 個或者 8 個以上的字元,而且必須包括字母和數字字元。?設置密碼到期。密碼定期到期能夠減少使用密碼進行未授權訪問的可能性。到期的頻率通常遵循公司安全策略的指導。表 4 顯示了默認值和推薦的密碼策略設置。表 4. 密碼策略默認值和推薦的設置密碼策略 默認設置 推薦的最小設置強制密碼歷史記住 1 個密碼。記住 24 個密碼。最大密碼壽命42 天42 天最小密碼壽命0 天2 天最小密碼長度0 字元8 字元密碼必須滿足複雜性需求。禁用啟用使用域中所有用戶的可逆加密存儲密碼。禁用禁用此外,記錄失敗的登錄企圖使您可以檢測和跟蹤惡意的行為。有關更多信息,請參閱「第 10 步:審核和日誌記錄」。限制遠程登錄從 Everyone 組刪除 Access this computer from the network 特權,以限制誰能夠遠程登錄伺服器。禁用空會話(匿名登錄)要防止匿名訪問,應該禁用空會話。這些都是在兩台計算機之間建立的未經身份驗證或者匿名的會話。除非禁用空會話,否則攻擊者就能夠匿名(無需身份驗證)連接您的伺服器。在攻擊者建立空會話之後,他或者她能夠執行各種攻擊,包括用來從目標計算機收集系統相關信息的枚舉技術 — 這些信息能夠對後續攻擊產生極大幫助。可以通過空會話返回的信息類型包括域和信任詳情、共享、用戶信息(包括組和用戶許可權)、註冊表項等等。通過在註冊表中將以下子項的 RestrictAnonymous 設置為 1 限制空會話:HKLMSystemCurrentControlSetControlLSARestrictAnonymous=1有關更多信息,請參閱 Microsoft 知識庫文章 246261,「如何:在 Windows 2000 中使用 RestrictAnonymous 註冊表值」。更多注意事項以下是其他步驟的一個列表,您可以考慮採取這些步驟以進一步提高您的 Web 伺服器的安全性:?帳號委託需要許可。不要在 Active Directory 中標記域帳號為可信任委託,除非首先獲取特別許可。?不使用共享帳號。不創建多個人使用的共享帳號。授權個人必須有自己的帳號。個人的活動可以分別審核,並能夠適當地指派組成員資格和特權。?限制本地管理員組的成員資格。嘗試將管理帳號限制為兩個。這有助於提供責任性。同樣,密碼也必須不能共享,也是為了提供責任性。?要求管理員互動式地登錄。如果您只執行本地管理,可以通過刪除 Access this computer from the network 特權要求管理員賬號互動式地登錄。

返回頁首第 6 步:文件和目錄在用 NTFS 文件系統格式化的分區上安裝 Windows 2000,可以使用 NTFS 許可權對訪問許可權進行限制。使用較堅固的訪問控制保護敏感的文件和目錄。在大多數情況下,允許訪問特定帳號的方法比拒絕訪問特定帳號的方法要更加有效。儘可能在目錄級設置訪問。當文件添加到文件夾中時,它們將從文件夾繼承許可權,因此您無需採取進一步的操作。在此步驟中,應該:?限制 Everyone 組。?限制匿名 Web 帳號。?保護或者刪除工具、實用工具和 SDK。?刪除示例文件。限制 Everyone 組Windows 2000 默認的 NTFS 許可權將為 Everyone 組的成員授予對許多密鑰位置的完全控制訪問許可權,包括根目錄 inetpub 和 inetpubscripts。首先將管理員帳號的完全控制許可權授予根目錄 (),然後從以下目錄刪除 Everyone 組的訪問許可權。?根 ()?系統目錄 (WINNTsystem32)?框架工具目錄 (WINNTMicrosoft.NETFramework{version})?Web 站點根目錄和所有內容目錄(默認的is inetpub*)限制對 IIS 匿名帳號的訪問匿名帳號是眾所周知的。攻擊者會以此帳號為目標,執行惡意的操作。要保護匿名帳號,應該:?拒絕對 Web 內容目錄的訪問。確保這個帳號不可能寫入內容目錄,例如,醜化 Web 站點。?限制對系統工具的訪問。尤其是要限制對位於 WINNTSystem32 的命令行工具的訪問。?將許可權賦予組而不是單獨的帳號。將用戶賦予組,然後對組應用許可權,而不是單獨的帳號,這是一個好的做法。對於匿名帳號,創建一個組,在其中添加匿名賬號,然後顯式地拒絕組對密鑰目錄和文件的訪問。將許可權賦予一個組,使你能夠更容易地更改匿名帳號或者創建更多匿名帳號,因為不需要重新創建許可權。注 IISLockdown 拒絕匿名帳號訪問內容目錄,方法是對 Web 匿名用戶和 Web 應用程序組應用一個拒絕寫訪問控制項 (ACE)。它還通過命令行工具添加了一個拒絕執行 ACL。?對不同的應用程序使用不同的帳號。如果您的 Web 伺服器宿主多個應用程序,應該對每個應用程序使用不同的匿名帳號。在匿名 Web 用戶組(例如 IISLockdown 創建的 Web Anonymous Users 組)中添加帳號,然後使用這個組配置 NTFS 許可權。有關使用多個匿名帳號和宿主多個應用程序的更多信息,請參閱「宿主多個 ASP.NET 應用程序」單元。保護或者刪除工具、實用工具和 SDKSDK 和資源包不應該安裝在生產 Web 伺服器上。如果已經安裝,應該刪除它們。?確保在伺服器上只安裝了 .NET Framework 可再發行軟體包,沒有安裝 SDK 實用工具。不要在生產伺服器上安裝 Visual Studio .NET。?確保訪問功能強大的系統工具和實用工具(例如包含在 Program Files 目錄中的那些工具)是受限的。IISLockdown 可以為你實現這一點。?調試工具不應該在 Web 伺服器上可用。如果產品調試是必要的,那麼應該創建一個 CD 以包含必要的調試工具。刪除示例文件示例應用程序通常並沒有配置高度的安全性。攻擊者可能利用示例應用程序中或者其配置中的內在漏洞攻擊您的 Web 站點。刪除示例應用程序以減小 Web 伺服器的受攻擊面。更多注意事項還可以考慮刪除不必要的數據源名 (DSN)。包括應用程序用來連接 OLE DB 數據源的明文連接詳情。只有那些 Web 應用程序必需的 DSN 才應該安裝在 Web 伺服器上。

返回頁首第 7 步:共享刪除任何未用的共享,並加固任何必要共享的 NTFS 許可權。默認情況下,所有用戶都對新建文件共享擁有完全控制。加固這些默認的許可權,以確保只有授權用戶能夠訪問共享所公開的文件。除了顯式共享許可權之外,對共享公開的文件和文件夾使用 NTFS ACL。在此步驟中,應該:?刪除不必要的共享。?限制對必需共享的訪問。刪除不必要的共享刪除所有不必要的共享。要審查共享和相關聯的許可權,運行計算機管理 MMC 管理單元,並從 SharedFolders 中選擇 Shares,如圖 3 中所示。

圖 3. 計算機管理 MMC 管理單元共享限制對必需共享的訪問刪除 Everyone 組,改而授予特定的許可權。只有在您不限制誰應該訪問共享時才使用 Everyone。更多注意事項如果您不允許遠程管理伺服器,那就刪除未用的管理共享,例如 C$ 和 Admin$。注 有些應用程序可能要求管理共享。例子包括 Microsoft 系統管理伺服器 (SMS) 和 Microsoft 操作管理器 (MOM)。有關更多信息,請參閱 Microsoft 知識庫文章 318751 ,「如何:刪除管理 Windows 2000 或者 Windows NT 4.0 中的共享」。

返回頁首第 8 步:埠運行在伺服器上的服務使用特定的埠,這樣它們能夠為傳入的請求提供服務。應該關閉所有不必要的埠,並執行定期的審核,以檢測處於偵聽狀態的新埠,這樣能夠發現未授權的訪問和安全漏洞。在此步驟中,應該:?將面對 Internet 的埠限制為 TCP 80 和 443。?加密或者限制 intranet 流量。將面對 Internet 的埠限制為 TCP 80 和 443限制到埠 80 的 HTTP 和埠 443 的 HTTPS (SSL) 入站流量。對於出站(面對 Internet)的 NIC,使用 IPSec 或者 TCP 篩選。有關更多信息,請參閱本指導「如何……」部分中的「如何使用 IPSec」。加密或者限制 intranet 流量對於內部(面對 intranet)NIC,如果您沒有安全的數據中心,而且需要在計算機之間傳遞一些敏感信息,應該考慮是否加密流量,並限制 Web 伺服器和下游伺服器(例如應用程序伺服器或者資料庫伺服器)之間的通信。加密網路流量能夠應對網路偵聽所帶來的威脅。如果認為風險足夠小,也可以選擇不加密流量。所使用的加密類型也會影響它所應對的威脅的類型。例如,SSL 是一種應用程序級加密,而 IPSec 是傳輸層加密。因此,SSL 除了網路偵聽威脅之外,還能夠防範來自同一台機器上另一個進程(尤其是運行在不同帳號下)的數據篡改或者信息泄漏等威脅。

返回頁首第 9 步:註冊表註冊表是許多關鍵伺服器配置設置的儲存庫。因此,您必須確保只有得到授權的管理員能夠訪問它。如果攻擊者也能夠編輯註冊表,則他或者她就能夠重新配置伺服器並且危及伺服器的安全。在此步驟中,應該:?限制對註冊表的遠程管理。?保護 SAM(僅對獨立伺服器)。限制對註冊表的遠程管理Winreg 項能夠確定是否可以遠程訪問註冊表項。默認情況下,該項配置為防止用戶遠程查看註冊表中的大多數密鑰,只有高特權用戶能夠修改它。在 Windows 2000 上,遠程註冊表訪問默認時僅限於 Administrators 和 Backup operators 組的成員。管理員可以進行完全控制,而備份操作員具有隻讀訪問許可權。以下註冊表位置中的相關聯許可權確定了誰能夠遠程訪問註冊表。HKLMSYSTEMCurrentControlSetControlSecurePipeServerswinreg要查看該註冊表項的許可權,運行 Regedt32.exe,導航到該項,從 Security 菜單中選擇 Permissions。注 有些服務需要遠程訪問註冊表。請參考 Microsoft 知識庫文章 153183,「如何限制從遠程計算機對註冊表的訪問」,查看是否您的情況要求受限的遠程註冊表訪問。保護 SAM(僅對獨立伺服器)獨立伺服器在本地安全帳號管理器 (SAM) 資料庫中存儲帳號名和單向(不可逆的)密碼哈希 (LMHash)。SAM 是註冊表的一部分。通常,只有管理員組的成員能夠訪問帳號信息。雖然密碼實際上並不存儲在 SAM 中,而且密碼哈希也是不可逆的,但是如果攻擊者獲取了 SAM 資料庫的副本,他就能夠使用蠻力密碼技術獲取有效的用戶名和密碼。通過在註冊表中創建 NoLMHash 項(不是值)限制 SAM 中的 LMHash 存儲,如下所示:HKLMSystemCurrentControlSetControlLSANoLMHash有關更多信息,請參閱Microsoft 知識庫文章 299656,「如何防止 Windows 在 Active Directory 和本地 SAM 資料庫中存儲密碼的 LAN 管理器哈希」。

返回頁首第 10 步:審核和日誌審核並不能防止系統攻擊,雖然它對於標識入侵者和進行中的攻擊能夠提供非常重要的幫助,而且能夠輔助您診斷攻擊足跡。在您的 Web 伺服器上啟用最小級的審核,並使用 NTFS 許可權保護日誌文件,使攻擊者無法通過以任何方式刪除或者更新日誌文件來掩藏其蹤跡。使用 IIS W3C 擴展日誌文件格式審核。在此步驟中,應該:?日誌記錄所有失敗的登錄企圖。?日誌記錄所有文件系統中的失敗操作。?重新定位和保護 IIS 日誌文件。?存檔日誌文件供離線分析。?審核對 Metabase.bin 文件的訪問。日誌記錄所有失敗的登錄企圖必須日誌記錄失敗的登錄企圖以能夠檢測和跟蹤可疑的行為。要審核失敗的登錄企圖1.從管理工具程序組啟動本地安全策略工具。2.展開 Local Policies,然後選擇 Audit Policy3.雙擊 Audit account logon events。4.單擊Failure,然後單擊 OK。登錄失敗記錄為 Windows 安全事件日誌中的事件。以下事件 ID 是可疑的:?531。這意味著企圖使用禁用帳號登錄。?529。這意味著使用未知的用戶帳號或者使用有效的用戶帳號但是使用無效的密碼企圖登錄。如果這些審核事件出人意料地大量增加,則可能表示有人企圖猜測密碼。日誌記錄文件系統中的所有失敗操作在文件系統上使用 NTFS 審核以檢測潛在惡意的企圖。這是一個分為兩個步驟的過程。啟用日誌1.從 Administrative Tools 程序組啟動 Local Security Policy 工具。2.展開 Local Policies,然後選擇 Audit Policy3.雙擊 Audit object access。4.單擊 Failure,然後單擊 OK。審核文件系統中的失敗操作1.啟動 Windows 資源管理器,並導航到文件系統的根目錄。2.右鍵單擊然後單擊 Properties。3.單擊 Security 選項卡。4.單擊 Advanced,然後單擊 Auditing 選項卡。5.單擊 Add,然後在 Name 欄位中輸入 Everyone。6.單擊 OK,然後選擇所有 Failed 複選框以審核所有失敗的事件。默認情況下,這將適用於當前文件夾和所有子文件夾和文件。7.單擊 OK 三次,關閉所有打開的對話框。失敗的審核事件將記入 Windows 安全事件日誌。重新定位和保護 IIS 日誌文件通過移動和重命名 IIS 日誌文件,可以大大增加攻擊者掩蓋其蹤跡的難度。攻擊者必須在更改日誌文件之前,定位日誌文件。要使攻擊者的任務更難以完成,還可以使用 NTFS 許可權保護日誌文件。將 IIS 日誌文件目錄重命名並移動到 Web 站點之外的卷。不要使用系統卷。然後,將以下 NTFS 許可權應用到日誌文件文件夾和子文件夾。?管理員完全控制?系統完全控制?備份操作員:讀取存檔日誌文件供離線分析為了促進對 IIS 日誌文件的離線分析,您可以使用一個腳本,將從 IIS 伺服器安全地刪除日誌文件這一過程自動化。日誌文件每 24 小時就應該刪除一次。自動化腳本可以使用 FTP、SMTP、HTTP 或者 SMB 從伺服器計算機傳輸日誌文件。但是,如果您啟用這些協議中的一種,應該安全地啟用,以避免另外創造任何受攻擊的可能。可以使用 IPSec 策略保護埠和信道。審核對 Metabase.bin 文件的訪問審核所有 Everyone 組對位於 WINNTSystem32inetsrv 的 IIS metabase.bin 文件的失敗訪問。對元資料庫的備份副本 Metabase backup 文件夾也如法炮製。更多注意事項此外,您可以配置 IIS W3C 擴展日誌文件格式審核。在 Web 站點屬性對話框的 WebSite 選項卡中選擇 W3C Extended Log File Format。然後您可以選擇 Extended Properties(例如 URI Stem 和 URI Query)。

返回頁首第 11 步:站點和虛擬目錄將 Web 根目錄和虛擬目錄重新放置到一個非系統分區,以防範目錄遍歷攻擊。這些攻擊允許攻擊者執行操作系統程序和實用工具。跨驅動器遍歷是不可能的。例如,這個方法能夠確保任何未來使攻擊者能夠訪問系統文件的規範化蠕蟲失敗。例如,如果攻擊者明確請求包含以下路徑的 URL,則請求將失敗:/scripts/..%5c../winnt/system32/cmd.exe在此步驟中,應該:?將 Web 站點移動到非系統卷。?禁用父路徑設置。?刪除潛在危險的虛擬目錄。?刪除或者保護 RDS。?設置 Web 許可權。?刪除或者保護 FrontPage 伺服器擴展。將 Web 站點移動到非系統卷不要使用默認的 inetpubwwwroot 目錄。例如,如果您的系統安裝在 C: 驅動器上,則應該將站點和內容目錄移到 D: 驅動器。這將降低與無法預料的規範化問題和目錄遍歷攻擊相關聯的風險。禁用父路徑設置這個 IIS 元資料庫設置能夠防止在腳本中使用「..」,並且防止應用程序對某些函數(例如 MapPath£?的調用。這有助於防範目錄遍歷攻擊。要禁用父路徑1.啟動 IIS。2.右鍵單擊 Web 站點的根目錄,單擊 Properties。3.單擊 HomeDirectory 選項卡。4.單擊 Configuration。5.單擊 AppOptions 選項卡。6.清除 Enableparentpaths。注 如果您使用 Application Center 2002 Administration Site,請參閱 Microsoft 知識庫文章 288309,「PRB :禁用父路徑破壞用戶界面」。刪除潛在危險的虛擬目錄默認時示例應用程序是不安裝的,不應該在生產 Web 伺服器上安裝。刪除所有示例應用程序,包括只能從本地計算機通過 http://localhost 或者 http://127.0.0.1 訪問的示例。刪除生產伺服器的以下虛擬目錄:IISSamples、IISAdmin、IISHelp 和 Scripts。注 IISLockdown 提供了一個選項,可以刪除 Scripts、IISSamples、IISAdmin 和 IISHelp 虛擬目錄。刪除或者保護 RDS遠程數據服務 (RDS) 是一個能夠用來控制通過 IIS 從 Internet 訪問遠程數據資源的組件。RDS 界面是由 Msadcs.dll 提供的,它位於以下目錄: program filescommon filessystemMsadc。刪除 RDS如果您的應用程序不使用 RDS,那就刪除它。要刪除 RDS 支持1.從 IIS 刪除 /MSADC 虛擬目錄映射。2.刪除以下位置的 RDS 文件和子目錄:Program FilesCommon FilesSystemMsadc1.刪除以下註冊表項:HKLMSystemCurrentControlSetServicesW3SVCParametersADCLaunch注 IISLockdown 提供了一個選項,可以刪除 MSADC 虛擬目錄。請注意,IISLockdown 只刪除虛擬目錄,而不是文件或者註冊表項。保護 RDS如果您的應用程序需要使用 RDS,那就對其進行保護。要保護 RDS1.刪除以下位置的示例:Progam FilesCommon FilesSystemMsadcSamples1.刪除以下註冊表項: HKLMSystemCurrentControlSetServicesW3SVCParametersADCLaunchVbBusObj.VbBusObjCls2.在 IIS 中禁用 MSADC 虛擬目錄的匿名訪問。3.在以下位置創建一個 HandlerRequired 註冊表項:HKLMSoftwareMicrosoftDataFactoryHandlerInfo4.創建一個新的 DWORD 值,將其設置為 1(1 表示安全模式,而 0 表示不安全的模式)。注 您可以使用註冊表腳本文件 Handsafe.reg 更改註冊表項。 腳本文件位於 msadc 目錄:Program FilesCommon FilesSystemmsadc有關保護 RDS 的更多信息,請參閱以下資料:?MS99-025 Microsoft 安全項目:使用 RDS 通過 ODBC 數據訪問對 IIS 伺服器進行未授權訪問,網址是:http://www.microsoft.com/technet/security/bulletin/ms99-025.asp。?MS98-004 Microsoft 安全項目:Microsoft 安全公告:使用 RDS 和 IIS 的未授權 ODBC 數據訪問,網址是:http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/MS98-004.asp。?Microsoft 知識庫文章 184375,「PRB : RDS 1.5、IIS 3.0 或者 4.0 和 ODBC 的安全問題」。設置 Web 許可權Web 許可權是通過 IIS 管理單元進行配置的,它在 IIS 元資料庫中進行維護。它們不是 NTFS 許可權。使用以下 Web 許可權:?讀取許可權。限制包含目錄上的讀取許可權。?寫入和執行許可權。限制允許匿名訪問的虛擬目錄的寫入和執行許可權。?腳本源文件訪問。配置腳本源文件訪問許可權只在允許內容創作的文件夾上。?寫入。只在允許內容創作的文件夾上配置寫入許可權。只為內容創作者授予寫入訪問許可權。注 支持內容創作的文件夾應該配置為要求身份驗證和 SSL 加密。刪除或者保護 FrontPage 伺服器擴展如果您不使用 FrontPage 伺服器擴展 (FPSE),就禁用它。如果您使用 FPSE,應該採取以下步驟提高安全性:?更新伺服器擴展。請參閱 MSDN 文章「Microsoft FrontPage 伺服器擴展 2002 for Windows」中討論的安全問題,該文章的網址是:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnservext/html/fpse02win.asp。?使用 FrontPage 安全限制訪問。FPSE 將安裝這樣的組,這些組被授予了對伺服器擴展所配置的那些 Web 站點的訪問許可權。這些組用來根據用戶角色限制可用的訪問。有關更多信息,請參閱幫助中心,網址是:http://office.microsoft.com/assistance/2002/articles/fp_colmanagesecurity.aspx。

返回頁首第 12 步:腳本映射腳本映射將一個特定的文件擴展名(例如 .asp)與處理它的 ISAPI 擴展(例如 Asp.dll)關聯起來。IIS 配置為支持一組擴展名(包括 .asp、.shtm .hdc 等等)。ASP.NET HTTP處理程序大致等效於 ISAPI 擴展。在 IIS 中,文件擴展名(例如 .aspx)首先被映射到 Aspnet_isapi.dll,後者將請求轉發給 ASP.NET 輔助進程。然後由 Machine.config 或者 Web.config 中的 <HttpHandler> 映射來決定處理文件擴展名的實際 HTTP 處理程序。與腳本映射相關聯的主要安全問題有:?攻擊者能夠利用擴展中的漏洞。如果擴展中存在的漏洞仍然沒有修補,將出現這種情況。未用的擴展將增加潛在的受攻擊面。例如,如果您不使用某個特定的擴展,可能就不會注意相關的更新。?伺服器端資源可以被客戶端下載。當文件擴展名沒有正確映射時,將出現這種情況,。不能被客戶端直接訪問的文件應該根據其擴展名映射到相應的處理程序,或者將其刪除。在此步驟中,應該:?映射 IIS 文件擴展名。?映射 .NETFramework 文件擴展名。映射 IIS 文件擴展名在 Windows 2000 上,感興趣的 IIS 文件擴展名包括:.asp、.asa、.cer、.cdx、.htr、.idc、.shtm、.shtml、.stm 和 .printer。如果您不使用這些擴展名中的任何一個,則將擴展名映射到 404.dll,這是由 IISLockdown 提供的。例如,如果您不想為客戶端提供 ASP 頁,就將 asp 映射到 404.dll。IISLockdown 是根據所選擇伺服器上的模板對映射進行更改的:?靜態 Web 伺服器。如果您運行 IISLockdown,並選擇靜態 Web 伺服器選項,則所有以上擴展名都將映射到 404.dll。?動態 Web 伺服器。如果您選擇動態 Web 伺服器選項,這是提供 ASP.NET 頁服務時的首選選項,則 .htr、.idc、.shtm、.shtml、.stm 和.printer 將映射到 404.dll,而 .asp、.cer、.cdx 和 .asa 則沒有映射到該文件。在此情況下,您應該手工將 .cer、.cdx 和 .asa 映射到 404.dll。如果您不為 .asp 提供服務,則可以同樣映射。為什麼要映射到 404.dll?通過將文件擴展名映射到 404.dll,可以防止文件通過 HTTP 返回和下載。如果您請求一個擴展名映射到 404.dll 的文件,將顯示一個包含消息「HTTP 404 - File not found」的 Web 頁。推薦將未用的擴展名映射到 404.dll,而不是刪除映射。如果您刪除了映射,則文件將錯誤地留在伺服器上(或者錯誤地放在伺服器上),在有人請求它的時候,它可能以明文顯示,因為 IIS 不知道如何處理它。將文件擴展名映射到 404.dll1.啟動 IIS。2.在左邊的窗口中右鍵單擊伺服器名稱,然後單擊 Properties。3.確保在 MasterProperties 下拉列表中選擇了 WWWService,然後單擊附近的 Edit 按鈕。4.單擊 HomeDirectory 選項卡。5.單擊 Configuration。所顯示的選項卡頁如圖 4 中所示。

圖 4. 映射應用程序擴展名6.從列表中選擇一個擴展名,然後單擊 Edit。7.單擊 Browse 並導航到 WINNTsystem32inetsrv404.dll。注 這個步驟假設您之前已經運行了 IISlockd.exe,因為 404.dll 是由 IISLockdown 工具安裝的。8.單擊 Open,然後單擊 OK。9.對所有其他的文件擴展名重複步驟 6、7 和 8。映射 .NET Framework 文件擴展名以下 .NET Framework 文件擴展名映射到 aspnet_isapi.dll:.asax、.ascx、.ashx、.asmx、.aspx、.axd、.vsdisco、.jsl、.java、.vjsproj、.rem、.soap、.config、.cs、.csproj、.vb、.vbproj、.webinfo、.licx、.resx 和 .resources。.NET Framework 通過將文件擴展名與 Machine.config 中的 System.Web.HttpForbiddenHandler 相關聯,保護文件擴展名不應該直接地被客戶端調用。 以下文件擴展名默認時將映射到 System.Web.HttpForbiddenHandler:.asax、.ascx、.config、.cs、.csproj、.vb、.vbproj、.webinfo、.asp、.licx、.resx 和 .resources。有關 HTTP處理程序的更多信息,請參閱「第 16 步: Machine.config」。更多注意事項因為 IIS 首先處理 Web 請求,可以直接將不想客戶端調用的 .NET Framework 文件擴展名映射到 404.dll。這將包括兩個任務:?404.dll 將在傳遞到 ASP.NET 之前和在 ASP.NET 輔助進程對其進行處理之前處理並拒絕請求。這樣就避免了 ASP.NET 輔助進程進行不必要的處理。而且,更早地阻塞請求也是一個很好的安全實踐。?404.dll 返回消息「HTTP 404 - File not found」,而 System.Web.HttpForbiddenHandler 返回消息「This type of page is not served」。有觀點認為,「File not found」消息所暴露的信息更小,因此可以認為更加安全,但是對此存在爭議。

返回頁首第 13 步:ISAPI 篩選器過去,ISAPI 篩選器中的漏洞將導致顯著的 IIS 利用。在規則地安裝 IIS 之後,不會有不需要的 ISAPI 篩選器,雖然 .NET Framework 將安裝 ASP.NET ISAPI 篩選器 (Aspnet_filter.dll),後者會載入到 IIS 進程地址空間 (Inetinfo.exe) 中,用來支持無 cookie 的會話狀態管理。如果您的應用程序不需要支持無 cookie 的會話狀態,而且它們不會將 <sessionState>元素的 cookieless 屬性設置為 true,這個篩選器就可以被刪除。在此步驟中,應該刪除未使用的 ISAPI 篩選器。刪除未使用的 ISAPI 篩選器刪除任何未用的 ISAPI 篩選器,這一點將在後面的部分解釋。要查看 ISAPI 篩選器1.要啟動 IIS,從管理工具程序組選擇 Internet Services Manager。2.右鍵單擊機器(而非 Web 站點,因為篩選器是機器範圍的),然後單擊 Properties。3.單擊 Edit。4.單擊 ISAPI Filters 選項卡。所顯示的選項卡頁如圖 5 中所示:

圖 5. 刪除未用的 ISAPI 篩選器

返回頁首第 14 步:IIS 元資料庫安全和其他 IIS 配置設置在 IIS 元資料庫文件中維護。加固 IIS 元資料庫(和備份元資料庫文件)上的 NTFS 許可權,以確保攻擊者無法以任何方式修改 IIS 配置(例如,要禁用一個特殊虛擬目錄的身份驗證)。在此步驟中,應該:?使用 NTFS 許可權限制對元資料庫的訪問。?限制 IIS 返回旗標信息。使用 NTFS 許可權限制對元資料庫的訪問在 WINNTsystem32inetsrv 目錄中的 IIS 元資料庫文件 (Metabase.bin) 上設置以下 NTFS 許可權。?本地系統:完全控制?管理員:完全控制限制 IIS 返回的旗標信息旗標信息可能暴露軟體的版本和有助於攻擊者的其他信息。旗標信息能夠暴露所運行的軟體,使攻擊者利用已知的軟體漏洞。當您檢索一個靜態頁時,例如,一個 .htm 或者 .gif 文件,將在響應中添加內容位置頭。默認情況下,這個內容頭將引用 IP 地址,而不是完全限定域名 (FQDN)。這意味著內部 IP 地址不會在無意中暴露。例如,以下 HTTP 響應頭中以黑體顯示了 IP 地址:HTTP/1.1 200 OKServer: Microsoft-IIS/5.0Content-Location: http://10.1.1.1/Default.htmDate: Thu, 18 Feb 1999 14:03:52 GMTContent-Type: text/htmlAccept-Ranges: bytesLast-Modified: Wed, 06 Jan 1999 18:56:06 GMTETag: "067d136a639be1:15b6"Content-Length: 4325您可以通過修改 IIS 元資料庫中的一個值,隱藏 HTTP 響應頭中返回的內容位置,將暴露 IP 地址的默認行為更改為發送 FQDN。有關在 HTTP 響應中隱藏內容位置的更多信息,請參閱 Microsoft 知識庫文章 218180,「Internet 信息伺服器在 HTTP 頭(內容-位置)中返回 IP 地址」。

返回頁首第 15 步:伺服器證書如果您的 Web 應用程序支持埠 443 上的 HTTPS (SSL),則您必須安裝伺服器證書。當客戶端建立安全 HTTPS 會話時,這是會話協商過程必需的一部分。有效的證書能夠提供安全的身份驗證,從而使客戶端能夠信任與之通信的伺服器,並保護通信,使敏感的數據保持機密性,以防止在網路上被篡改。在此步驟中,驗證您的伺服器證書。驗證您的伺服器證書檢查以下四項以確認 Web 伺服器證書的有效性:?檢查有效的起始日期和有效的截止日期是否在範圍之內。?檢查證書是否正確使用。如果是作為伺服器證書頒發的,則不應該用於電子郵件。?檢查證書鏈中的公鑰是否直至可信根都有效。?檢查它沒有被撤消。它不能在來自頒發證書的伺服器的證書撤消列表 (CRL) 上。

返回頁首第 16 步:Machine.Config本部分討論了如何加固適用於所有應用程序的機器級設置的信息。有關特定於應用程序的加固設置,請參閱「保護 ASP.NET 應用程序的安全」單元。Machine.config 文件維護著大量機器級範圍的 .NET Framework 設置,其中許多設置都會影響安全。Machine.config 位於以下目錄:%windir%Microsoft.NETFramework{version}CONFIG注 您可以使用任何文本編輯器或者 XML 編輯器(例如記事本)編輯 XML 配置文件。XML 標籤是區分大小寫的,因此一定要使用正確的大小寫。在此步驟中,應該:?將受保護的資源映射到 HttpForbiddenHandler。?驗證跟蹤是否已經禁用。?驗證調試編譯是否禁用。?驗證 ASP.NET 錯誤未返回到客戶端。?驗證會話狀態設置。將受保護的資源映射到 HttpForbiddenHandlerHTTP 處理程序位於 Machine.config 中,在 <httpHandlers> 元素之下。HTTP 處理程序負責處理特定文件擴展名的 Web 請求。不應該在前端 Web 伺服器上啟用遠程處理;只應該在與 Internet 隔離的中間層應用程序伺服器上啟用遠程處理。?以下文件擴展名在 Machine.config 中映射到 HTTP處理程序:?.aspx 用於 ASP.NET 頁?.rem 和 .soap 用於遠程處理。?.asmx 用於 Web 服務。?.asax、.ascx、.config、.cs、.csproj、.vb、.vbproj、.webinfo、.asp、.licx、.resx 和 .resources 是受保護的資源,映射到 System.Web.HttpForbiddenHandler。對於 .NET Framework 資源,如果您不使用文件擴展名,則應該將擴展名映射到 Machine.config 中的 System.Web.HttpForbiddenHandler,如下例所示:<add verb="*" path="*.vbproj" type="System.Web.HttpForbiddenHandler" />在此情況下,.vbproj 文件擴展名映射到 System.Web.HttpForbiddenHandler。如果客戶端請求一個以 .vbproj 終止的路徑,則 ASP.NET 返回一條消息:「This type of page is not served」。?以下指導可以用於處理 .NET Framework 文件擴展名:?將不使用的擴展名映射到 HttpForbiddenHandler。如果您不提供 ASP.NET 頁,則將 .aspx 映射到 HttpForbiddenHandler。如果您不使用 Web 服務,則將 .asmx 映射到 HttpForbiddenHandler。?在面對 Internet 的 Web 伺服器上禁用遠程處理。將面對 Internet 的 Web 伺服器上的遠程處理擴展名 (.soap 和 .rem)映射到 HttpForbiddenHandler。禁用 .NET Remoting要禁用 .rem 和 .soap 擴展名的 .NET Remoting 禁用請求,使用<httpHandlers> 之下的以下元素:<add verb="*" path="*.rem" type="System.Web.HttpForbiddenHandler"/><add verb="*" path="*.soap" type="System.Web.HttpForbiddenHandler"/>注 這不能通過使用遠程處理基礎結構來防止 Web 伺服器上的 Web 應用程序連接下游對象。但是,它能夠防止客戶端連接 Web 伺服器上的對象。驗證跟蹤是否禁用通過使用 <trace> 元素來配置 Machine.config 中的跟蹤。雖然在開發和測試伺服器上跟蹤很有用,但是不應該在生產伺服器上啟用跟蹤,因為系統級跟蹤信息能夠極大地輔助攻擊者分析應用程序,探查弱點。在生產伺服器上使用以下配置:<trace enabled="false" localOnly="true" pageOutput="false"requestLimit="10" traceMode="SortByTime"/>在生產伺服器上設置 enabled="false"。如果您確實需要跟蹤活動應用程序所具有的問題,在測試環境中模擬問題,或者如果必要,啟用跟蹤並將 localOnly="true" 設置為防止跟蹤細節返回到遠程客戶端。驗證調試編譯是否禁用您可以通過使用<compilation> 元素,控制編譯器是否生成包含調試符號的調試版本。要關閉調試編譯,請設置 debug="false",如下所示:<compilation debug="false" explicit="true" defaultLanguage="vb" />驗證 ASP.NET 錯誤未返回到客戶端在應用程序出現異常條件的情況下,您可以使用<customErrors> 元素配置應該返回到客戶端的自定義、一般性錯誤消息。確保模式屬性設置為 "RemoteOnly",如下例所示:<customErrors mode="RemoteOnly" />在安裝 ASP.NET 應用程序之後,您可以配置設置以指向自定義錯誤頁,如下例所示:<customErrors mode="On" defaultRedirect="YourErrorPage.htm" />驗證會話狀態設置如果您不使用會話狀態,則驗證會話狀態是否在 Machine.config 中禁用,如下例所示:<sessionState mode="Off" . . . />此外,還要確保 ASP.NET 狀態服務被禁用。默認的會話狀態模式是 "InProc",且 ASP.NET 狀態服務設置為手工。有關在安裝了要求會話狀態的 ASP.NET 應用程序時保護會話狀態的更多信息,請參閱「保護 ASP.NET 應用程序的安全」單元中的「會話狀態」。

返回頁首第 17 步:代碼訪問安全機器級代碼訪問安全策略是由位於以下目錄中 Security.config 文件中的設置來確定的:%windir%Microsoft.NETFramework{version}CONFIG運行以下命令以確保伺服器上啟用代碼訪問安全:caspol -s On有關為 ASP.NET Web 應用程序配置代碼訪問安全的更多信息,請參閱「在 ASP.NET 中使用代碼訪問安全」單元。在此步驟中,應該:?刪除本地 intranet 區域的所有許可權。?刪除 Internet 區域的所有許可權。刪除本地 intranet 區域的所有許可權本地 intranet 區域將向從 UNC 共享或者內部 Web 站點運行的代碼應用許可權。重新配置此區域,通過將其與 Nothing 許可權集相關聯,從而不授予任何許可權。要刪除本地 intranet 區域的所有許可權1.從 Administrative Tools 程序組啟動 Microsoft .NET Framework 1.1 版本配置工具。2.展開 RuntimeSecurityPolicy,展開 Machine,然後展開 CodeGroups。3.展開 All_Code,然後選擇 LocalIntranet_Zone。4.單擊 Edit Code Group Properties。5.單擊 PermissionSet 選項卡。6.從 Permission 下拉列表選擇 Nothing。7.單擊 OK。對話框如圖 6 中所示。

圖 6. 設置 LocalIntranet_Zone 代碼許可權為 Nothing刪除 Internet 區域的所有許可權Internet 區域將代碼訪問許可權應用於從 Internet 下載的代碼。在 Web 伺服器上,此區域應該通過將其與 Nothing 許可權集相關聯重新配置,從而不授予任何許可權。重複前面「刪除本地 Intranet 區域的所有許可權」部分中的步驟,除了將 Internet_Zone 設置為 Nothing 許可權集。

返回頁首安全 Web 伺服器的快照快照視圖顯示了安全 Web 伺服器的屬性,可以用來快速並且容易地將設置與您自己的 Web 伺服器進行比較。表 5 中所示的設置基於宿主 Web 站點的 Web 伺服器,這些設置已證明對於攻擊很容易復原,並說明了合理的安全實踐。通過以下的連續步驟,您可以生成一個就安全而言配置完全相同的伺服器。表 5:安全 Web 伺服器的快照組件 特性修補程序和更新最新的服務包和更新適用於 Windows、IIS 和 .NET Framework。服務禁用不必要的服務。禁用 NNTP、SMTP 和 FTP,除非您要求它們。禁用 WebDAV,如果使用則需要進行保護。服務帳號以最低特權運行。如果不必要,禁用 ASP.NET 會話狀態服務。協議不要在伺服器上啟用 NetBIOS 和 SMB 協議。TCP 堆棧已經加固。帳號刪除未用的帳號。禁用 Guest 帳號。對默認管理員帳號重命名,並施加強密碼。禁用默認的匿名帳號 (IUSR_Machine)。使用自定義匿名帳號匿名訪問。強制施行強密碼策略。遠程登錄是受限的。禁用空會話(匿名登錄)。如果必需,批准帳號委託。不使用共享帳號。本地 adminstrators 組的成員身份是有限的(理想情況下是兩個成員)。管理員許可權是進行互動式登錄(或者實現安全的遠程管理解決方案)所必需的。文件和目錄Everyone 組沒有對系統、Web,或者工具目錄的許可權。匿名帳號沒有訪問 Web 站點內容目錄和系統實用工具的許可權。工具、實用工具和 SDK 或者被刪除,或者被保護起來。刪除示例文件。刪除不必要的 DSN。共享從伺服器上刪除未用的共享。訪問必需的共享是安全的(不對「Everyone」啟用共享,除非必要。)如果不必要,刪除管理共享(C$和Admin$)。埠阻塞所有埠,除了 80 和 443 (SSL),尤其是有比較脆弱的埠 135–139 和 445。註冊表遠程管理註冊表是不允許的。SAM 已經保護(僅對於獨立伺服器)。審核和日誌記錄登錄失敗將記入日誌。Everyone 組的對象訪問失敗記入日誌。日誌文件從 %systemroot%system32LogFiles 重新定位,並用 ACL 保護起來:管理員和系統具有完全控制許可權。啟用 IIS 日誌。日誌文件定期存檔,供離線分析使用。審核對 metabase.bin 文件的訪問。為 W3C 擴展日誌文件格式審核配置 IIS。IIS站點和虛擬目錄Web 根和虛擬目錄位於非系統卷上。禁用父路徑設置。刪除危險的虛擬目錄(IIS Samples、MSADC、IISHelp、Scripts 和 IISAdmin)。刪除或者保護 RDS。Web 許可權限制不適當的訪問。包含目錄限制讀取 Web 許可權。具有匿名訪問許可權的文件夾限制寫入和執行 Web 許可權。允許內容創作的受保護文件夾允許腳本源文件訪問 Web 許可權,而所有其他文件夾則不允許。如果不必要,則刪除 FPSE。腳本映射將未用的腳本映射映射到 404.dll:.idq、.htw、.ida、.shtml、.shtm、.stm、idc、.htr、.printer。注 404.dll 是在運行 IIS Lockdown 工具時安裝的。ISAPI 篩選器刪除未用的 ISAPI 篩選器。IIS 元資料庫訪問 IIS 元資料庫是受 NTFS 許可權限制的。旗標信息是受限的;HTTP 響應頭中的內容位置是隱藏的。Machine.configHttpForbiddenHandler受保護的資源映射到 System.Web.HttpForbiddenHandler遠程處理.NET Remoting 禁用。<httpHandlers> <add verb="*" path="*.rem" type="System.Web.HttpForbiddenHandler"/> <add verb="*" path="*.soap" type="System.Web.HttpForbiddenHandler"/> </httpHandlers>跟蹤跟蹤信息和詳細的錯誤信息不返回到客戶端:<trace enabled="false">編譯禁用調試編譯:<compilation debug="false"/>customErrors錯誤詳情不返回到客戶端:<customErrors mode="On" />用一般性的錯誤頁將錯誤寫入事件日誌。sessionState如果不需要則禁用會話狀態:<sessionState mode="Off" />代碼訪問安全代碼訪問安全對機器啟用代碼訪問安全。caspol -s OnLocalIntranet_Zone本地 intranet 區域沒有許可權:PermissionSet=NothingInternet_ZoneInternet 區域沒有許可權:PermissionSet=Nothing

返回頁首保持安全您需要監視伺服器的安全狀態,並定期更新它,這樣有助於防止新發現的漏洞被人利用。要幫助保持伺服器的安全:?審核組成員身份。?監視審核日誌。?保持最新的服務包和修補程序。?執行安全評估。?使用安全通知服務。審核組成員身份搞清楚用戶組成員身份,尤其是特權組(例如管理員)。以下命令列出了 Adminstrators 組的成員 :net localgroup administrators監視審核日誌定期監視審核日誌,並通過手工查看日誌文件或者使用「Microsoft 知識庫文章 296085,「如何:使用 SQL Server 分析 Web 日誌」中敘述的技術進行分析。保持最新的服務包和修補程序制定一個分析伺服器軟體的進度並訂閱安全警告。使用 MBSA 定期掃描您的伺服器是否遺漏了修補程序。以下鏈接提供了最新的更新:?Windows 2000 服務包。最新的服務包位於:http://www.microsoft.com/windows2000/downloads/servicepacks/default.asp。?.NET Framework 服務包。有關如何獲取最新 .NET Framework 更新的信息,請參閱 MSDN 文章,「如何獲取 Microsoft .NET Framework」,網址是:http://msdn.microsoft.com/netframework/downloads/howtoget.asp?關鍵更新。這些更新有助於解決已知的問題,有助於保護計算機免受已知安全漏洞之害。對於最新的關鍵更新,請參閱「關鍵更新」,網址是:http://www.microsoft.com/windows2000/downloads/critical/default.asp?高級安全更新。有關更多的安全更新,請參閱「高級安全更新」,網址是:http://www.microsoft.com/windows2000/downloads/security/default.asp。這些還有助於保護計算機免受已知的安全漏洞之害。執行安全評估使用 MBSA 定期檢查安全漏洞,並找出遺漏的修補程序和更新。安排 MBSA 每日運行,並分析其結果,採取必要的操作。有關自動化 MBSA 的更多信息,請參閱本指導「如何……」部分中的「如何使用 MBSA」。使用安全通知服務使用表 3 中列出的 Microsoft 服務獲取包含可能的系統漏洞通知的安全公告。表 3 安全通知服務服務 位置TechNet 安全 Web 站點http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/current.asp使用該 Web 頁查看適用於系統的安全公告。Microsoft 安全通知服務http://register.microsoft.com/subscription/subscribeme.asp?ID=135使用這個服務註冊定期的電子郵件公告,這些公告能夠通知您是否有新的修補程序和更新。此外,訂閱表 4 中所示的業界安全警告服務。這使您能夠在還沒有修補程序的時候評估漏洞的威脅。表 4 業界安全通知服務服務 位置CERT 警告郵件列表http://www.cert.org/contact_cert/certmaillist.html這些信息豐富的警告在漏洞報告時發送。Windows 和 .NET 雜誌安全更新http://email.winnetmag.com/winnetmag/winnetmag_prefctr.asp公告最新的安全漏洞,並標識修補。NTBugtraqhttp://www.ntbugtraq.com/default.asp?pid=31&sid=1#020這是對 Windows 安全漏洞和利用方式的開放式討論。討論的是當前尚未修補的漏洞。

返回頁首遠程管理管理員經常需要能夠管理多個伺服器。確保遠程管理解決方案的需求不會危及安全。如果您需要遠程管理能力,那麼以下推薦實踐將有助於提高安全性:?限制管理帳號的數量。這包括限制管理帳號的數量,以及限制哪些帳號允許遠程登錄。?限制工具。主要選項包括 Internet 服務管理器和終端服務。另一個選項是 Web 管理(使用 IISAdmin 虛擬目錄),但這是不推薦的,而且這個選項會被 IISLockdown.exe 刪除。Internet 服務管理器和終端服務使用 Windows 安全。這裡的主要注意事項是限制所使用的 Windows 帳號和埠。?限制允許管理伺服器的計算機。IPSec 可以用來限制哪些計算機能夠連接 Web 伺服器。保護終端服務安全地使用 Microsoft 終端服務以遠程管理 Web 伺服器是可能的。終端服務基於 Microsoft 的專有協議,稱為遠程桌面協議 (RDP)。RDP 使用 TCP 3389 埠並支持兩個並發用戶。以下部分敘述了如何安裝和配置終端服務以實現安全管理:?安裝終端服務。?配置終端服務。安裝終端服務要安裝終端服務:1.通過從控制面板使用Add/Remove Programs 安裝終端服務。使用 Add/Remove Windows Components 選項。不需要安裝終端服務許可服務以實現遠程管理。2.配置終端服務為遠程管理模式。3.刪除 TsInternetUser 帳號,這是在終端服務安裝期間創建的。此帳號用來支持對終端服務的匿名 Internet 訪問,它不應該在伺服器上啟用。配置終端服務使用管理工具程序組中的終端服務配置 MMC 管理單元配置以下項目:1.連接終端服務的加密有三個級別(Low、Medium 和 High)。設置加密使用 128 位密鑰。請注意應該在伺服器和客戶端上都安裝 Windows 的高加密包。2.配置終端服務會話在空閑連接時間限制之後斷開。將其設置為終止斷開的會話。如果用戶關閉終端服務客戶端應用程序,並且在 10 分鐘的時間內沒有註銷,就可以認為會話斷開。3.最後,限制訪問終端服務的許可權。使用 RDP 對話框中的 RDP permissions 選項卡。默認情況下,所有管理員組的成員都允許訪問終端服務。如果您不想所有管理員組的成員訪問終端服務,那麼刪除這個組,並添加需要訪問的單獨帳號。請注意系統帳號必須在此列表中。在客戶端和伺服器之間使用安全的 VPN 連接或者 IPSec 隧道提高安全性。此方法提供了相互的身份驗證和 RDP 負載的加密。通過 RDP 複製文件終端服務不提供對文件傳輸的內置支持。但是,你可以安裝來自 Windows 2000 Server 資源包的文件複製實用工具,從而在終端服務的剪貼板重定向功能中添加文件傳輸功能。有關實用工具和安裝指導的更多信息,請參閱 Microsoft 知識庫文章 244732,「如何:安裝包含在 Windows 2000 資源包中的文件複製工具」。

返回頁首將安全變得簡單化和自動化本單元說明了如何手工配置 ASP.NET Web 伺服器的安全設置。手工過程有助於對配置的理解,但是比較耗費時間。使用以下資源有助於自動化本單元提出的步驟:?有關如何自動化 IISLockdown 的信息,請參閱 Microsoft 知識庫文章 310725,「如何:運行 IIS 中未被注意的 IISLockdown 嚮導」。?您可以使用安全模板創建和部署安全策略。有關更多信息,請參閱以下 Microsoft 知識庫文章:?313434 ,「如何:在 Windows 2000 的安全模板管理單元中定義安全模板」。?309689 ,「如何:在 Windows 2000 中應用預定義的安全模板」。?321679 ,「如何:在 Windows 2000 Server 中管理安全模板」。?有關自定義和自動化安全模板的詳細指導,請參閱 Microsoft patterns & practices, Microsoft Solution for Securing Windows 2000 Server,網址是:http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/prodtech/windows/secwin2k/default.asp。Microsoft Solution for Securing Windows 2000 Server 涵蓋了最常見的伺服器角色,包括域控制器、DNS 伺服器、DHCP 伺服器、IIS Web 伺服器,以及文件和列印伺服器。本指導中使用的方法使您能夠採用默認的 Windows 2000 安裝,並創建安全的伺服器,具體的精確配置會因為其角色的不同而不同。管理員然後可以有意識地降低安全性,以滿足特殊環境的需要。本指導提供了基準安全推薦實踐的基礎,覆蓋了服務、帳號、組策略等等,您可以使用它作為常見伺服器角色類型的起點。

返回頁首小結安全的 Web 伺服器為宿主 Web 應用程序提供了一個受保護的基礎。本單元說明了可能影響 ASP.NET Web 伺服器的主要威脅,提供了降低風險必需的安全步驟。通過執行本單元提出的加固步驟,您可以創建安全的平台和宿主基礎結構,以支持 ASP.NET Web 應用程序和 Web 服務。本單元中使用的方法使您能夠從零開始構建安全的 Web 伺服器,能夠加固現有 Web 伺服器的安全配置。接下來的步驟就是確保任何部署的應用程序都正確地進行了配置。

返回頁首其他資源更多相關的閱讀材料,請參閱以下資源:?有關保護開發人員工作站的信息,請參閱本指導「如何……」部分中的「如何保護開發人員工作站」。?有關如何保護 ASP.NET Web 應用程序和Web 服務的更多信息,請參閱「保護 ASP.NET 應用程序的安全」單元。?有關如何配置 Open Hack 應用程序的信息,請參閱 MSDN 文章,「構建和配置更安全的 Web 站點」,網址是:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/openhack.asp。?TechNet 上與安全相關的資源,請參閱 TechNet 安全頁,網址是:http://www.microsoft.com/technet/security/default.asp。?有關列印形式的核對錶,請參閱「核對錶:保護 Web 伺服器」。轉到原英文頁面
推薦閱讀:

保護眼睛常犯的七個錯誤
睡覺時肚臍放點它,整晚保護心血管,半個月甩掉大肚子
家長如何保護孩子的童年
辱母案再開庭:於歡怎麼判?保護傘追不追?

TAG:安全 | 伺服器 | 保護 |