• 如何:使用 URLScan

    日期:2009.01.21 | 分类:微软产品 | 标签:

    本页内容
    目标
    适用范围
    如何使用本模块
    摘要
    安装 URLScan
    日志文件
    删除 URLScan
    配置 URLScan
    使用 URLScan 限制请求大小
    在安装了 URLScan 的情况下调试 VS .NET
    屏蔽内容头信息(标题)
    陷阱
    参考

    目标

    使用本模块可以实现:

    获取并安装 URLScan。

    使用 URLScan 可以增强您的 Web 服务器抵御常见攻击(如拒绝服务和目录遍历)的能力。

    在使用 URLScan 时启用 Visual Studio .NET 调试
    返回页首返回页首
    适用范围

    本模块适用于下列产品和技术:

    Microsoft? Windows? 2000 Server

    Internet 信息服务
    返回页首返回页首
    如何使用本模块

    为了充分理解本模块内容,需要:

    务必具有管理 Internet 信息服务的经验。

    务必具有使用 Visual Studio .NET 进行编程的经验。

    请阅读模块如何:使用 IISLockdown。该模块描述了如何安装 IISLockdown,这也是一种安装 URLScan 的方法。
    返回页首返回页首
    摘要

    URLScan 是一个 ISAPI 筛选器,它使 Web 站点管理员能够限制服务器将要处理的 HTTP 请求的类型。通过阻止特定的 HTTP 请求,URLScan 筛选器可以阻止可能有害的请求到达服务器并造成损害。本模块描述了如何获取、安装和配置 URLScan。
    返回页首返回页首
    安装 URLScan

    编写此文档时,可以在运行 IISLockdown (IISLockd.exe) 时安装 URLScan 2.0,也可以独立安装它。

    与 IISLockdown 一起安装 URLScan 2.0:可以在运行 IIS Lockdown 向导 (IISLockd.exe) 时安装 URLScan 2.0。IISLockd.exe 可以作为一个 Internet 下载,从位于以下位置的 Microsoft Web 站点获取:http://download.microsoft.com/download/iis50/Utility/2.1/NT45XP/EN-US/iislockd.exe(英文)。

    在不运行 IISLockdown 的情况下安装 URLScan 2.0:要在不运行 IISLockdown 的情况下安装 URLScan,需要手动从 IIS Lockdown 工具中提取它。首先,需要将 IISLockd.exe 保存到一个目录下。然后,要提取 URLScan 安装文件,请从安装 IISLockd.exe 的目录处的命令行运行以下命令:

    iislockd.exe /q /c

    这会解包 URLScan.exe,即 URLScan 安装程序。

    有关更多信息,请参考 Microsoft 知识库文章 315522“How To:Extract the URLScan Tool and Lockdown Template Files from the IIS Lockdown Tool”,该文章位于:http://support.microsoft.com/default.aspx?scid=315522(英文)。

    安装 URLScan 2.5:URLScan 2.5 是目前最新版本的 URLScan。如果要安装 URLScan 2.5,需要先安装 URLScan 1.0 或 URLScan 2.0。

    有关更多信息,请参阅 Microsoft 知识库文章 307608“INFO:Using URLScan on IIS”,该文章位于:http://support.microsoft.com/default.aspx?scid=307608(英文)。

    默认安装目录:URLScan 文件包括 Urlscan.dll 和 URLScan.ini,URLScan 日志存储在 %windir%\system32\inetsrv\urlscan。URLScan.dll 是筛选器。可以使用 URLScan.ini 配置它的工作方式。
    返回页首返回页首
    日志文件

    URLScan 会创建日志文件,用来记录被拒绝的请求。日志文件位于以下文件夹中:

    %windir%\system32\inetsrv\urlscan

    日志文件的命名规范如下:URLScan.log。
    返回页首返回页首
    删除 URLScan

    可以使用 Internet 服务提供商中的“Web 服务器属性”对话框中的 ISAPI 筛选器页手动删除 URLScan。
    返回页首返回页首
    配置 URLScan

    要配置 URLScan 以确定拒绝哪些请求,可以使用 URLScan.ini。该文件位于以下文件夹中:

    %windir%\system32\inetsrv\urlscan

    有关如何修改 URLScan.ini 中的各个段落的更多信息,请参考 Microsoft 知识库文章 815155“How To:Configure URLScan to Protect ASP.NET Web Applications”,该文章位于:http://support.microsoft.com/default.aspx?scid=815155(英文)。
    返回页首返回页首
    使用 URLScan 限制请求大小

    可以使用 URLScan 作为另一道防线,甚至在请求到达 ASP.NET 之前,用来抵御拒绝服务攻击。可以通过对 MaxAllowedContentLength、MaxUrl 和 MaxQueryString 属性设置限制来达到这一目的。

    要限制请求的大小,请将下列配置添加到 URLScan.ini 中:

    [RequestLimits]
    ; 此段落中的条目对到达服务器
    ; 的允许的请求部分的长度进行限制。
    ;MaxAllowedContentLength=2000000000
    ;MaxUrl=16384
    ;MaxQueryString=4096

    返回页首返回页首
    在安装了 URLScan 的情况下调试 VS .NET

    默认情况下,URLScan 不允许 DEBUG 谓词。因此,在安装了 URLScan 的服务器上使用 VS.NET 调试 Web 应用程序时,可能会看到以下错误:

    Microsoft 开发环境:
    尝试运行工程时出错:无法启动 Web 服务器上的调试。
    无法启动 ASP.NET 或 ATL 服务器调试。

    请验证当前在服务器上已正确安装了 ASP.NET 或 ATL 服务器。您是否要禁用试图为此工程调试 ASP.NET 页的功能?是 否
    帮助

    URLScan 日志文件还将包含与下面类似的条目:

    [01-18-2003 - 22:25:26] Client at 127.0.0.1:Sent verb ‘DEBUG’, which is not
    specifically allowed.Request will be rejected.

    要支持调试,请将 DEBUG 添加到 URLScan.ini 中的 AllowVerbs 段落中,如下所示:

    [AllowVerbs]
    GET
    HEAD
    POST
    DEBUG

    注意 您需要重新启动 IIS,更改才会生效。
    返回页首返回页首
    屏蔽内容头信息(标题)

    要防止可以暴露您的 Web 服务器的类型和版本的头信息,请找到 URLScan.ini 中的 RemoveServerHeader,并将其值设置为 1,如下所示。

    RemoveServerHeader=1

    有关更多信息,请参阅 Microsoft 知识库文章 317741“How To:Mask IIS Version Information from Network Trace and Telnet”,该文章位于: http://support.microsoft.com/default.aspx?scid=317741(英文)。
    返回页首返回页首
    陷阱

    如果使用 URLScan,可能会遇到下列问题:

    URLScan 阻止 DEBUG 谓词,这会导致应用程序调试无法进行。如果需要支持调试,请将 DEBUG 谓词添加到 URLScan.ini 中的 [AllowVerbs] 段落。

    您需要重新启动 IIS,以使更改生效。URLScan 是一个 ISAPI 筛选器,在 IIS 进程 (Inetinfo.exe) 内运行,在 IIS 启动时会从 URLScan.ini 加载 URLScan 的选项。可以从命令提示符运行 IISReset 命令来重新启动 IIS。

    如果请求包含可能有害的字符,那么URLScan 会阻止这样的字符,例如,曾经用来利用漏洞实施攻击的字符,比如,可遍历目录的“.”。建议不要在项目路径中包含“.”字符。如果必须使用该字符,需要在 URLScan.ini 中设置 AllowDotInPath=1。

    如果您的 Web 应用程序目录的路径中包括点,例如,目录中包含名称“Asp.Net”,则 URLScan 将拒绝该请求,并向该客户端返回一个“404 not found”消息。

    其他由于将被 URLScan 拒绝而应当避免在项目名称中使用的字符包括逗号 (,) 和磅字符(#)。
    返回页首返回页首
    参考

    有关其他信息,请参考下列资源:

    有关如何修改 Urlscan.ini 中的各个段落的更多信息,请参考 Microsoft 知识库文章 815155“How To:Configure URLScan to Protect ASP.NET Web Applications”,该文章位于:http://support.microsoft.com/default.aspx?scid=815155(英文)。

    有关使用 URLScan 的更多信息,请参阅 http://www.nardware.co.uk/Security/Docs/Nmsurlscan.html(英文)

    有关 URLScan 2.5 的更多信息,请参考 Microsoft 知识库文章 307608“INFO:Using URLScan on IIS”,该文章位于:http://support.microsoft.com/default.aspx?scid=307608(英文)。