当前位置: 主页 > 服务器技术 > Web服务器 > urlscan-过滤非法URL请求

urlscan-过滤非法URL请求

时间:2009-9-17来源:互联网 点击:
       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 安装程序。

 和一般软件一样安装,但是,此软件不能选择安装路径,安装完成以后,我们可以在System32/InetSvr/URLScan目录下找到以下文件:

urlscan.dll:动态连接库文件;
urlscan.inf:安装信息文件;
urlscan.txt:软件说明文件;
urlscan.ini:软件配置文件,这个文件很只要,因为对URLScan的所有配置,均有这个文件来完成。

(二)、软件的配置

软件的配置由urlscan.ini文件来完成,在配置此文件以前,我们需要了解一些基本知识。

1、urlscan配置文件的构造形式

urlscan配置文件必须遵从以下规则:

(1)此文件名必须为urlscan.ini;

(2)配置文件必须和urlscan.dll在同一目录;

(3)配置文件必须是标准ini文件结构,也就是由节,串和值组成;

(4)配置文件修改以后,必须重新启动IIS,使配置生效;

(5)配置文件由以下各节组成:

[Option]节,主要设置节;
[AllowVerbs]节,配置认定为合法URL规则设定,此设定与Option节有关;
[DenyVerbs]节,配置认定为非法URL规则设定,此设定与Option节有关;
[DenyHeaders]节,配置认定为非法的header在设立设置;
[AllowExtensions]节,配置认定为合法的文件扩展名在这里设置,此设定与Option节有关;
[DenyExtensions]节,配置认定为非法的文件扩展名在这里设置,此设定与Option节有关;

2、具体配置

(1)Option节的配置,因为Option节的设置直接影响到以后的配置,因此,这一节的设置特别重要。此节主要进行以下属性的设置:

UseAllowVerbs:使用允许模式检查URL请求,如果设置为1,所有没有在[AllowVerbs]节设置的请求都被拒绝;如果设置为0,所有没有在[DenyVerbs]设置的URL请求都认为合法;默认为1;

UseAllowExtensions:使用允许模式检测文件扩展名;如果设置为 1,所有没在[AllowExtensions]节设置的文件扩展名均认为是非法请求;如果设置为0,所有没在[DenyExtensions]节设置的扩展名均被认为是合法请求;默认为0;

EnableLogging:是否允许使用Log文件,如果为1,将在urlscan.dll的相同目录设置名为urlscan.log的文件记录所有过滤;

AllowLateScanning:允许其他URL过滤在URLScan过滤之前进行,系统默认为不允许0;

AlternateServerName:使用服务名代替;如果此节存在而且[RemoveServerHeader]节设置为0,IIS将在这里设置的服务器名代替默认的“Server”;

NormalizeUrlBeforeScan:在检测URL之前规格化URL;如果为1,URLScan将在IIS编码URL之前URL进行检测;需要提醒的是,只有管理员对URL解析非常熟悉的情况下才可以将其设置为0;默认为1;

VerifyNormalization:如果设置为1,UrlScan将校验URL规则,默认为1;此节设定与NormalizeUrlBeforeScan有关;

AllowHighBitCharacters:如果设置为1,将允许URL中存在所有字节,如果为0,含有非ASCII字符的URL将拒绝;默认为1;

AllowDotInPath:如果设置为1,将拒绝所有含有多个“.”的URL请求,由于URL检测在IIS解析URL之前,所以,对这一检测的准确性不能保证,默认为0;

RemoveServerHeader:如果设置为1,将把所有应答的服务头清除,默认为0;

(2)[AllowVerbs]节配置

如果UseAllowVerbs设置为1,此节设置的所有请求将被允许,一般设置以下请求:

GET、HEAD、POST

(3)[DenyVerbs]节配置

如果UseAllowVerbs设置为0,此节设置的所有请求将拒绝,一般设置以下请求:

PROPFIND、PROPPATCH、MKCOL、Delete、PUT、COPY、MOVE、LOCK、UNLOCK

(4)[AllowExtensions]节设置

在这一节设置的所有扩展名文件将被允许请求,一般设置以下请求:

.asp、.htm、.html、.txt、.jpg、.jpeg、.gif,如果需要提供文件下载服务,需要增加.rar、.zip

(5)[DenyExtensions]节设置

在这一节设置的所有扩展名文件请求将被拒绝,根据已经发现的漏洞,我们可以在这一节增加内容,一般为以下设置:
.asa、可执行文件、批处理文件、日志文件、罕见扩展如:shtml、.printer等。 

__________________________________________________________________________________

UseAllowVerbs=1  
允许的方法=1,如果是1,将使用[AllowVerbs]反之将使用 [DenyVerbs]。默认是1
UseAllowExtensions=0 
允许使用的扩展名=0,如果是1,将使用[AllowExtensions] , 反之[DenyExtensions] 将起作用.默认为0
NormalizeUrlBeforeScan=1 
扫描前标准化URL=1,如果是1,在处理前先标准化URL,默认为1,注意:如果设置为0 将使得扩展名和URL检查不可靠,
所以除非是测试,不然建议不要设置为其他值
VerifyNormalization=1
核实标准化=1,如果是1,将2次标准化URL并且如果发生变化将拒绝请求。默认值为1 
AllowHighBitCharacters=0
允许使用高位编码=0,如果是1,URL中将允许使用高位编码(如UTF8或者MBCS)。默认为0
AllowDotInPath=0 
允许在路径中使用点=0.如果是1,路径中允许使用“.”,而不作为扩展名部分。默认为0,注意:如果设置为1将使扩展名检查不可靠,
所以除非是测试,不然建议不要设置为其他值
RemoveServerHeader=0
移除服务头=0.如果是1,将溢出请求中的服务头,默认为0 
EnableLogging=1  
启用日志=1.如果是1,将启动urlscan日志,重启后生效。 
PerProcessLogging=0 
为每一个进程生成日志文件,重启urlscan后生效
AllowLateScanning=0 
如果是1,urlscan将以较低的优先权过滤器运行。默认为0.需要注意的是仅仅在已经安装的过滤器修改地址而你希望urlscan应用规则去重
写地址是使用。重启生效
PerDayLogging=1  
如果是1,urlscan将每天生成一个新的日志,比如 ‘UrlScan.010101.log‘。如果是o,urlscan将生成日志到urlscan.log。默认为1,重启生效。
UseFastPathReject=0
如果是1,urlscan将不会使用RejectResponseUrl(拒绝响应地址)。需要IIS6.0以上版本,这也将阻止iis把拒绝的请求写入W3SVC日志。
这里不管是否设置urlscan都将把拒绝的请求写入日志。默认为0.
LogLongUrls=0
这个属性对urlscan3.0即以后的版本无效,他们已经把完整的路径写入日志中了。
UnescapeQueryString=1 
如果是1,urlscan将对原始字串和过滤后的字串这2种方式都进行处理。
如果是0,urlscan将仅仅检查客户端发送的原始字串。默认为1.注意:如果设置为0,那么基于请求字串的检查将不可靠。
RejectResponseUrl=
当UseFastPathReject=0时,这项设置生效。注意:象这种设置"RejectResponseUrl=/~*"将使urlscan使用日志模式。他仅仅记录下结果而并不拒绝请求。
LoggingDirectory=Logs
设置日志的存放路径,比如c:\some\path,默认存放在与UrlScan.dll相同文件夹下
AlternateServerName=
如果RemoveServerHeader=0,原来的服务头被清除,这里可以重新设置服务头内容。
[RequestLimits]
MaxAllowedContentLength=30000000
MaxUrl=260
MaxQueryString=2048
限制最大内容长度,url最大长度,最大请求字串
[AllowVerbs]
GET
HEAD
POST
允许的http方法,当UseAllowVerbs=1时,设置生效
[DenyVerbs]
PROPFIND
PROPPATCH
MKCOL
Delete
PUT
COPY
MOVE
LOCK
UNLOCK
OPTIONS
SEARCH
拒绝的http方法,当UseAllowVerbs=0时生效。
[DenyHeaders]
Translate:
If:
Lock-Token:
Transfer-Encoding:
拒绝的文件头
[AllowExtensions]
.asp
.htm
.html
.txt
.jpg
.jpeg
.gif
.png
.rar
.asa
允许的扩展名,当UseAllowExtensions=1时生效,如果默认是没有.asp的,如果是动态asp网站一定要加上。这样的话,即使安装了php运行环境,php网页也无法打开

[DenyExtensions]
; Deny executables that could run on the server
.exe
.bat
.cmd
.com
.src
; Deny infrequently used scripts
.htw     ; Maps to webhits.dll, part of Index Server
.ida     ; Maps to idq.dll, part of Index Server
.idq     ; Maps to idq.dll, part of Index Server
.htr     ; Maps to ism.dll, a legacy administrative tool
.idc     ; Maps to httpodbc.dll, a legacy database access tool
.shtm    ; Maps to ssinc.dll, for Server Side Includes
.shtml   ; Maps to ssinc.dll, for Server Side Includes
.stm     ; Maps to ssinc.dll, for Server Side Includes
.printer ; Maps to msw3prt.dll, for Internet Printing Services
; Deny various static files
.ini     ; Configuration files
.log     ; Log files
.pol     ; Policy files
.dat     ; Configuration files
.config  ; Configuration files
当UseAllowExtensions=0时生效,拒绝的扩展名,
[AlwaysAllowedUrls]
总是允许的url,比如/SampleURL.htm
[DenyUrlSequences]
..  ; Don‘t allow directory traversals
./  ; Don‘t allow trailing dot on a directory name
\   ; Don‘t allow backslashes in URL
:   ; Don‘t allow alternate stream access
%   ; Don‘t allow escaping after normalization
&   ; Don‘t allow multiple CGI processes to run on a single request
任何url包含了这些字串都将被拒绝。
[AlwaysAllowedQueryStrings]
总是允许的字串
[DenyQueryStringSequences]
<   ; Commonly used by script injection attacks
>   ; Commonly used by script injection attacks
任何请求字串中出现这些字符都将被拒绝。他们常被用于脚本攻击



如果想让中文文件名的下载链接生效请设置AllowHighBitCharacters=1
站长资讯网
. TAG: URLSCAN 过虑请求
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言