如何:使用 URLScan
本页内容
![]() | 目标 |
![]() | 适用范围 |
![]() | 如何使用本模块 |
![]() | 摘要 |
![]() | 安装 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<date>.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(英文)。 |