我们从 IIS Web 服务器分发可执行文件。在运行 IIS Lockdown 工具(2.1 版)部署后,可执行文件停止运行,同时服务器生成 404 错误。URL 好像是 http://server.xx.com/apps/myapp.exe。卸载 IIS Lockdown 工具后功能恢复。为什么 Lockdown 工具会对我们的应用程序产生这样的影响?
IIS Lockdown 工具执行几种重要操作来帮助保护 IIS 5 服务器的安全。所有步骤都是可选的,但了解各个步骤中所发生的情况对于理解各个步骤可能会对服务器产生何种影响是很重要的。您可以在 IIS Insider archives(IIS 有问必答存档)中找到有关此工具的几个问题,它们可能会对您有所帮助,而最完整的处理方法可以在 IIS Lockdown Walkthrough(IIS Lockdown 演练)中找到,其网址为 http://www.iisanswers.com/articles/IIS_Lockdown/IISLockdown.htm。
运行此工具时的可选步骤之一是安装 URLScan。URLScan 是一个 ISAPI 筛选器,它按照您的指定检查所有的传入请求并基于特定的标准拒绝它们。URLScan 是一个独立于 IIS Lockdown 工具的可选程序,但是人们却经常将它与 IIS Lockdown 工具混为一谈,因为安装 URLScan 是该工具的选项之一。换句话说,您不运行 IIS Lockdown 照样可以安装 URLScan,不安装 URLScan 也照样可以运行 IIS Lockdown。
如上所述,安装 URLScan 后,该工具将在 IIS 收到 URL 后对其进行检查并基于 URLScan.ini 中的设置接受或拒绝它们。URLScan 的接受或拒绝请求“规则”基于 URLScan.ini 的内容,URLScan.ini 与 URLScan.dll 安装在一起(默认情况下,URLScan 文件夹位于 winnt\system32\inetsrv 中)。打开 URLScan.ini(在“记事本”或其他文本编辑器中)后,您会在顶端发现名为 [options] 的一节(如下所示):
[options]
UseAllowVerbs=1 ; if 1, use [AllowVerbs] section,
else use [DenyVerbs] section
UseAllowExtensions=0 ; if 1, use [AllowExtensions] section,
else use [DenyExtensions] section
NormalizeUrlBeforeScan=1 ; if 1, canonicalize URL before processing
VerifyNormalization=1 ; if 1, canonicalize URL twice and reject
request if a change occurs
AllowHighBitCharacters=0 ; if 1, allow high bit (ie. UTF8 or MBCS)
characters in URL
AllowDotInPath=0 ; if 1, allow dots that are not file
extensions
RemoveServerHeader=0 ; if 1, remove "Server" header from
response
EnableLogging=1 ; if 1, log UrlScan activity
PerProcessLogging=0 ; if 1, the UrlScan.log filename will
contain a PID (ie. UrlScan.123.log)
AllowLateScanning=0 ; if 1, then UrlScan will load as a
low priority filter.
PerDayLogging=1 ; if 1, UrlScan will produce a new log
each day with activity in the form
UrlScan.010101.log
RejectResponseUrl= ; UrlScan will send rejected requests
to the URL specified here. Default is
/<Rejected-by-UrlScan>
UseFastPathReject=0 ; If 1, then UrlScan will not use the
RejectResponseUrl or allow IIS to log
the request
注意:名为 UseAllowExtensions 的选项被设置为 0。右边的注释说明该选项设置为 0 时,将使用 URLScan 的 [DenyExtensions] 节来确定要阻止的文件扩展名。下面是 URLScan.ini 文件中的一个典型的 [DenyExtensions] 节(由 IIS Lockdown 工具使用): |
[DenyExtensions] ; ; Extensions listed here either run code directly on the server, ; are processed as scripts, or are static files that are ; generally not intended to be served out. ; ; Note that these entries are effective if "UseAllowExtensions=0" ; is set in the [Options] section above. ; ; Also note that ASP scripts are denied with the below ; settings. If you wish to enable ASP, remove the ; following extensions from this list: ; .asp ; .cer ; .cdx ; .asa ; ; Deny ASP requests .asp .cer .cdx .asa ; Deny executables that could run on the server .exe .bat .cmd .com ; 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
您可以看到此列表中包含 .EXE。因此,您之所以会从 IIS 服务器收到一个“404, File Not Found”(404,找不到文件)消息,并不是因为文件不存在,而是因为 URLScan 阻止了它。您只需要删除 URLScan.ini 文件中的该条目便可开始发送您的应用程序。
如果在 Web 站点上启用了目录浏览,但没有可用的默认文档,则 IIS 显示的该目录的内容很像 FTP 站点。我们发现这对于分发文件非常有用,但是我想知道是否有办法自定义文件的显示。
您可以对显示多少信息做有限的修改,但不能修改信息的显示格式。换句话说,没有模板可供您用来创建允许您显示您的组织的徽标、联系信息等内容的自定义页面。要创建这样的页面,建议您编写一个脚本来读取目录信息并提供到基础内容的链接。
但是,您可以修改它们的文件属性,文件属性是通过配置数据库键 DirBrowseFlags 显示的。您无法在 IIS 管理器中作出这些修改。您必须使用脚本、MBExplorer 或其他配置数据库编辑工具来添加它们。编辑 DirBrowseFlags 配置数据库属性的值,使其等于下列值(参见 http://www.microsoft.com/resources/documentation/WindowsServ/2003/standard/proddocs/en-us/ref_mb_dirbrowseflags.asp)中您想启用的值的和。如果配置数据库中您要配置的级别不存在该属性,则您需要创建它并将(下面的)值的和指定为 value。
标志
| 标志名称 | EnableDirBrowsing |
说明 | 设置为 true 时,启用目录浏览。 |
配置数据库位掩码标识符 | MD_DIRBROW_ENABLED |
十进制值 | 2147483648 |
十六进制值 | 0x80000000 |
| 标志名称 | DirBrowseShowDate |
说明 | 设置为 true 时,浏览目录时显示日期信息。 |
配置数据库位掩码标识符 | MD_DIRBROW_SHOW_DATE |
十进制值 | 2 |
十六进制值 | 0x00000002 |
| 标志名称 | DirBrowseShowTime |
说明 | 设置为 True 时,显示目录时会显示文件时间信息。 |
配置数据库位掩码标识符 | MD_DIRBROW_SHOW_TIME |
十进制值 | 4 |
十六进制值 | 0x00000004 |
| 标志名称 | DirBrowseShowSize |
说明 | 设置为 True 时,浏览目录时显示文件大小信息。 |
配置数据库位掩码标识符 | MD_DIRBROW_SHOW_SIZE |
十进制值 | 8 |
十六进制值 | 0x00000008 |
| 标志名称 | DirBrowseShowExtension |
说明 | 设置为 True 时,浏览目录时显示文件名扩展名。 |
配置数据库位掩码标识符 | MD_DIRBROW_SHOW_EXTENSION |
十进制值 | 16 |
十六进制值 | 0x00000010 |
| 标志名称 | DirBrowseShowLongDate |
说明 | 设置为 True 时,显示目录时以扩展格式显示日期信息。 |
配置数据库位掩码标识符 | MD_DIRBROW_LONG_DATE |
十进制值 | 32 |
十六进制值 | 0x00000020 |
| 标志名称 | EnableDefaultDoc |
说明 | 设置为 True 时,浏览某个目录时加载该目录的默认文档(由 DefaultDoc 属性指定)。 |
配置数据库位掩码标识符 | MD_DIRBROW_LOADDEFAULT |
十进制值 | 1073741824 |
十六进制值 | 0x40000000 |
我们使用 Windows XP Professional 上的 IIS 5.1 来开发和测试我们的 Web 应用程序。问题是,我们无法在 Web 站点上设置任何 NTFS 权限。但我们的 Windows 2000 Server 上则不存在这个问题。分区是 NTFS 格式。该怎么办呢?
在 Windows XP Professional 中,默认情况下启用简单文件共享。设置为启用简单文件共享时,文件或文件夹属性的“安全”选项卡不会显示。您可以按照以下步骤禁用简单文件共享:
1. | 打开任意文件夹并选择“工具”、“文件夹选项”和“查看”选项卡来显示“高级设置”选项(如下所示)。 ![]() | ||||||||||
2. | 将滚动条滚动到底端并清除“使用简单文件共享”复选框。 | ||||||||||
3. | 单击“应用到所有文件夹”按钮。 | ||||||||||
4. | 单击“确定”并关闭该文件夹。 | ||||||||||
5. | 然后右键单击任意文件夹并选择“属性”。 现在您可以查看允许您设置 NTFS 权限的“安全”选项卡了。 您将会发现许多关于适用于您的 Web 应用程序的 NTFS 权限的建议,可以总结为:
|
如有问题,请提交给 IIS 有问必答。挑选出的问题会连同答案一起刊登在下一期的 IIS 有问必答专栏中。
要获得 IIS 有问必答专栏前几个月份的问答列表,请单击此处。