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.1
Web 服务器主要威胁和常见漏洞
配置处理或主机枚举是一种收集 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 服务器的安全,必须应用很多配置设置来减少服务器受攻击的漏洞。但究竟在何处开始、何时才算完成呢?最佳的方法是,对必须采取的预防措施和必要配置的设置进行分类。通过分类,您可以从上到下系统安排保护过程,或选择特定的类别完成特定的步骤。
本模块的安全方法都归入图 16.2 所示的类别。
图 16.2
Web 服务器配置类别
分类基本原理如下:
• | 修补程序和更新程序 |
• | 服务 |
• | 协议 |
• | 帐户 |
• | 文件和目录 |
• | 共享 |
• | 端口 |
• | 注册表 |
• | 审核和日志记录 |
• | 站点和虚拟目录 |
• | 脚本映射 |
• | ISAPI 筛选器 |
• | IIS 元数据库 |
• | Machine.config |
• | 代码访问安全性 |
在确保 Web 服务器安全以前,必须先知道安装 IIS 和 .NET Framework 后在 Windows 2000 服务器中出现的组件。本节说明了安装哪些组件。
IIS 安装了很多服务、帐户、文件夹和 Web 站点。有些组件是 Web 应用程序所不用的,如果不在服务器中删除,可能导致服务器易受攻击。表 16.1 列出了在 Windows 2000 Server 系统中完整安装 IIS(选定所有组件)后创建的服务、帐户和文件夹。
表 16.1:IIS 安装默认值
项目 | 详细信息 | 默认值 |
服务 | IIS Admin Service(管理 Web 和 FTP 服务) | 安装 |
帐户和组 | IUSR_MACHINE(匿名 Internet 用户) | 添至 Guest 组 |
文件夹 | %windir%\system32\inetsrv(IIS 程序文件) |
|
Web 站点 | 默认 Web 站点 – 端口 80:%SystemDrive%\inetpub\wwwroot | 允许匿名访问 |
如果在驻留 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.NET\Framework\{版本} |
|
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 | \WINNT\Microsoft.NET\Framework\{版本} Aspnet_isapi.dll |
在默认情况下,Windows 2000 Server 安装程序将安装 IIS。但建议不要将 IIS 作为操作系统安装的一部分来安装,最好是日后更新并修补了基本操作系统之后再安装。安装了 IIS 之后,必须重新应用 IIS 修补程序并强化 IIS 配置,确保 IIS 接受完整的保护。只有这样,将服务器连接到网络中才安全。
如果要安装并配置新的 Web 服务器,请执行如下操作步骤概述。
• | 构建新的 Web 服务器
|
不要在生产服务器中安装 .NET Framework 软件开发工具包 (SDK)。SDK 包含了很多服务器不需要的实用工具。一旦攻击者获取了服务器的访问权限,便可利用其中的部分工具帮助发起其他攻击。
正确的做法是,安装可重新分发的软件包。要获取该软件包,可访问 Microsoft.com 的 .NET Framework 站点,其网址为 http://www.microsoft.com/china/net/,单击“Downloads”链接。
如果要构建多个服务器,可将 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 服务器安全的方法一节中介绍的配置类别。每个高级步骤都包含了一项或多项确保特定区域或功能安全的操作。
步骤 1 | 步骤 10 | ||
步骤 2 | 步骤 11 | ||
步骤 3 | 步骤 12 | ||
步骤 4 | 步骤 13 | ||
步骤 5 |
联系客服