保護 web 伺服器
本頁內容
本模塊內容 | |
目標 | |
適用範圍 | |
如何使用本模塊 | |
概述 | |
威脅與對策 | |
確保 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 伺服器位於宿主基礎結構的前端。它直接連接到 Internet,負責接收來自客戶端的請求、創建動態 Web 頁並對請求的數據作出響應。
安全的 Web 伺服器可為宿主環境提供可靠的基礎,其配置在 Web 應用程序的整體安全方面起重要作用。但是,如何確保 Web 伺服器安全呢?確保 Web 伺服器安全的挑戰之一就是要明確自己的目標。只有明白了何謂安全的 Web 伺服器,您就可以了解如何為此應用所需的配置設置。
本模塊提供了一種系統且可重複的方法,您可以使用它成功配置安全的 Web 伺服器。模塊還介紹了一種確保 Web 伺服器安全的方法,該方法將伺服器的配置劃分為十二個安全區域。每一安全區域都由一系列高級操作步驟組成。這些步驟都是模塊化的,介紹了將方法付諸實施的途徑。
返回頁首目標
使用本模塊可以實現:
? | 了解何謂安全的 Web 伺服器。 |
? | 使用已證明正確的方法確保 Web 伺服器安全。 |
? | 了解在默認情況下 Windows 2000 Server 中 IIS 的完整安裝和 .NET Framework 的安裝內容。 |
? | 了解安全 Web 伺服器中可禁用的服務。 |
? | 安全配置 Web 伺服器,包括操作系統協議、帳戶、文件、目錄、共享、埠、註冊表、審核和日誌記錄。 |
? | 安全配置 Web 伺服器應用程序(本例是 IIS)組件,包括 Web 站點、虛擬目錄、腳本映射、ISAPI 篩選器、元資料庫和伺服器證書。 |
? | 安全配置 .NET Framework 設置,包括 Machine.config 文件和代碼訪問安全性。 |
? | 針對遠程管理安裝並使用安全的終端服務。 |
? | 了解解決常見 Web 伺服器威脅(包括配置處理、拒絕服務、未經授權的訪問、隨意代碼執行、特權提升、病毒、蠕蟲和特洛伊木馬)的常用對策。 |
返回頁首適用範圍
本模塊適用於下列產品和技術:
? | Microsoft Windows Server 2000 和 2003 |
? | Microsoft .NET Framework 1.1 和 ASP.NET 1.1 |
? | Microsoft Internet 信息服務 (IIS) 5.0 和 6.0 |
返回頁首如何使用本模塊
為了充分理解本模塊內容,您應:
? | 閱讀模塊 2 威脅與對策。這有助於您更廣泛地了解 Web 應用程序的潛在威脅。 |
||||||
? | 使用快照。安全 Web 伺服器快照部分列出並說明了安全 Web 伺服器的屬性。它反映了來自各種源(包括客戶、行業專家和內部 Microsoft 開發與支持小組)的輸入。在配置伺服器時,請參考快照表。 |
||||||
? | 使用檢查表。本指南「檢查表」部分的檢查表:保護 Web 伺服器提供了一份可列印的作業幫助,可將它用作快速參考。使用基於任務的檢查表可快速評估必需的步驟,然後幫助您逐步完成各個步驟。 |
||||||
? | 使用「如何」部分。本指南「如何」部分包括了下列指導性文章:
|
返回頁首概述
究竟怎樣的 Web 伺服器才算安全?確保 Web 伺服器安全的挑戰之一就是明確您的目標。只有明白了何謂安全的 Web 伺服器,您就可以了解如何為此應用所需的配置設置。本模塊提供了一種系統且可重複的方法,您可以使用它成功配置安全的 Web 伺服器。
本模塊首先回顧了影響 Web 伺服器的最常見威脅。然後,使用上述觀點創建相應的方法。最後,模塊將這種方法付諸實施,並逐步說明如何提高 Web 伺服器的安全性。儘管基本方法可跨不同技術復用,但本模塊的重點是如何保證運行 Microsoft Windows 2000 操作系統並駐留 Microsoft .NET Framework 的 Web 伺服器的安全。
返回頁首威脅與對策
由於攻擊者可遠程攻擊,Web 伺服器常常是攻擊對象。如果了解 Web 伺服器的威脅並努力制定相應的對策,您可以預見很多攻擊,進而阻止日漸增加的攻擊者。
Web 伺服器的主要威脅是:
? | 配置處理 |
? | 拒絕服務 |
? | 未經授權的訪問 |
? | 隨意代碼執行 |
? | 特權提升 |
? | 病毒、蠕蟲和特洛伊木馬 |
圖 16.1 匯總了目前流行的攻擊和常見漏洞。
圖 16.1Web 伺服器主要威脅和常見漏洞
配置處理配置處理或主機枚舉是一種收集 Web 站點相關信息的探測過程。攻擊者可利用這些信息攻擊已知的薄弱點。
漏洞
致使伺服器容易受到配置處理攻擊的常見漏洞包括:
? | 不必要的協議 |
? | 打開的埠 |
? | Web 伺服器在橫幅中提供配置信息 |
攻擊
常見的配置處理攻擊包括:
? | 埠掃描 |
? | Ping 掃射 (ping sweep) |
? | NetBIOS 和伺服器消息塊 (SMB) 枚舉 |
對策
有效的對策有,阻止所有不必要的埠、阻止 Internet 控制消息協議 (ICMP) 通信、禁用不必要的協議(如 NetBIOS 和 SMB)。
拒絕服務如果伺服器被泛濫的服務請求所充斥,則出現拒絕服務攻擊。此時的威脅是,Web 伺服器因負荷過重而無法響應合法的客戶端請求。
漏洞
導致拒絕服務攻擊增加的可能漏洞包括:
? | 薄弱的 TCP/IP 堆棧配置 |
? | 未修補的伺服器 |
攻擊
常見的拒絕服務攻擊包括:
? | 網路級 SYN flood(同步攻擊) |
? | 緩衝區溢出 |
? | 使用來自分散式位置的請求淹沒 Web 伺服器 |
對策
有效的對策有,強化 TCP/IP 堆棧,以及始終將最新的軟體修補程序和更新程序應用於系統軟體。
未經授權的訪問如果許可權不合適的用戶訪問了受限的信息或執行了受限的操作,則出現未經授權的訪問。
漏洞
導致未經授權訪問的常見漏洞包括:
? | 薄弱的 IIS Web 訪問控制(包括 Web 許可權) |
? | 薄弱的 NTFS 許可權 |
對策
有效的對策有,使用安全的 Web 許可權、NTFS 許可權和 .NET Framework 訪問控制機制(包括 URL 授權)。
隨意代碼執行如果攻擊者在您的伺服器中運行惡意代碼來損害伺服器資源或向下游系統發起其他攻擊,則出現代碼執行攻擊。
漏洞
可導致惡意代碼執行的漏洞包括:
? | 薄弱的 IIS 配置 |
? | 未修補的伺服器 |
攻擊
常見的代碼執行攻擊包括:
? | 路徑遍歷 |
? | 導致代碼注入的緩衝區溢出 |
對策
有效的對策有,配置 IIS 拒絕帶有「../」的 URL(防止路徑遍歷)、使用限制性訪問控制列表 (ACL) 鎖定系統命令和實用工具、安裝新的修補程序和更新程序。
特權提升如果攻擊者使用特權進程帳戶運行代碼,則出現特權提升攻擊。
漏洞
導致 Web 伺服器易受特權提升攻擊的常見漏洞包括:
? | 過度授權進程帳戶 |
? | 過度授權服務帳戶 |
對策
有效的對策有,使用特權最少的帳戶運行進程、使用特權最少的服務和用戶帳戶運行進程。
病毒、蠕蟲和特洛伊木馬惡意代碼有幾種變體,具體包括:
? | 病毒。即執行惡意操作並導致操作系統或應用程序中斷的程序。 |
? | 蠕蟲。可自我複製並自我維持的程序。 |
? | 特洛伊木馬。表面上有用但實際帶來破壞的程序。 |
在很多情況下,惡意代碼直至耗盡了系統資源,並因此減慢或終止了其他程序的運行後才被發現。例如,「紅色代碼」就是危害 IIS 的臭名昭著的蠕蟲之一,它依賴 ISAPI 篩選器中的緩衝區溢出漏洞。
漏洞
導致易受病毒、蠕蟲和特洛伊木馬攻擊的常見漏洞包括:
? | 未修補的伺服器 |
? | 運行不必要的服務 |
? | 使用不必要的 ISAPI 篩選器和擴展 |
對策
有效的對策有,提示應用程序安裝最新的軟體修補程序、禁用無用的功能(如無用的 ISAPI 篩選器和擴展)、使用特權最少的帳戶運行進程來減小危害發生時的破壞範圍。
返回頁首確保 Web 伺服器安全的方法
為了確保 Web 伺服器的安全,必須應用很多配置設置來減少伺服器受攻擊的漏洞。但究竟在何處開始、何時才算完成呢?最佳的方法是,對必須採取的預防措施和必要配置的設置進行分類。通過分類,您可以從上到下系統安排保護過程,或選擇特定的類別完成特定的步驟。
配置類別本模塊的安全方法都歸入圖 16.2 所示的類別。
圖 16.2Web 伺服器配置類別
分類基本原理如下:
? | 修補程序和更新程序很多安全威脅是由廣泛發布和眾所周知的漏洞引起的。在很多情況下,如果發現了新漏洞,成功利用該漏洞發起攻擊的探測代碼將在幾小時內公布在 Internet 中。如果不修補並更新伺服器,便為攻擊者和惡意代碼提供了機會。因此,修補並更新伺服器軟體是保護 Web 伺服器的第一項重要步驟。 |
? | 服務對於有能力探測服務的特權和功能,並進而訪問本地 Web 伺服器或其他下游伺服器的攻擊者來說,服務是最主要的漏洞點。如果某服務不是 Web 伺服器必需的,請不要在伺服器中運行它。如果服務是必需的,請確保服務安全並進行維護。考慮監視所有的服務來確保可用性。如果服務軟體不安全,您又需要該服務,請嘗試尋找一種可替代它的安全服務。 |
? | 協議避免使用本身不安全的協議。如果無法避免使用這些協議,請採取相應的措施提供安全的身份驗證和通信。例如使用 IPSec 策略。不安全的明文協議有 Telnet、郵局協議 (POP3)、簡單郵件傳輸協議 (SMTP) 和文件傳輸協議 (FTP)。 |
? | 帳戶帳戶可向計算機授予經身份驗證的訪問許可權,因此必須審核。用戶帳戶的用途是什麼?有怎樣的訪問許可權?是否屬於可作為攻擊目標的常見帳戶?是否屬於可泄露(並因此一定要包含在內)的服務帳戶?使用最少的特權來配置帳戶,避免特權提升的可能性。刪除所有不需要的帳戶。使用強密碼策略緩解強力攻擊和字典攻擊,然後對失敗的登錄進行審核和報警。 |
? | 文件和目錄使用有限的 NTFS 許可權(僅允許訪問必需的 Windows 服務和用戶帳戶)確保所有文件和目錄安全。使用 Windows 審核可檢測出何時出現可疑的或未經授權的操作。 |
? | 共享刪除所有不必要的文件共享,包括默認管理共享(如果不需要它們)。使用有限的 NTFS 許可權確保剩餘共享的安全。儘管共享不直接展示在 Internet 中,但如果伺服器存在漏洞,提供有限和安全共享的防禦策略可減輕風險。 |
? | 埠在伺服器中運行的服務可偵聽特定埠,從而響應傳入請求。定期審核伺服器的埠可確保不安全或不必要的服務無法在您的 Web 伺服器中激活。如果檢測出活動的埠,但它不是管理員打開的,表明一定存在未經授權的訪問和安全漏洞。 |
? | 註冊表很多與安全有關的設置都保存在註冊表中,因此必須保護註冊表。您可應用有限的 Windows ACL 並阻止遠程註冊表管理來做到這一點。 |
? | 審核和日誌記錄審核是一種重要的工具,主要作用是確定入侵者、進行中的攻擊和已發生攻擊的證據。請結合 Windows 和 IIS 審核功能來配置 Web 伺服器的審核。事件日誌和系統日誌可幫助您解決安全問題。 |
? | 站點和虛擬目錄站點和虛擬目錄直接展示在 Internet 中。儘管安全的防火牆配置和防禦性 ISAPI 篩選器(如 IISLockdown 工具附帶的 URLScan)可阻止對受限配置文件或程序可執行文件的請求,但還是建議您使用深層的防禦策略。重新將站點和虛擬目錄分配到非系統分區,然後使用 IIS Web 許可權進一步限制訪問。 |
? | 腳本映射如果刪除可選文件擴展名的所有不必要 IIS 腳本映射,可防止攻擊者對處理這些文件類型的 ISAPI 擴展中的任何 Bug 加以利用。不使用的擴展名映射常常被忽略,而它們正代表了主要的安全漏洞。 |
? | 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 站點。有些組件是 Web 應用程序所不用的,如果不在伺服器中刪除,可能導致伺服器易受攻擊。表 16.1 列出了在 Windows 2000 Server 系統中完整安裝 IIS(選定所有組件)後創建的服務、帳戶和文件夾。
表 16.1:IIS 安裝默認值
項目 | 詳細信息 | 默認值 |
服務 |
IIS Admin Service(管理 Web 和 FTP 服務)World Wide Web Publishing ServiceFTP Publishing ServiceSimple Mail Transport Protocol (SMTP)Network News Transport Protocol (NNTP) |
安裝安裝安裝安裝安裝 |
帳戶和組 |
IUSR_MACHINE(匿名 Internet 用戶)IWAM_MACHINE(進程外 ASP Web 應用程序;不用在 ASP.NET 應用程序中,除了在域控制器中運行的 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 藉助應用程序池提供進程級隔離。
表 16.2 顯示了 .NET Framework 版本 1.1 默認安裝的服務、帳戶和文件夾。
表 16.2:.NET Framework 安裝默認值
項目 | 詳細信息 | 默認值 |
服務 |
ASP.NET State Service:為 ASP.NET 提供進程外會話狀態支持。 |
手動啟動 |
帳戶和組 |
ASPNET:運行 ASP.NET 工作進程 (Aspnet_wp.exe) 和會話狀態服務 (Aspnet_state.exe) 的帳戶。 |
添至 Users 組 |
文件夾 |
%windir%Microsoft.NETFramework{版本} 1033 ASP.NETClientFilesCONFIG MUI Temporary ASP.NET Files |
|
ISAPI 擴展 |
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、RESOURCES |
WINNTMicrosoft.NETFramework{版本} Aspnet_isapi.dll |
返回頁首安裝建議
在默認情況下,Windows 2000 Server 安裝程序將安裝 IIS。但建議不要將 IIS 作為操作系統安裝的一部分來安裝,最好是日後更新並修補了基本操作系統之後再安裝。安裝了 IIS 之後,必須重新應用 IIS 修補程序並強化 IIS 配置,確保 IIS 接受完整的保護。只有這樣,將伺服器連接到網路中才安全。
IIS 安裝建議如果要安裝並配置新的 Web 伺服器,請執行如下操作步驟概述。
? | 構建新的 Web 伺服器
|
.NET Framework 安裝建議
不要在生產伺服器中安裝 .NET Framework 軟體開發工具包 (SDK)。SDK 包含了很多伺服器不需要的實用工具。一旦攻擊者獲取了伺服器的訪問許可權,便可利用其中的部分工具幫助發起其他攻擊。
正確的做法是,安裝可重新分發的軟體包。要獲取該軟體包,可訪問 Microsoft.com 的 .NET Framework 站點,其網址為 http://www.microsoft.com/china/net/,單擊「Downloads」鏈接。
在基本安裝中包括 Service Pack如果要構建多個伺服器,可將 Service Pack 直接併入您的 Windows 安裝。Service Pack 包括一個名為 Update.exe 的程序,作用是將 Service Pack 與您的 Windows 安裝文件組合在一起。
? | 要將 Service Pack 與 Windows 安裝組合在一起,請執行下列操作:
|
有關詳細信息,請參閱 MSDN 文章「Customizing Unattended Win2K Installations」,網址是 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 |
帳戶 |
推薦閱讀:
※膝蓋,你別怕,這八種食物可以保護你!
※「更愛咖啡」系列│科學新證明,咖啡能保護心臟。
※保護弱者是社會的倒退?
※史上最全防醉 解酒法,喝酒的同時保護好自己的身體才是王道!