本单元概要
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 服务器的安全”提供了可以打印的作业帮助以作为快速参考。使用基于任务的核对表,可以快速评估必需步骤的范围,帮助您完成各个步骤。 |
|
使用“如何……”部分。本指导中的“如何……”包括以下指导性文章:
|
本页内容
概述
怎样才能使 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 配置为拒绝带有“../”的 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 时,所创建的服务、帐号和文件夹。
|
服务 |
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 版本默认安装创建的服务、帐号和文件夹。
|
服务 |
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 步:修补程序和更新
用最新的服务包和修补程序更新服务器。必须更新和修补所有 Web 服务器组件,包括 Windows 2000 (和 IIS)、.NET Framework,和 Microsoft 数据访问组件 (MDAC)。
在此步骤中,应该:
|
检测和安装必需的修补程序和更新。 |
|
更新 .NETframework。 |
检测和安装修补程序和更新
使用 Microsoft 基准安全分析程序 (MBSA) 检测当前安装遗漏的修补程序和更新。MBSA 将您的安装与在 XML 文件中维护的一系列当前可用更新进行比较。MBSA 可以在扫描服务器时下载 XML 文件,也可以手工将文件下载到服务器,或者放在网络服务器上。
要检测和安装修补程序和更新
更新 .NET Framework
在撰写本单元时(2003 年 5 月),MBSA 还无法检测 .NET Framework 更新和修补程序。因此,必须手工检测 .NET Framework 更新。
手工更新 .NET Framework 1.0 版本
第 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 工具的更多信息,请参阅以下文章:
安装和配置 URLScan
urlscan 是在您运行 IISLockdown 时安装的,虽然可以分别下载和安装。
不运行 IISLockdown 而安装 URLScan
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 工具的更多信息,请参阅以下文章:
第 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 使用以下端口:
要禁用 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 显示了默认值和推荐的密码策略设置。
|
强制密码历史 |
记住 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: 驱动器。这将降低与无法预料的规范化问题和目录遍历攻击相关联的风险。