保护 Web 服务器的安全

来源:百度文库 编辑:神马文学网 时间:2024/05/15 10:22:20
发布日期: 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.config
Machine.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%\system32\inetsrv(IIS 程序文件)
%windir%\system32\inetsrv\iisadmin (文件用于远程IIS 管理)
%windir%\help\iishelp(IIS 帮助文件)
%systemdrive%\inetpub(Web、FTP,和 SMTP 根文件夹)
Web 站点
默认的 Web 站点 — 端口 80:%SystemDrive%\inetpub\wwwroot
管理 Web 站点 — 端口 3693:%SystemDrive%\System32\inetsrv\iisadmin
允许匿名访问
仅本地机器和管理员访问
.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.NET\Framework\{version}
\1033
\ASP.NETClientFiles
\CONFIG
\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
\WINNT\Microsoft.NET\Framework\{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 -x
3.
将服务包与 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 步:IISLockdown
IISLockdown 工具有助于自动化一些安全步骤。IISLockdown 极大地减少了 Windows 2000 Web 服务器中的漏洞。它允许您选择一个特定类型的服务器角色,然后使用自定义模板提高该特殊服务器的安全性。模板将禁用或者保护各种功能。除此之外,IISLockdown 还将安装 URLScan ISAPI 筛选器。URLScan 允许 Web 站点管理员根据管理员控制的一组规则集限制服务器能够处理的 HTTP 请求种类。通过阻塞特定的 HTTP 请求,URLScan 筛选器能够防止潜在有害的请求到达服务器,导致损坏。
在此步骤中,应该:

安装和运行 IISLockdown。

安装和配置 URLScan。
安装和运行 IISLockdown
IISLockdown 可以从 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%\system32\inetsrv\oblt-rep.log。其中包含高层次信息。

%windir%\system32\inetsrv\oblt-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%\system32\inetsrv\oblt-log.log 来审查特定的权限。
404.dll
IISLockdown 安装了 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 向导”。
安装和配置 URLScan
URLScan 是在您运行 IISLockdown 时安装的,虽然可以分别下载和安装。
不运行 IISLockdown 而安装 URLScan
1.
从http://download.microsoft.com/download/iis50/Utility/2.1/NT45XP/EN-US/iislockd.exe 下载 IISlockd.exe。
2.
运行以下命令提取 URLScan 设置:
iislockd.exe /q /c
URLScan 将阻塞包含不安全字符的请求(例如,用来利用漏洞的字符,例如用于目录遍历的“..”)。URLScan 将在 %windir%\system32\inetsrv\urlscan 目录中记录包含这些字符的请求。
使用 .ini 文件 %windir%\system32\inetsrv\urlscan\urlscan.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 。
禁用或保护 WebDAV
IIS 支持 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 注册表项,以阻塞空会话。
禁用 NetBIOS
NetBIOS 使用以下端口:

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 直接宿主侦听程序。
禁用 SMB
SMB 使用以下端口:

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 限制空会话:
HKLM\System\CurrentControlSet\Control\LSA\RestrictAnonymous=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 和 \inetpub\scripts。
首先将管理员帐号的完全控制权限授予根目录 (\),然后从以下目录删除 Everyone 组的访问权限。

根 (\)

系统目录 (\WINNT\system32)

框架工具目录 (\WINNT\Microsoft.NET\Framework\{version})

Web 站点根目录和所有内容目录(默认的is \inetpub\*)
限制对 IIS 匿名帐号的访问
匿名帐号是众所周知的。攻击者会以此帐号为目标,执行恶意的操作。要保护匿名帐号,应该:

拒绝对 Web 内容目录的访问。
确保这个帐号不可能写入内容目录,例如,丑化 Web 站点。

限制对系统工具的访问。
尤其是要限制对位于 \WINNT\System32 的命令行工具的访问。

将权限赋予组而不是单独的帐号。
将用户赋予组,然后对组应用权限,而不是单独的帐号,这是一个好的做法。对于匿名帐号,创建一个组,在其中添加匿名账号,然后显式地拒绝组对密钥目录和文件的访问。将权限赋予一个组,使你能够更容易地更改匿名帐号或者创建更多匿名帐号,因为不需要重新创建权限。
注 IISLockdown 拒绝匿名帐号访问内容目录,方法是对 Web 匿名用户和 Web 应用程序组应用一个拒绝写访问控制项 (ACE)。它还通过命令行工具添加了一个拒绝执行 ACL。

对不同的应用程序使用不同的帐号。
如果您的 Web 服务器宿主多个应用程序,应该对每个应用程序使用不同的匿名帐号。在匿名 Web 用户组(例如 IISLockdown 创建的 Web Anonymous Users 组)中添加帐号,然后使用这个组配置 NTFS 权限。
有关使用多个匿名帐号和宿主多个应用程序的更多信息,请参阅“宿主多个 ASP.NET 应用程序”单元。
保护或者删除工具、实用工具和 SDK
SDK 和资源包不应该安装在生产 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 组的成员。管理员可以进行完全控制,而备份操作员具有只读访问权限。
以下注册表位置中的相关联权限确定了谁能够远程访问注册表。
HKLM\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg
要查看该注册表项的权限,运行 Regedt32.exe,导航到该项,从 Security 菜单中选择 Permissions。
注 有些服务需要远程访问注册表。请参考 Microsoft 知识库文章 153183,“如何限制从远程计算机对注册表的访问”,查看是否您的情况要求受限的远程注册表访问。
保护 SAM(仅对独立服务器)
独立服务器在本地安全帐号管理器 (SAM) 数据库中存储帐号名和单向(不可逆的)密码哈希 (LMHash)。SAM 是注册表的一部分。通常,只有管理员组的成员能够访问帐号信息。
虽然密码实际上并不存储在 SAM 中,而且密码哈希也是不可逆的,但是如果攻击者获取了 SAM 数据库的副本,他就能够使用蛮力密码技术获取有效的用户名和密码。
通过在注册表中创建 NoLMHash 项(不是值)限制 SAM 中的 LMHash 存储,如下所示:
HKLM\System\CurrentControlSet\Control\LSA\NoLMHash
有关更多信息,请参阅Microsoft 知识库文章 299656,“如何防止 Windows 在 Active Directory 和本地 SAM 数据库中存储密码的 LAN 管理器哈希”。
返回页首
第 10 步:审核和日志
审核并不能防止系统攻击,虽然它对于标识入侵者和进行中的攻击能够提供非常重要的帮助,而且能够辅助您诊断攻击足迹。在您的 Web 服务器上启用最小级的审核,并使用 NTFS 权限保护日志文件,使攻击者无法通过以任何方式删除或者更新日志文件来掩藏其踪迹。使用 IIS W3C 扩展日志文件格式审核。
在此步骤中,应该:

日志记录所有失败的登录企图。

日志记录所有文件系统中的失败操作。

重新定位和保护 IIS 日志文件。

存档日志文件供离线分析。

审核对 Metabase.bin 文件的访问。
日志记录所有失败的登录企图
必须日志记录失败的登录企图以能够检测和跟踪可疑的行为。
要审核失败的登录企图
1.
从管理工具程序组启动本地安全策略工具。
2.
展开 Local Policies,然后选择 Audit Policy
3.
双击 Audit account logon events。
4.
单击Failure,然后单击 OK。
登录失败记录为 Windows 安全事件日志中的事件。以下事件 ID 是可疑的:

531。这意味着企图使用禁用帐号登录。

529。这意味着使用未知的用户帐号或者使用有效的用户帐号但是使用无效的密码企图登录。如果这些审核事件出人意料地大量增加,则可能表示有人企图猜测密码。
日志记录文件系统中的所有失败操作
在文件系统上使用 NTFS 审核以检测潜在恶意的企图。这是一个分为两个步骤的过程。
启用日志
1.
从 Administrative Tools 程序组启动 Local Security Policy 工具。
2.
展开 Local Policies,然后选择 Audit Policy
3.
双击 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 组对位于 \WINNT\System32\inetsrv\ 的 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 站点移动到非系统卷
不要使用默认的 \inetpub\wwwroot 目录。例如,如果您的系统安装在 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 files\common files\system\Msadc。
删除 RDS
如果您的应用程序不使用 RDS,那就删除它。
要删除 RDS 支持
1.
从 IIS 删除 /MSADC 虚拟目录映射。
2.
删除以下位置的 RDS 文件和子目录:
\Program Files\Common Files\System\Msadc
1.
删除以下注册表项:
HKLM\System\CurrentControlSet\Services\W3SVC\Parameters\ADCLaunch
注 IISLockdown 提供了一个选项,可以删除 MSADC 虚拟目录。请注意,IISLockdown 只删除虚拟目录,而不是文件或者注册表项。
保护 RDS
如果您的应用程序需要使用 RDS,那就对其进行保护。
要保护 RDS
1.
删除以下位置的示例:
\Progam Files\Common Files\System\Msadc\Samples
1.
删除以下注册表项: HKLM\System\CurrentControlSet\Services\W3SVC\Parameters
\ADCLaunch\VbBusObj.VbBusObjCls
2.
在 IIS 中禁用 MSADC 虚拟目录的匿名访问。
3.
在以下位置创建一个 HandlerRequired 注册表项:
HKLM\Software\Microsoft\DataFactory\HandlerInfo\
4.
创建一个新的 DWORD 值,将其设置为 1(1 表示安全模式,而 0 表示不安全的模式)。
注 您可以使用注册表脚本文件 Handsafe.reg 更改注册表项。 脚本文件位于 msadc 目录:
\Program Files\Common Files\System\msadc
有关保护 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 中的 映射来决定处理文件扩展名的实际 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.dll
1.
启动 IIS。
2.
在左边的窗口中右键单击服务器名称,然后单击 Properties。
3.
确保在 MasterProperties 下拉列表中选择了 WWWService,然后单击附近的 Edit 按钮。
4.
单击 HomeDirectory 选项卡。
5.
单击 Configuration。所显示的选项卡页如图 4 中所示。

图 4. 映射应用程序扩展名
6.
从列表中选择一个扩展名,然后单击 Edit。
7.
单击 Browse 并导航到 \WINNT\system32\inetsrv\404.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 的会话状态,而且它们不会将 元素的 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 权限限制对元数据库的访问
在 \WINNT\system32\inetsrv 目录中的 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.NET\Framework\{version}\CONFIG
注 您可以使用任何文本编辑器或者 XML 编辑器(例如记事本)编辑 XML 配置文件。XML 标签是区分大小写的,因此一定要使用正确的大小写。
在此步骤中,应该:

将受保护的资源映射到 HttpForbiddenHandler。

验证跟踪是否已经禁用。

验证调试编译是否禁用。

验证 ASP.NET 错误未返回到客户端。

验证会话状态设置。
将受保护的资源映射到 HttpForbiddenHandler
HTTP 处理程序位于 Machine.config 中,在 元素之下。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,如下例所示:

在此情况下,.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 禁用请求,使用 之下的以下元素:

注 这不能通过使用远程处理基础结构来防止 Web 服务器上的 Web 应用程序连接下游对象。但是,它能够防止客户端连接 Web 服务器上的对象。
验证跟踪是否禁用
通过使用 元素来配置 Machine.config 中的跟踪。虽然在开发和测试服务器上跟踪很有用,但是不应该在生产服务器上启用跟踪,因为系统级跟踪信息能够极大地辅助攻击者分析应用程序,探查弱点。
在生产服务器上使用以下配置:

在生产服务器上设置 enabled="false"。如果您确实需要跟踪活动应用程序所具有的问题,在测试环境中模拟问题,或者如果必要,启用跟踪并将 localOnly="true" 设置为防止跟踪细节返回到远程客户端。
验证调试编译是否禁用
您可以通过使用 元素,控制编译器是否生成包含调试符号的调试版本。要关闭调试编译,请设置 debug="false",如下所示:

验证 ASP.NET 错误未返回到客户端
在应用程序出现异常条件的情况下,您可以使用 元素配置应该返回到客户端的自定义、一般性错误消息。
确保模式属性设置为 "RemoteOnly",如下例所示:

在安装 ASP.NET 应用程序之后,您可以配置设置以指向自定义错误页,如下例所示:

验证会话状态设置
如果您不使用会话状态,则验证会话状态是否在 Machine.config 中禁用,如下例所示:

此外,还要确保 ASP.NET 状态服务被禁用。默认的会话状态模式是 "InProc",且 ASP.NET 状态服务设置为手工。有关在安装了要求会话状态的 ASP.NET 应用程序时保护会话状态的更多信息,请参阅“保护 ASP.NET 应用程序的安全”单元中的“会话状态”。
返回页首
第 17 步:代码访问安全
机器级代码访问安全策略是由位于以下目录中 Security.config 文件中的设置来确定的:%windir%\Microsoft.NET\Framework\{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%\system32\LogFiles 重新定位,并用 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.config
HttpForbiddenHandler
受保护的资源映射到 System.Web.HttpForbiddenHandler
远程处理
.NET Remoting 禁用。

跟踪
跟踪信息和详细的错误信息不返回到客户端:

编译
禁用调试编译:

customErrors
错误详情不返回到客户端:

用一般性的错误页将错误写入事件日志。
sessionState
如果不需要则禁用会话状态:

代码访问安全
代码访问安全
对机器启用代码访问安全。
caspol -s On
LocalIntranet_
Zone
本地 intranet 区域没有权限:
PermissionSet=Nothing
Internet_
Zone
Internet 区域没有权限:
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
公告最新的安全漏洞,并标识修补。
NTBugtraq
http://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 服务器”。
转到原英文页面