保护 Web 服务器

保护 Web 服务器

更新日期: 2004年04月12日
本页内容
本模块内容本模块内容
目标目标
适用范围适用范围
如何使用本模块如何使用本模块
概述概述
威胁与对策威胁与对策
确保 Web 服务器安全的方法确保 Web 服务器安全的方法
IIS 和 .NET Framework 安装注意事项IIS 和 .NET Framework 安装注意事项
安装建议安装建议
确保 Web 服务器安全的步骤确保 Web 服务器安全的步骤
步骤 1:修补程序和更新程序步骤 1:修补程序和更新程序
步骤 2:IISLockdown步骤 2:IISLockdown
步骤 3:服务步骤 3:服务
步骤 4:协议步骤 4:协议
步骤 5:帐户步骤 5:帐户
步骤 6:文件和目录步骤 6:文件和目录
步骤 7:共享步骤 7:共享
步骤 8:端口步骤 8:端口
步骤 9:注册表步骤 9:注册表
步骤 10:审核和日志记录步骤 10:审核和日志记录
步骤 11:站点和虚拟目录步骤 11:站点和虚拟目录
步骤 12:脚本映射步骤 12:脚本映射
步骤 13:ISAPI 筛选器步骤 13:ISAPI 筛选器
步骤 14:IIS 元数据库步骤 14:IIS 元数据库
步骤 15:服务器证书步骤 15:服务器证书
步骤 16:Machine.Config步骤 16:Machine.Config
步骤 17:代码访问安全性步骤 17:代码访问安全性
安全 Web 服务器快照安全 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 服务器提供了一份可打印的作业帮助,可将它用作快速参考。使用基于任务的检查表可快速评估必需的步骤,然后帮助您逐步完成各个步骤。

使用“如何”部分。本指南“如何”部分包括了下列指导性文章:

如何:使用 URLScan

如何:使用 Microsoft 基准安全分析器

如何:使用 IISLockdown

概述

究竟怎样的 Web 服务器才算安全?确保 Web 服务器安全的挑战之一就是明确您的目标。只有明白了何谓安全的 Web 服务器,您就可以了解如何为此应用所需的配置设置。本模块提供了一种系统且可重复的方法,您可以使用它成功配置安全的 Web 服务器。

本模块首先回顾了影响 Web 服务器的最常见威胁。然后,使用上述观点创建相应的方法。最后,模块将这种方法付诸实施,并逐步说明如何提高 Web 服务器的安全性。尽管基本方法可跨不同技术复用,但本模块的重点是如何保证运行 Microsoft Windows 2000 操作系统并驻留 Microsoft .NET Framework 的 Web 服务器的安全。

威胁与对策

由于攻击者可远程攻击,Web 服务器常常是攻击对象。如果了解 Web 服务器的威胁并努力制定相应的对策,您可以预见很多攻击,进而阻止日渐增加的攻击者。

Web 服务器的主要威胁是:

配置处理

拒绝服务

未经授权的访问

随意代码执行

特权提升

病毒、蠕虫和特洛伊木马

图 16.1 汇总了目前流行的攻击和常见漏洞。

Web 服务器主要威胁和常见漏洞

图 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 服务器安全的方法

为了确保 Web 服务器的安全,必须应用很多配置设置来减少服务器受攻击的漏洞。但究竟在何处开始、何时才算完成呢?最佳的方法是,对必须采取的预防措施和必要配置的设置进行分类。通过分类,您可以从上到下系统安排保护过程,或选择特定的类别完成特定的步骤。

配置类别

本模块的安全方法都归入图 16.2 所示的类别。

Web 服务器配置类别

图 16.2
Web 服务器配置类别

分类基本原理如下:

修补程序和更新程序
很多安全威胁是由广泛发布和众所周知的漏洞引起的。在很多情况下,如果发现了新漏洞,成功利用该漏洞发起攻击的探测代码将在几小时内公布在 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.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 站点。有些组件是 Web 应用程序所不用的,如果不在服务器中删除,可能导致服务器易受攻击。表 16.1 列出了在 Windows 2000 Server 系统中完整安装 IIS(选定所有组件)后创建的服务、帐户和文件夹。

表 16.1:IIS 安装默认值

项目详细信息默认值

服务

IIS Admin Service(管理 Web 和 FTP 服务)
World Wide Web Publishing Service
FTP Publishing Service
Simple Mail Transport Protocol (SMTP)
Network News Transport Protocol (NNTP)

安装

安装
安装
安装
安装

帐户和组

IUSR_MACHINE(匿名 Internet 用户)

IWAM_MACHINE(进程外 ASP Web 应用程序;不用在 ASP.NET 应用程序中,除了在域控制器中运行的 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 借助应用程序池提供进程级隔离。

表 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/{版本}
/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/{版本} Aspnet_isapi.dll

安装建议

在默认情况下,Windows 2000 Server 安装程序将安装 IIS。但建议不要将 IIS 作为操作系统安装的一部分来安装,最好是日后更新并修补了基本操作系统之后再安装。安装了 IIS 之后,必须重新应用 IIS 修补程序并强化 IIS 配置,确保 IIS 接受完整的保护。只有这样,将服务器连接到网络中才安全。

IIS 安装建议

如果要安装并配置新的 Web 服务器,请执行如下操作步骤概述。

构建新的 Web 服务器

1.

安装 Windows 2000 Server,但 IIS 不作为操作系统安装的一部分。

2.

将最新的 Service Pack 和修补程序应用于操作系统。(如果要配置多个服务器,请参阅本节后面的“在基本安装中包括 Service Pack”。)

3.

使用控制面板中的“添加/删除程序”单独安装 IIS。

如果不需要以下服务,安装 IIS 时不要安装它们:

文件传输协议 (FTP) 服务器

Microsoft FrontPage® 2000 Server Extensions

Internet 服务管理器 (HTML)

NNTP 服务

SMTP 服务

可视 InterDev RAD 远程部署支持

注意:通过在完全修补和更新的操作系统中安装 IIS,可阻止攻击利用已修补的现有漏洞(如 NIMDA)。

.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 安装组合在一起,请执行下列操作:

1.

下载最新的 Service Pack。

2.

使用 -x 选项启动 Service Pack 安装程序,从 Service Pack 中提取 Update.exe,如下所示:

w3ksp3.exe -x

3.

将 Service Pack 与 Windows 安装源集成,方法是使用 -s 选项运行 update.exe(传递 Windows 安装的文件夹路径),如下所示:

update.exe -s c:/YourWindowsInstallationSource

有关详细信息,请参阅 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

帐户

步骤 14

IIS 元数据库

步骤 6

文件和目录

步骤 15

服务器证书

步骤 7

共享

步骤 16

Machine.config

步骤 8

端口

步骤 17

代码访问安全性

步骤 9

注册表

  

  

步骤 1:修补程序和更新程序

使用最新的 Service Pack 和修补程序更新服务器。必须更新并修补所有的 Web 服务器组件,包括 Windows 2000(以及 IIS)、.NET Framework 和 Microsoft 数据访问组件 (MDAC)。

在本步骤中,您要执行以下操作:

检测并安装必需的修补程序和更新程序

更新 .NET Framework

检测并安装修补程序和更新程序

使用 Microsoft 基准安全分析器 (MBSA) 检测当前安装中可能遗漏的修补程序和更新程序。MBSA 将拿您的安装与一个 XML 文件中维护的当前可用更新列表进行比较。可以让 MBSA 在扫描服务器时下载该 XML 文件,或将 XML 文件手动下载到服务器中,或将它保存在网络服务器中。

检测并安装修补程序和更新程序

1.

下载并安装 MBSA。

为此,可访问 MBSA 主页 Microsoft 基准安全分析器

如果运行 MBSA 时无法访问 Internet,MBSA 将无法检索到包含 Microsoft 最新安全设置的 XML 文件。可使用另一台计算机来下载该 XML 文件。然后,将它复制到 MBSA 程序目录中。XML 文件可从 http://download.microsoft.com/download/xml/security/1.0/nt5/en-us/mssecure.cab(英文)下载。

2.

双击桌面图标(或从“程序”菜单中选择“MBSA”)来运行 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 版

1.

确定您的 Web 服务器要安装哪一版本的 .NET Framework Service Pack。
为此,请参阅 Microsoft 知识库文章 318785 INFO:Determining Whether Service Packs Are Installed on the .NET Framework(英文)。

2.

将已安装的 .NET Framework 版本与当前 Service Pack 比较。
为此,请使用 Microsoft 知识库文章 318836 INFO:How to Obtain the Latest .NET Framework Service Pack(英文)中列出的 .NET Framework 版本。

步骤 2:IISLockdown

IISLockdown 工具可帮助您自动执行某些安全步骤。该工具大大减少了 Windows 2000 Web 服务器的很多漏洞。您可选取特定类型的服务器角色,然后使用自定义模板提高该特定服务器的安全性。这些模板或禁用不同功能,或保护不同功能。此外,IISLockdown 还安装了 URLScan ISAPI 筛选器。URLScan 允许 Web 站点管理员基于一组自己可控制的规则来限制服务器可处理的 HTTP 请求的种类。通过阻止特定的 HTTP 请求,URLScan 筛选器可防止可能有害的请求抵达服务器,并因此带来损害。

在本步骤中,您要执行以下操作:

安装并运行 IISLockdown

安装并配置 URLScan

安装并运行 IISLockdown

IISLockdown 可通过 Microsoft 网站下载,网址是 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 工具提示时选择“Dynamic Web”(动态 Web)服务器模板。一旦选择“Dynamic 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 的“撤消更改”功能。

Web Anonymous Users 组和 Web Application 组

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”部分的“删除 URLScan”。

其他信息

有关 IISLockdown 工具的详细信息,请参阅以下文章:

有关运行 IISLockdown 的详细信息,请参阅本指南“如何”部分的如何:使用 IISLockdown.exe。

有关 IISLockdown 疑难解答的相关信息,请参阅 Microsoft 知识库文章 325864 How To:Install and Use the IIS Lockdown Wizard(英文)。(最常见的问题是:运行 IISLockdown 后收到意外的“404 File Not Found”(未找到 404 文件)错误消息。)

有关自动运行 IISLockdown 的相关信息,请参阅 Microsoft 知识库文章 310725 How To:Run the IIS Lockdown Wizard Unattended in IIS(英文)。

安装并配置 URLScan

URLScan 在您运行 IISLockdown 工具时安装,尽管您可以下载并单独安装它。

要在不运行 IISLockdown 的情况下安装 URLScan,请执行下列操作:

1.

下载 IISlockd.exe,网址是 http://download.microsoft.com/download/iis50/Utility/2.1/NT45XP/EN-US/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 文件的 MaxAllowedContentLengthMaxUrlMaxQueryString 参数中设置限制。有关详细信息,请参阅本指南“如何”部分的如何:使用 URLScan。

撤消 URLScan 的更改

删除 URLScan 没有相应的自动操作。如果使用 URLScan 时遇到问题,可将 URLScan 从 IIS 中删除,或将被拒绝的请求记录下来供分析。为此,请在 URLScan .ini 文件中使用选项 RejectResponseUrl=/~*

有关如何删除 ISAPI 筛选器的详细信息,请参阅本模块后面的步骤 13:ISAPI 筛选器

其他信息

有关 URLScan 工具的详细信息,请参阅以下文章:

有关运行 URLScan 的相关信息,请参阅本指南“如何”部分的如何:使用 URLScan。

有关 URLScan 配置和 URLScan.ini 文件设置的相关信息,请参阅 Microsoft 知识库文章 326444 How To:Configure the URLScan Tool(英文)。

步骤 3:服务

不对客户端进行身份验证的服务、使用不安全协议的服务、或特权太多的服务都将带来风险。如果不需要这些服务,请不要运行它们。通过禁用不必要的服务,您可快速轻松地减少攻击面。而且,您还可以减少维护方面(修补程序、服务帐户,等等)的开销。

如果要运行某个服务,请确保它是安全的并有一定的维护。为此,请使用特权最少的帐户运行该服务,然后通过应用修补程序使服务保持最新。

在本步骤中,您要执行以下操作:

禁用不必要的服务

禁用 FTP、SMTP 和 NNTP(除非需要)

禁用 ASP.NET State service(除非需要)

禁用不必要的服务

面对那些设法探测服务特权和功能来获取本地和远程系统资源访问权限的攻击者时,Windows 服务显得比较脆弱。作为一种防御措施,请禁用系统和应用程序不必要的 Windows 服务。您可使用“管理工具”程序组中的“服务”MMC 管理单元来禁用 Windows 服务。

注意:在禁用某项服务之前,请确保首先在测试环境或临时环境中测试其影响。

在大多数情况下,Web 服务器无需下列默认 Windows 服务:Alerter、Browser、Messenger、Netlogon(仅在域控制器中必需)、Simple TCP/IP Services 和 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 不支持 FTP 的 SSL。如果安全通信非常重要,您又将 FTP 用作传输协议(而非借助 SSL 的万维网分布式创作和版本控制 (WebDAV)),请考虑通过加密通道(如使用点对点隧道协议 (PPTP) 或 Internet 协议安全 (IPSec) 保护的虚拟专用网络 (VPN) )使用 FTP。

禁用 ASP.NET State Service(除非需要)

.NET Framework 安装了 ASP.NET State service (aspnet_state.exe) 来管理 ASP.NET Web 应用程序和 Web 服务的进程外用户会话状态。在默认情况下,该服务是手动启动的,并使用特权最少的本地 ASPNET 帐户运行。如果您的应用程序都不使用该服务保存状态,请禁用它。有关确保 ASP.NET 会话状态安全的详细信息,请参阅模块 19 确保 ASP.NET 应用程序和 Web 服务的安全中的“会话状态”。

步骤 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 How To:Create a Secure WebDAV Publishing Directory(英文)。

如果不需要 WebDAV,请参阅 Microsoft 知识库文章 241520 How To:Disable WebDAV for IIS 5.0(英文)。

强化 TCP/IP 堆栈

Windows 2000 支持对很多配置 TCP/IP 实现的参数进行粒度控制。其中一些默认设置可提供服务器可用性和其他特定功能。

有关如何强化 TCP/IP 堆栈的相关信息,请参阅本指南“如何”部分的如何:强化 TCP/IP 堆栈。

禁用 NetBIOS 和 SMB

禁用所有不必要的协议,包括 NetBIOS 和 SMB。Web 服务器面向 Internet 的网卡 (NIC) 不需要 NetBIOS 或 SMB。禁用这些协议可对抗主机枚举威胁。

注意:SMB 协议可通过空会话将大量计算机信息返回给未经身份验证的用户。您可以阻止空会话,方法是设置 RestrictAnonymous 注册表项,参见步骤 9:注册表

禁用 NetBIOS

NetBIOS 使用以下端口:

TCP 和用户数据报协议 (UDP) 端口 137(NetBIOS 名称服务)

TCP 和 UDP 端口 138(NetBIOS 数据报服务)

TCP 和 UDP 端口 139(NetBIOS 会话服务)

要禁止 SMB 通信,仅禁用 NetBIOS 是不够的。原因是:如果标准 NetBIOS 端口不可用,SMB 将使用 TCP 端口 445。(此端口称为“SMB 直接主机”。)因此,您必须分别禁用 NetBIOS 和 SMB。

禁用 TCP/IP 的 NetBIOS

注意:这一过程将禁用 Nbt.sys 驱动程序,并要求重新启动系统。

1.

右键单击桌面的“我的电脑”,然后单击“管理”。

2.

展开“系统工具”,选择“设备管理器”。

3.

右键单击“设备管理器”,指向“查看”,然后单击“显示隐藏的设备”。

4.

展开“非即插即用驱动程序”。

5.

右键单击“NetBios over Tcpip”,然后单击“禁用”。

这将在 TCP 445 和 UDP 445 中禁用 NetBIOS 直接主机侦听程序。

禁用 SMB

SMB 使用下列端口:

TCP 端口 139

TCP 端口 445

要禁用 SMB,请使用“本地连接”属性中的“TCP/IP 属性”对话框,解除 SMB 与面向 Internet 的端口的绑定。

要解除 SMB 与面向 Internet 的端口的绑定,请执行下列操作:

1.

单击“开始”菜单,指向“设置”,然后单击“网络和拨号连接”。

2.

右键单击面向 Internet 的连接,然后单击“属性”。

3.

清除“Microsoft 网络客户端”框。

4.

清除“Microsoft 网络的文件和打印机共享”框。

注意:“高级 TCP/IP 设置”对话框的“WINS”选项卡包含一个“禁用 TCP/IP 上的 NetBIOS”单选按钮。选择该选项可禁用使用 TCP 端口 139 的 NetBIOS 会话服务,它不完全禁用 SMB。为此,请使用以上过程。

步骤 5:帐户

必须删除不用的帐户,因为攻击者可能发现这些帐户并加以利用。必须使用强密码。弱密码增加了强力攻击或字典攻击的成功概率。使用最少的特权。攻击者可利用特权较多的帐户访问未经授权的资源。

在本步骤中,您要执行以下操作:

删除或禁用不使用的帐户

禁用 Guest 帐户

重命名 Administrator 帐户

禁用 IUSR 帐户

创建自定义的匿名 Web 帐户

强制强密码策略

限制远程登录

禁用空会话(匿名登录)

删除或禁用不使用的帐户

攻击者可以利用不用的帐户及其权限获取访问服务器的机会。审核服务器中的本地帐户,然后禁用那些不用的帐户。如果禁用帐户不产生任何问题,请删除该帐户。(已删除的帐户是无法恢复的。)在生产服务器中禁用帐户之前,请先在测试服务器中禁用这些帐户。确保禁用帐户不会在应用程序操作方面产生负面影响。

注意:Administrator 帐户和 Guest 帐户无法删除。

禁用 Guest 帐户

Guest 帐户在用户匿名连接计算机时使用。为了限制计算机的匿名连接,请禁用该帐户。在默认情况下,Windows 2000 系统禁用 Guest 帐户。要检查是否启用,请在“计算机管理”工具中查看“用户”文件夹。其中的 Guest 帐户应带有叉形图标。如果未禁用,请显示“属性”对话框,然后选中“帐户已停用”。

重命名 Administrator 帐户

默认的本地 Administrator 帐户由于享有很高的计算机控制权限,因此常常是攻击者利用的目标。为了增强安全性,请重命名默认的 Administrator 帐户并设置强密码。

如果打算执行本地管理,请将该帐户配置为拒绝网络登录权限,并要求管理员以交互方式登录。这将防止用户(无意或有意)使用 Administrator 帐户从远程位置登录服务器。如果本地管理策略不够灵活,请实施安全的远程管理解决方案。有关详细信息,请参阅本模块后面的远程管理

禁用 IUSR 帐户

禁用默认的匿名 Internet 用户帐户 IUSR_MACHINE。该帐户在 IIS 安装过程中创建。安装 IIS 时服务器的 NetBIOS 名称是 MACHINE。

创建自定义的匿名 Web 帐户

如果应用程序支持匿名访问(例如,使用表单身份验证之类的自定义身份验证机制时),请创建自定义的、特权最少的匿名帐户。如果要运行 IISLockdown,请将自定义用户添至已创建的 Web Anonymous Users 组。IISLockdown 拒绝访问系统实用工具,并拒绝写入 Web Anonymous Users 组的 Web 内容目录。

如果要在 Web 服务器中驻留多个 Web 应用程序,您可能希望使用多个匿名帐户(每个应用程序使用一个)来单独保护和审核每个应用程序的操作。

有关驻留多个 Web 应用程序的详细信息,请参阅模块 20 驻留多个 Web 应用程序。

强制强密码策略

为了对抗攻击者施加给应用程序的密码猜测和强力字典攻击,请应用强密码策略。要强制使用强密码策略,请执行下列操作:

设置密码长度和复杂性。使强密码减少密码猜测或字典攻击的威胁。强密码由八个或更多字符组成,必须既有字母也有数字。

设置密码过期时间。定期过期的密码可减少旧密码被未经授权的访问利用的可能性。通常,过期频率遵循公司的安全策略。

表 16.3 列出了默认的和建议的密码策略设置。

表 16.3:密码策略的默认设置和建议设置

密码策略默认设置建议最低设置

强制密码历史

1 个记住的密码。

24 个记住的密码。

密码最长使用期限

42 天

42 天

密码最短使用期限

0 天

2 天

最短密码长度

0 个字符

8 个字符

密码必须满足复杂性要求。

禁用

启用

用可还原的加密来储存密码(针对域中的所有用户)。

禁用

禁用

此外,记录失败的登录尝试可检测并跟踪恶意行为。有关详细信息,请参阅步骤 10:审核和日志记录

限制远程登录

从 Everyone 组中删除“从网络访问此计算机”特权,限制可远程登录服务器的用户。

禁用空会话(匿名登录)

为了防止匿名访问,请禁用空会话。这些会话是在两台计算机之间建立的未经身份验证的会话或匿名会话。除非禁用空会话,否则攻击者可匿名(无须进行身份验证)连接您的服务器。

一旦攻击者建立了空会话,他(或她)就可以实施各种攻击,包括使用枚举技术来收集目标计算机中与系统相关的信息(这些信息大大帮助了攻击者发起后续攻击)。可通过空会话返回的信息类型包括域、信任细节、共享、用户信息(包括组和用户权限)、注册表项等等。

如果在注册表的以下子项将“RestrictAnonymous”设置为“1”,则可限制空会话:

HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous=1

有关详细信息,请参阅 Microsoft 知识库文章 246261 How To:Use the RestrictAnonymous Registry Value in Windows 2000(英文)。

其他注意事项

下面是进一步提高 Web 服务器安全性的其他步骤列表:

要求审批帐户委派
不要在委派时将 Active Directory 中的域帐户标记为受信任(除非先行取得相关批准)。

不要使用共享帐户
不要创建供多人共享的帐户。得到授权的人必须有自己的帐户。个人的操作可单独审核,然后分配相应的组成员身份和特权。

限制本地 Administrators 组成员身份
尽量将管理帐户限定在两个。这有助于加强责任性。此外,密码不得共享(同样是为了责任性)。

要求 Administrator 以交互方式登录
如果仅实施本地管理,可要求 Administrator 帐户以交互方式登录,方法是删除“从网络访问此计算机”特权。

步骤 6:文件和目录

将 Windows 2000 安装在 NTFS 文件系统分区中有助于借助 NTFS 权限来限制访问。使用强大的访问控制可确保文件和目录不受攻击。在大多数情况下,许可访问特定的帐户要比拒绝访问特定的帐户更有效。请尽可能在目录级设置访问权限。文件一旦添加到文件夹中便继承了文件夹的相应权限,因此您无需再完成任何设置。

在本步骤中,您要执行以下操作:

限制 Everyone 组

限制匿名 Web 帐户

保护或删除工具、实用工具和 SDK

删除示例文件

限制 Everyone 组

Windows 2000 的默认 NTFS 权限可授予 Everyone 组成员完全控制很多关键位置(包括根目录、/inetpub 和 /inetpub/scripts)的权限。

首先,将根目录 (/) 的完全控制权限授予 Administrator 帐户,然后从以下目录删除 Everyone 组的访问权限。

根目录 (/)

系统目录 (/WINNT/system32)

Framework 工具目录 (/WINNT/Microsoft.NET/Framework/{版本})

Web 站点根目录和所有内容目录(默认值是 /inetpub/*)

限制访问 IIS 匿名帐户

匿名帐户是众所周知的。攻击者可利用这种众所周知的帐户执行恶意操作。要确保匿名帐户的安全,请执行下列操作:

拒绝对 Web 内容目录的写入访问
确保该帐户不能写入内容目录(例如,以破坏网站为目的)。

限制对系统工具的访问
尤其是限制对 /WINNT/System32 中的命令行工具的访问。

将权限分配给组,而不是单独的帐户
比较好的做法是,将用户分配到组,然后将权限应用于组而非单独的帐户。对于匿名帐户,请创建一个组,然后将匿名帐户添加到该组,再显式拒绝该组来访问关键的目录和文件。通过将权限分配给组,您可以更轻松地更改匿名帐户或创建其他匿名帐户(因为您不必重新创建这些权限)。

注意:IISLockdown 通过将拒绝写入控制项 (ACE) 应用于 Web Anonymous Users 和 Web Applications 组,从而拒绝匿名帐户对内容目录进行写入访问。此外,它还在命令行工具中添加拒绝执行 ACL。

在不同的应用程序中使用不同的帐户
如果要在 Web 服务器中驻留多个应用程序,请在每个应用程序中使用不同的匿名帐户。将帐户添加到一个匿名 Web 用户组,例如 IISLockdown 创建的 Web Anonymous Users 组,然后使用该组配置 NTFS 权限。

有关使用多个匿名帐户和驻留多个应用程序的详细信息,请参阅模块 20 驻留多个 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 管理单元,然后在“共享文件夹”中选择“共享”,如图 16.3 所示。

“计算机管理”MMC 管理单元共享

图 16.3
“计算机管理”MMC 管理单元共享

限制对所需共享的访问

删除 Everyone 组,然后授予特定的权限。如果不限制可访问共享的用户,则使用 Everyone。

其他注意事项

如果不允许远程管理服务器,请删除不使用的管理共享,例如“C$”和“Admin$”。

注意:有些应用程序可能要求管理共享。例如,Microsoft Systems Management Server (SMS) 和 Microsoft Operations Manager (MOM)。有关详细信息,请参阅 Microsoft 知识库文章 318751 How To:Remove Administrative Shares in Windows 2000 or 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 中,远程注册表访问在默认情况下限定给 AdministratorsBackup operators 组的成员。管理员拥有完全控制权限,备份操作员拥有只读访问权限。

下面注册表位置的相关权限决定了可远程访问注册表的人。

HKLM/SYSTEM/CurrentControlSet/Control/SecurePipeServers/winreg

要查看该注册表键的权限,请运行 Regedt32.exe,找到该键,然后从“安全”菜单中选择“权限”。

注意:有些服务要求远程访问注册表。请参考 Microsoft 知识库文章 153183 How to Restrict Access to the Registry from a Remote Computer(英文),了解您的情况是否要限制注册表的远程访问。

确保 SAM 的安全(仅限独立服务器)

独立服务器可将帐户名称和单向(不可逆)密码哈希值 (LMHash) 保存在本地安全帐户管理器 (SAM) 数据库中。SAM 是注册表的一部分。通常,只有 Administrators 组的成员才能访问帐户信息。

虽然密码实际上并未保存在 SAM 中,密码哈希值也不可逆,但如果攻击者获得了 SAM 数据库的副本,该攻击者便可以使用强力密码技术取得有效的用户名和密码。

通过在注册表中创建键(不是值)NoLMHash 可限制在 SAM 中存储 LMHash,如下所示:

HKLM/System/CurrentControlSet/Control/LSA/NoLMHash

有关详细信息,请参阅 Microsoft 知识库文章 299656 How to Prevent Windows from Storing a LAN Manager Hash of Your Password in Active Directory and Local SAM Databases(英文)。

步骤 10:审核和日志记录

审核过程不能防止系统受攻击,但它是明确入侵者和进行中的攻击的重要辅助方法,且可帮助您诊断攻击踪迹。在 Web 服务器中启用级别最低的审核,然后使用 NTFS 权限保护日志文件,确保攻击者无法借助任何方式删除或更新日志文件来达到掩盖踪迹的目的。使用 IIS W3C 扩展日志文件格式审核。

在本步骤中,您要执行以下操作:

记录所有失败的登录尝试

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

重定位并保护 IIS 日志文件

存档日志文件供脱机分析

审核对 Metabase.bin 文件的访问

记录所有失败的登录尝试

只有记录失败的登录尝试才能检测和跟踪可疑行为。

要审核失败的登录尝试,请执行下列操作:

1.

从“管理工具”程序组启动本地安全策略工具。

2.

展开“本地策略”,然后选择“审核策略”

3.

双击“审核帐户登录事件”。

4.

单击“失败”,然后单击“确定”。

登录失败将作为事件记录在 Windows 安全事件日志中。下面的事件 ID 是可疑的:

531:表示使用禁用帐户进行登录尝试。

529:表示使用未知的用户帐户或密码无效的有效用户帐户进行登录尝试。上述审核事件数量的意外增加表示存在密码猜测企图。

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

在文件系统中使用 NTFS 审核可检测恶意企图。本过程包括两个步骤。

启用日志记录

1.

从“管理工具”程序组启动“本地安全策略”工具。

2.

展开“本地策略”,然后选择“审核策略”

3.

双击“审核对象访问”。

4.

单击“失败”,然后单击“确定”。

要审核文件系统中的失败操作,请执行下列操作:

1.

启动 Windows 资源管理器,然后定位至文件系统的根目录。

2.

右键单击,然后单击“属性”。

3.

单击“安全”选项卡。

4.

单击“高级”,然后单击“审核”选项卡。

5.

单击“添加”,然后在“名称”字段中输入 Everyone。

6.

单击“确定”,选中所有“失败”复选框,审核所有失败的事件。

在默认情况下,这适用于当前文件夹及所有子文件夹和文件。

7.

单击“确定”三次,关闭所有打开的对话框。
失败的审核事件将记录到 Windows 安全事件日志中。

重定位并保护 IIS 日志文件

通过移动和重命名 IIS 日志文件,可使攻击者更难掩盖自己的踪迹。攻击者必须先找到日志文件,然后才能改变日志文件。要使攻击者的任务更难于执行,请使用 NTFS 权限保护日志文件。

将 IIS 日志文件目录移动到与 Web 站点所在卷不同的卷,然后重命名。不要使用系统卷。接着,将以下 NTFS 权限应用于日志文件文件夹和子文件夹。

Administrators:完全控制

System:完全控制

Backup Operators:读取

存档日志文件供脱机分析

为了方便脱机分析 IIS 日志文件,可使用脚本将日志文件从 IIS 服务器自动删除,同时确保安全。必须至少每 24 小时删除一次日志文件。自动执行的脚本可使用 FTP、SMTP、HTTP 或 SMB 从服务器计算机中传输日志文件。但是,如果要启用其中一种协议,请确保启用的安全性,避免产生任何其他攻击。使用 IPSec 策略保护端口和通道。

审核对 Metabase.bin 文件的访问

审核 Everyone 组对 IIS metabase.bin 文件(位于 /WINNT/System32/inetsrv/)的所有失败访问。对 /Metabase 备份文件夹(元数据库的备份副本),执行同样的操作。

其他注意事项

此外,可配置 IIS W3C 扩展日志文件格式审核。在 Web 站点“属性”对话框的“Web 站点”选项卡中,选择“W3C 扩展日志文件格式”。然后,选择诸如“URI 资源”和“URI 查询”之类的“扩展属性”。

步骤 11:站点和虚拟目录

将 Web 根目录和虚拟目录重定位至非系统分区,防止目录遍历攻击。这些攻击的攻击者可执行操作系统程序和实用工具。跨驱动器遍历是不可能的。例如,此方法可确保将来允许攻击者访问系统文件的所有规范化蠕虫病毒都失败。例如,如果攻击者给出包含以下路径的 URL,请求将失败:

/scripts/..%5c../winnt/system32/cmd.exe

在本步骤中,您要执行以下操作:

将 Web 站点移至非系统卷

禁用父路径设置

删除可能危险的虚拟目录

删除或保护 RDS

设置 Web 权限

删除或保护 FrontPage Server Extensions

将 Web 站点移至非系统卷

不要使用默认的 /inetpub/wwwroot 目录。例如,如果系统安装在 C:驱动器,请将站点和内容目录移至 D:驱动器。这样做可缓解无法预料的规范化问题和目录遍历攻击风险。

禁用父路径设置

该 IIS 元数据库设置禁止在类似 MapPath 这种函数的脚本和应用程序调用中使用“..”。这有助于防止目录遍历攻击。

要禁用父路径,请执行下列操作:

1.

启动 IIS。

2.

右键单击 Web 站点根目录,然后单击“属性”。

3.

单击“主目录”选项卡。

4.

单击“配置”。

5.

单击“应用程序选项”选项卡。

6.

清除“启用父路径”。

注意:如果使用 Application Center 2002 管理站点,请参阅 Microsoft 知识库文章 288309 PRB:Disabling Parent Paths Breaks User Interface(英文)。

删除可能危险的虚拟目录

示例应用程序在默认情况下不安装,且不应在 Web 生产服务器中安装。删除所有示例应用程序,包括仅能使用 http://localhost 或 http://127.0.0.1 从本地计算机访问的示例应用程序。

从生产服务器中删除下列虚拟目录:IISSamples、IISAdmin、IISHelp 和 Scripts。

注意:IISLockdown 提供了一个选项来删除 Scripts、IISSamples、IISAdmin 和 IISHelp 虚拟目录。

删除或保护 RDS

远程数据服务 (RDS) 是一个组件,它允许通过 IIS 对远程数据资源进行受控的 Internet 访问。RDS 接口由 Msadcs.dll 提供,Msadcs.dll 位于:program files/common files/system/Msadc.

删除 RDS

如果应用程序不使用 RDS,请删除它。

要删除 RDS 支持,请执行下列操作:

1.

从 IIS 中删除 /MSADC 虚拟目录映射。

2.

删除下列位置中的 RDS 文件和子目录:
/Program Files/Common Files/System/Msadc

3.

删除下面的注册表项:
HKLM/System/CurrentControlSet/Services/W3SVC/Parameters/ADCLaunch

注意:IISLockdown 提供了一个选项来删除 MSADC 虚拟目录。请注意,IISLockdown 仅删除虚拟目录,它不删除文件或注册表项。

保护 RDS

如果应用程序要求使用 RDS,请确保安全。

要确保 RDS 安全,请执行下列操作:

1.

删除以下位置中的示例:
/Progam Files/Common Files/System/Msadc/Samples

2.

删除下面的注册表项:
HKLM/System/CurrentControlSet/Services/W3SVC/Parameters/ADCLaunch/VbBusObj.VbBusObjCls

3.

在 IIS 中禁用 MSADC 虚拟目录的匿名访问。

4.

在如下位置创建 HandlerRequired 注册表项:
HKLM/Software/Microsoft/DataFactory/HandlerInfo/

5.

创建一个新的 DWORD 值,将它设置为 1(1 代表安全模式,0 代表不安全模式)。

注意:可使用注册表脚本文件 Handsafe.reg 更改注册表项。该脚本文件位于 msadc 目录:

/Program Files/Common Files/System/msadc

有关确保 RDS 安全的详细信息,请参阅:

MS99-025 Microsoft Security Program:Unauthorized Access to IIS Servers through ODBC Data Access with RDS,网址是 http://www.microsoft.com/technet/security/bulletin/ms99-025.asp(英文)。

MS98-004 Microsoft Security Program:Microsoft Security Bulletin:Unauthorized ODBC Data Access with RDS and IIS,网址是 http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/bulletin/MS98-004.asp(英文)。

Microsoft 知识库文章 184375 PRB:Security Implications of RDS 1.5, IIS 3.0 or 4.0, and ODBC(英文)。

设置 Web 权限

Web 权限在 IIS 管理单元中配置,并在 IIS 元数据库中维护。Web 权限不是 NTFS 权限。

请使用下列 Web 权限:

读取权限。将读取权限限制在 include 目录。

写入和执行权限。将写入和执行权限限制在允许匿名访问的虚拟目录。

脚本源访问。仅在允许内容创作的文件夹中配置脚本源访问权限。

写入。仅在允许内容创作的文件夹中配置写入权限。仅将写入访问权限授予内容作者。

注意:应将支持内容创作的文件夹配置为要求身份验证和使用 SSL 加密。

删除或保护 FrontPage Server Extensions

如果不使用 FrontPage Server Extensions (FPSE),请将其禁用。如果使用 FPSE,请执行下列步骤提高安全性:

升级服务器扩展。请参考 MSDN 文章“Microsoft FrontPage Server Extensions 2002 for Windows”(网址是 http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnservext/html/fpse02win.asp(英文))中的安全问题。

使用 FrontPage 安全性来限制访问。FPSE 安装的组都有权访问配置了服务器扩展的网站。这些组的作用是基于用户角色来限制可用的访问。有关详细信息,请参阅 Assistance Center,网址是 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,然后 Aspnet_isapi.dll 再将请求转发至 ASP.NET 工作进程。之后,处理文件扩展名的实际 HTTP 处理程序由 Machine.config 或 Web.config 中的 <HttpHandler> 映射确定。

与脚本映射相关的主要安全问题是:

攻击者可利用在扩展中找到的漏洞
如果扩展中的漏洞仍未修补,可能出现该问题。保留不使用的扩展将增加可能受攻击的区域。例如,假如您不使用某扩展,有可能注意不到相关更新。

服务器端资源可被客户端下载
文件扩展名映射不正确,可能出现该问题。对于不应由客户端直接访问的文件,应根据扩展名将它们映射至相应的处理程序,或将它们删除。

在本步骤中,您要执行以下操作:

映射 IIS 文件扩展名

映射 .NET Framework 文件扩展名

映射 IIS 文件扩展名

在 Windows 2000 中,重要的 IIS 文件扩展名包括:.asp、.asa、.cer、.cdx、.htr、.idc、.shtm、.shtml、.stm 和 .printer。

如果不使用上述扩展名中的任何一个,请将该扩展名映射至 IISLockdown 提供的 404.dll。例如,如果不希望为客户端提供 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 映射至 404.dll。此时,应将 .cer、.cdx 和 .asa 手动映射至 404.dll。如果不使用 .asp,也可映射它。

为何要映射至 404.dll?

通过将文件扩展名映射至 404.dll,可防止通过 HTTP 返回和下载文件。如果请求文件的扩展名已映射至 404.dll,系统显示一个 Web 页,其中包含消息“HTTP 404 - 未找到文件”。建议您将不使用的扩展名映射至 404.dll,而不是删除映射。如果删除映射,而文件又误留在服务器中(或错放在服务器中),则请求该文件时系统可明文显示文件,因为 IIS 不知道如何处理它。

要将文件扩展名映射至 404.dll,请执行下列操作:

1.

启动 IIS。

2.

右键单击左窗口中的服务器名称,然后单击“属性”。

3.

确保在“主属性”下拉列表中选定“WWWService”,然后单击相邻的“编辑”按钮。

4.

单击“主目录”选项卡。

5.

单击“配置”。将显示如图 16.4 所示的选项卡式页面。

映射应用程序扩展名

图 16.4
映射应用程序扩展名

6.

从列表中选择一个扩展名,然后单击“编辑”。

7.

单击“浏览”并导航到 /WINNT/system32/inetsrv/404.dll。

注意:此步骤假定您以前运行了 IISlockd.exe,因为 404.dll 是由 IISLockdown 工具安装的。

8.

单击“打开”,然后单击“确定”。

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。这要执行两项任务:

将请求传递到 ASP.NET 之前(并在 ASP.NET 工作进程处理请求之前),先由 404.dll 处理并拒绝这些请求。这可消除 ASP.NET 工作进程的不必要处理。此外,尽早阻止请求是比较好的安全做法。

404.dll 返回消息“HTTP 404 - 未找到文件”,System.Web.HttpForbiddenHandler 返回消息“无法提供此类型的页”。“未找到文件”消息显示的信息更少,可被认为更安全(对此有争议)。

步骤 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 服务管理器”。

2.

右键单击计算机(非 Web 站点,因为筛选器属计算机范围),然后单击“属性”。

3.

单击“编辑”。

4.

单击“ISAPI 筛选器”选项卡。
将显示如图 16.5 所示的选项卡式页面。

删除不使用的 ISAPI 筛选器

图 16.5
删除不使用的 ISAPI 筛选器

步骤 14:IIS 元数据库

安全性和其他 IIS 配置设置都在 IIS 元数据库文件中维护。强化 IIS 元数据库(以及备份元数据库文件)的 NTFS 权限可确保攻击者无法以任何方式(例如,对于特定的虚拟目录禁用身份验证)修改您的 IIS 配置。

在本步骤中,您要执行以下操作:

使用 NTFS 权限来限制对元数据库的访问

限制 IIS 返回的横幅信息

使用 NTFS 权限来限制对元数据库的访问

在位于 /WINNT/system32/inetsrv 目录中的 IIS 元数据库文件 (Metabase.bin) 中设置以下 NTFS 权限。

本地系统:完全控制

Administrators:完全控制

限制 IIS 返回的横幅信息

横幅信息可显示对攻击者有助的软件版本和其他信息。横幅信息可显示您运行的软件,它允许攻击者利用已知的软件漏洞。

如果要检索静态页(例如 .htm 或 .gif 文件),内容位置标头将被添加到响应中。在默认情况下,该内容标头引用 IP 地址,但不是完全限定的域名 (FQDN)。这意味着,您的内部 IP 地址被意外公开。例如,以下 HTTP 响应标头以粗体显示 IP 地址:

HTTP/1.1 200 OK
Server:Microsoft-IIS/5.0
Content-Location:http://10.1.1.1/Default.htm
Date:Thu, 18 Feb 1999 14:03:52 GMT
Content-Type:text/html
Accept-Ranges:bytes
Last-Modified:Wed, 06 Jan 1999 18:56:06 GMT
ETag:"067d136a639be1:15b6"
Content-Length: 4325

您可隐藏 HTTP 响应标头中返回的内容位置,方法是修改 IIS 元数据库中的一个值,将默认行为从公开 IP 地址更改为发送 FQDN。

有关隐藏 HTTP 响应中的内容位置的详细信息,请参阅 Microsoft 知识库文章 218180 Internet Information Server Returns IP Address in HTTP Header (Content-Location)(英文)。

步骤 15:服务器证书

如果 Web 应用程序通过端口 443 支持 HTTPS (SSL),必须安装服务器证书。这项要求是会话协商过程(出现在客户端建立安全 HTTPS 会话时)的一部分。

有效的证书可提供安全的身份验证,客户端因此可信任与之通信的服务器。此外,有效的证书还可提供安全的通信,保证了在网络中传输的敏感数据依然机密,且不会被篡改。

在本步骤中,您将验证服务器证书。

验证服务器证书

检查下列四项内容,确认 Web 服务器证书有效:

检查有效开始日期和有效截止日期。

检查是否正确使用证书。如果证书是作为服务器证书颁发的,不应将它用于电子邮件。

检查证书链中的公钥是否直至受信任的根目录都是有效的。

检查证书是否未被吊销。证书不得位于颁发证书的服务器的证书吊销列表 (CRL) 上。

步骤 16:Machine.Config

本节介绍了所有应用程序要应用的计算机级设置的强化信息。有关应用程序特定的强化设置,请参阅模块 19 确保 ASP.NET 应用程序和 Web 服务的安全。

Machine.config 文件可维护 .NET Framework 的大量计算机范围设置,很多设置都将影响安全性。Machine.config 位于:

%windir%/Microsoft.NET/Framework/{版本}/CONFIG

注意:可使用任何文本或 XML 编辑器(如记事本)编辑 XML 配置文件。XML 标记区分大小写,请务必使用正确的大小写。

在本步骤中,您要执行以下操作:

将受保护的资源映射至 HttpForbiddenHandler

验证是否禁用了跟踪

验证是否禁用了调试编译

验证 ASP.NET 错误是否未返回至客户端

验证会话状态设置

将受保护的资源映射至 HttpForbiddenHandler

HTTP 处理程序位于 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 返回一条消息,指出“无法提供此类型的页”。

下列准则适用于处理 .NET Framework 文件扩展名:

将不使用的扩展名映射至 HttpForbiddenHandler。如果不使用 ASP.NET 页,请将 .aspx 映射至 HttpForbiddenHandler。如果不使用 Web 服务,请将 .asmx 映射至 HttpForbiddenHandler

在面向 Internet 的 Web 服务器中禁用远程处理。将面向 Internet 的 Web 服务器中的远程处理扩展名(.soap 和 .rem)映射至 HttpForbiddenHandler

禁用 .NET 远程处理

要禁用对 .rem 和 .soap 扩展名的 .NET 远程处理禁用请求,请使用 <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 State Service。默认的会话状态模式是 "InProc",且 ASP.NET State Service 设置为“手动”。有关保护会话状态的详细信息(如果安装了必需它的 ASP.NET 应用程序),请参阅模块 19 确保 ASP.NET 应用程序和 Web 服务的安全中的“会话状态”。

步骤 17:代码访问安全性

计算机级代码访问安全策略由 Security.config 文件中的设置确定,该文件位于:
%windir%/Microsoft.NET/Framework/{版本}/CONFIG

运行下面的命令,确保在您的服务器中启用代码访问安全性:

caspol -s On

有关为 ASP.NET Web 应用程序配置代码访问安全性的详细信息,请参阅模块 9 ASP.NET 代码访问安全性。

在本步骤中,您要执行以下操作:

删除本地 Intranet 区域的所有权限

删除 Internet 区域的所有权限

删除本地 Intranet 区域的所有权限

本地 Intranet 区域将权限应用于在 UNC 共享或内部 Web 站点中运行的代码。将此区域与“Nothing”权限集关联,可重新配置为不授予权限。

要删除本地 Intranet 区域的所有权限,请执行下列操作:

1.

从“管理工具”程序组中启动 Microsoft .NET Framework 1.1 版配置工具。

2.

展开“运行库安全策略”,展开“计算机”,然后展开“代码组”。

3.

展开“All_Code”,然后选择“LocalIntranet_Zone”。

4.

单击“编辑代码组属性”。

5.

单击“权限集”选项卡。

6.

从“权限”下拉列表中选择“Nothing”。

7.

单击“确定”。
将显示如图 16.6 所示的对话框。

将“LocalIntranet_Zone”代码权限设置为“Nothing”

图 16.6
将“LocalIntranet_Zone”代码权限设置为“Nothing”

删除 Internet 区域的所有权限

Internet 区域将代码访问权限应用于通过 Internet 下载的代码。在 Web 服务器中,应将此区域重新配置为不授予权限,方法是使其与“Nothing”权限集关联。

重复上一节“删除本地 Intranet 区域的所有权限”中的步骤,只是将“Internet_Zone”设置为“Nothing”权限集。

安全 Web 服务器快照

在显示安全 Web 服务器属性的快照视图中,您可快速轻松地将设置与 Web 服务器进行比较。表 16.4 所示设置的相应 Web 服务器位于抗攻击力强且安全措施得力的 Web 站点中。通过执行前面的步骤,可生成在安全性方面配置完全相同的服务器。

表 16.4:安全 Web 服务器快照

组件特征

修补程序和更新程序

Windows、IIS 和 .NET Framework 中应用了最新的 service pack 和修补程序。

  

服务

禁用不需要的服务。
NNTP、SMTP 和 FTP 也被禁用(除非需要)。
禁用或保护 WebDAV(如果使用)。
服务帐户特权最少。
如果不需要 ASP.NET Session State service,则禁用它。

  

协议

服务器未启用 NetBIOS 和 SMB 协议。
已强化 TCP 堆栈。

  

帐户

已删除不使用的帐户。
禁用了 Guest 帐户。
默认的 administrator 帐户已重命名,且使用强密码。
禁用默认的匿名帐户 (IUSR_Machine)。
自定义匿名帐户用于匿名访问。
强制强密码策略。
限制远程登录。
禁用空会话(匿名登录)。
需要时对帐户委派进行审批。
不使用共享帐户。
限制本地 administrators 组的成员(理想情况是两个成员)。
要求管理员以交互方式登录(或实施安全的远程管理解决方案)。

  

文件和目录

Everyone 组没有系统、Web 或工具目录的访问权限。匿名帐户没有 Web 站点内容目录和系统实用工具的访问权限。
删除或保护工具、实用工具和 SDK。
删除示例文件。
删除不需要的 DSN。

  

共享

已从服务器中删除不使用的共享。
对必需共享的访问已经过保护(除非必要,否则不在“Everyone”组启用共享)。
如果不需要管理共享(C$ 和 Admin$),则删除它们。

  

端口

阻止除 80 和 443 (SSL) 以外的所有端口,尤其是易受攻击的端口 135 – 139 和 445。

  

注册表

防止注册表的远程管理。
已保护了 SAM(仅限独立服务器)。

  

审核和日志记录

将登录失败记入日志。
记录 Everyone 组访问对象时的失败。
将日志文件从 %systemroot%/system32/LogFiles 进行重定位,并使用 ACL 保护它们:Administrators 和 System 有完全控制权限。
启用 IIS 日志记录。
定期存档日志文件供脱机分析。
对访问 metabase.bin 文件的情况进行审核。
配置 IIS 进行 W3C 扩展日志文件格式审核。

  

IIS

  

  

站点和虚拟目录

Web 根目录和虚拟目录分别位于与系统卷不同的卷。
禁用父路径设置。
已删除危险的虚拟目录(IIS Samples、MSADC、IISHelp、Scripts 和 IISAdmin)。
已删除或保护 RDS。
Web 权限限制不适当的访问。
限制 Include 目录使用“读取”Web 权限。
限制匿名访问文件夹使用“写入”和“执行”Web 权限。
允许内容创作的安全文件夹可使用“脚本源访问”Web 权限,但所有其他文件夹不能使用这些权限。
如果不需要 FPSE,则删除它。

  

脚本映射

不使用的脚本映射都映射至 404.dll:.idq、.htw、.ida、.shtml、.shtm、.stm、idc、.htr、.printer。
注意:404.dll 在运行 IIS Lockdown 工具时安装。

  

ISAPI 筛选器

已删除不使用的 ISAPI 筛选器。

  

IIS 元数据库

已使用 NTFS 权限对 IIS 元数据库的访问进行了限制。
横幅信息已限制;隐藏 HTTP 响应标头中的内容位置。

  

Machine.config

  

  

HttpForbiddenHandler

受保护的资源都映射至 System.Web.HttpForbiddenHandler

  

远程处理

已禁用 .NET 远程处理。

<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 On

  

LocalIntranet_Zone

本地 Intranet 区域没有权限:
PermissionSet=Nothing

  

Internet_Zone

Internet 区域没有权限:
PermissionSet=Nothing

  

保持安全

必须监视服务器的安全状态并定期更新,防止新发现的漏洞被他人利用。要确保服务器一直安全,请执行下列操作:

审核组成员身份

监视审核日志

应用最新的 service pack 和修补程序

执行安全评估

使用安全性通告服务

审核组成员身份

跟踪用户组的成员身份,尤其是特权组(如 Administrators 组)。以下命令列出了 Administrators 组的成员:

net localgroup administrators

监视审核日志

定期监视审核日志并分析日志文件,方法是手动查看它们,或参考 Microsoft 知识库文章 296085 How To:Use SQL Server to Analyze Web Logs(英文)中所述的技术。

应用最新的 Service Pack 和修补程序

制订计划来分析服务器软件并订阅安全警报。使用 MBSA 定期扫描服务器,确认缺少了哪些修补程序。下列链接提供了最新的更新程序:

Windows 2000 service packs。最新的 service pack 位于 http://www.microsoft.com/windows2000/downloads/servicepacks/default.asp(英文)。

.NET Framework Service Pack。有关获取 .NET Framework 最新更新程序的相关信息,请参阅 MSDN 文章“How to Get the Microsoft .NET Framework”,网址是 http://msdn.microsoft.com/netframework/downloads/howtoget.asp(英文)。

关键更新程序。这些更新程序有助于解决已知的问题,并帮助您修补计算机的已知安全漏洞。有关最新关键更新程序,请参考“Critical Updates”,网址是 http://www.microsoft.com/windows2000/downloads/critical/default.asp(英文)

高级安全更新程序。有关其他安全更新程序的信息,请参考“Advanced Security Updates”,网址是 http://www.microsoft.com/windows2000/downloads/security/default.asp(英文)。

这些更新程序有助于您修补计算机的已知安全漏洞。

执行安全评估

使用 MBSA 定期检查安全漏洞,确认缺少了哪些修补程序和更新程序。安排 MBSA 每天运行一次,然后分析结果并根据需要采取操作。有关自动运行 MBSA 的详细信息,请参阅本指南“如何”部分的如何:使用 MBSA。

使用安全性通告服务

使用表 16.5 中列出的 Microsoft 服务,获取安全布告并了解可能出现的系统漏洞通知。

表 16.5:安全性通告服务

服务位置

TechNet 安全网站

http://www.microsoft.com/technet/treeview/default.asp?url=/technet/security/current.asp(英文)
使用该网页可查看系统可用的安全布告。

Microsoft 安全性通告服务

http://register.microsoft.com/subscription/subscribeme.asp?ID=135(英文)
使用该服务可注册定期电子邮件布告,并在新修复程序和更新程序可用时得到通知。

此外,请订阅表 16.3 所示的行业安全警报服务。这样,您就可以对修补程序尚不可用的漏洞进行威胁评估。

表 16.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 服务器。

终端服务基于称为远程桌面协议 (RDP) 的 Microsoft 专有协议。RDP 使用 TCP 3389 端口并支持两个并发用户。下面几节描述了如何为安全管理安装并配置终端服务:

安装终端服务

配置终端服务

安装终端服务

要安装终端服务,请执行下列操作:

1.

使用控制面板中的“添加/删除程序”,安装终端服务。使用“添加/删除 Windows 组件”选项。不必为远程管理安装 Terminal Services Licensing 服务。

2.

为远程管理模式配置终端服务。

3.

删除 TsInternetUser 帐户(在安装终端服务期间创建)。该帐户用于支持对终端服务的匿名 Internet 访问,在服务器中不应启用它。

配置终端服务

使用“管理工具”程序组中的“终端服务配置”MMC 管理单元,进行如下配置:

1.

连接终端服务有三种加密级别(低、中和高)可用。将加密设置为 128 位密钥。请注意,Windows 高级加密包应同时安装在服务器和客户端中。

2.

配置终端服务会话,使其超过空闲连接时间限制后断开连接。将它设置为终止断开连接的会话。如果用户关闭终端服务客户端应用程序(在十分钟内不注销),则认为会话已断开连接。

3.

最后,限制终端服务的访问权限。使用“RDP”对话框中的“RDP 权限”选项卡。在默认情况下,允许 Administrators 组的所有成员访问终端服务。如果不希望 Administrators 组的所有成员访问终端服务,请删除该组,然后添加需要访问的单独帐户。请注意,SYSTEM 帐户必须包含在列表中。

使用客户端和服务器之间的安全 VPN 连接或 IPSec 隧道来加强安全性。该方法可提供相互身份验证,且 RDP 有效负载是加密的。

通过 RDP 复制文件

终端服务不提供文件传输的内置支持。但您可从 Windows 2000 Server 资源工具包中安装“文件复制”实用工具,从而将文件传输功能添加到终端服务的剪贴板重定向功能。有关该实用工具和安装说明的详细信息,请参阅 Microsoft 知识库文章 244732 How To:Install the File Copy Tool Included with the Windows 2000 Resource Kit(英文)。

简化并自动设置安全性

本模块已向您说明了如何为 ASP.NET Web 服务器手动配置安全设置。手动过程有助于您了解配置,但它比较耗时。使用下列资源可自动执行本模块提供的步骤:

有关如何自动运行 IISLockdown 的信息,请参阅 Microsoft 知识库文章 310725 How To:Run the IIS Lockdown Wizard Unattended in IIS(英文)。

可使用安全模板创建并部署安全策略。有关详细信息,请参阅下列 Microsoft 知识库文章:

313434, "How To:Define Security Templates in the Security Templates Snap-in in Windows 2000(英文)。

309689, "How To:Apply Predefined Security Templates in Windows 2000(英文)。

321679, "How To:Manage Security Templates in 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 服务安全的详细信息,请参阅模块 19 确保 ASP.NET 应用程序和 Web 服务的安全。

有关配置 Open Hack 应用程序的信息,请参阅 MSDN 文章构建和配置更安全的网站

有关 TechNet 中的安全资源,请参阅 TechNet 安全页,网址是 http://www.microsoft.com/china/technet/security/default.asp(英文)。

有关可打印检查表的信息,请参阅检查表:保护 Web 服务器。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值