保护 web 服务器

来源:百度文库 编辑:神马文学网 时间:2024/04/27 18:20:39
保护 Web 服务器
更新日期: 2004年04月12日
本页内容
本模块内容
目标
适用范围
如何使用本模块
概述
威胁与对策
确保 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 服务器提供了一份可打印的作业帮助,可将它用作快速参考。使用基于任务的检查表可快速评估必需的步骤,然后帮助您逐步完成各个步骤。

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

如何:使用 URLScan

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

如何:使用 IISLockdown
返回页首
概述
究竟怎样的 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 服务器安全的方法
为了确保 Web 服务器的安全,必须应用很多配置设置来减少服务器受攻击的漏洞。但究竟在何处开始、何时才算完成呢?最佳的方法是,对必须采取的预防措施和必要配置的设置进行分类。通过分类,您可以从上到下系统安排保护过程,或选择特定的类别完成特定的步骤。
配置类别
本模块的安全方法都归入图 16.2 所示的类别。

图 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
帐户
_xyz