首页 » 建站技术 » 浏览内容

[IIS总结 2 ]IIS常见问题及解答以及故障分析


2005-09-20 08:36:23 5,652 0 发表评论 字体: 作者:C.K.

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

From:http://www.im286.com/viewthread.php?tid=1072095&extra=page%3D1%26filter%3Ddigest

“Web 匿名用户”帐户密码的位置

问:我们希望向“Web 匿名用户”帐户授予从其他系统上读取信息的访问权;可是,我们不知道该帐户的密码。怎样才能获得该密码呢?

答:IUSR_ 帐户就是“Web 匿名用户”帐户,它是在 IIS 的安装过程中创建的。该密码存储在本地 SAM 中(对于 Windows 2000 域控制器而言存储在 Active Directory 中),Metabase 中也存储着该密码。由于该密码存储在 Metabase 中,您就可以使用一个 .vbs 脚本将 IUSR 和 IWAM 这两个帐户的密码提取出来,方法如下:

Dim IIsObject
Set IIsObject = GetObject (“IIS://localhost/w3svc”)
WScript.Echo “AnonymousUserName = ” & IIsObject.Get(“AnonymousUserName”) & vbCrlf & _
“AnonymousUserPass = ” & IIsObject.Get(“AnonymousUserPass”) &vbCrlf &vbCrlf &_
“WAMUserName = ” & IIsObject.Get(“WAMUserName”) & vbCrlf & _
“WAMUserPass = ” & IIsObject.Get(“WAMUserPass”)
Set IIsObject = Nothing

注: 通过此脚本可以显示在主属性级别上针对 Web 服务设置的 IUSR 和 IWAM 帐户密码。如果您已将匿名验证配置为使用另外一个用户帐户来访问网站或目录,那么您必须相应地修改该脚本,以反映所做的更新。
如何在不同计算机之间移动 Metabase

问:有没有文档资料记录 IIS 4.0/5.0 中针对不同计算机的密钥?如果我需要将 Metabase 从一台计算机移到另一台计算机上,应该采用哪种方法?我读了 IISSync 实用工具的说明文档,但不能解决我的问题。我在找一种类似于 MergeINI 文件这样的工具。

答:IIS 4 和 IIS 5 均使用 %systemdir%/system32/inetsrv 中的 metabase.bin 来存储 IIS 配置信息。Metabase 的密钥是针对安装 IIS 的计算机设置的,所以您不能简单地在不同系统间移动 Metabase。正如 2001 年 11 月这一期的 IIS 有问必答专栏

(http://www.microsoft.com/technet/columns/insider/iisi1101.asp) 中指出的那样,您可以使用 Metaedit 2.2 (http://download.microsoft.com/download/iis50/Utility/5.0/NT45/EN-US/MtaEdt22.exe) 从 IIS 4 或 IIS 5 中导出 Metabase,然后再将这些设置导入另一个系统。导入后仍需确保导入系统中的设置正确无误。例如,如果您的 Web 站点主目录位于驱动器 D 上,而您使用 Metaedit 将 Web 站点导入一个新系统中的驱动器 E 上,就会导致 IIS 找不到站点内容。

另一个可用于迁移 Metabase 的实用工具是 IIS Export。这是一个非常实用的迁移工具,位于以下网址:http://www.adsonline.co.uk/IISExport。这个共享件实用工具可以复制文件和权限,并将 Metabase 存储在一个数据库中,以便将配置信息应用到多个系统中。

最后,还可以借助 IIS Migration Tool。该实用工具属于 Windows 2000 资源工具包的一部分,可以从 http://www.microsoft.com/serviceproviders/downloads/migration_toolsP65238.asp 下载。该工具可以通过端口 80 传送 Metabase、文件和权限,但最多传送 4GB 的数据。尽管不支持它作为资源工具包的一个实用工具,但该工具还是非常有用的。

可用于排除 SMTP 服务故障的资源

问:我想询问有关 IIS 5.0 的 SMTP 服务的信息。我使用默认设置无法发出邮件,请问如何解决这个问题?

答:IIS 5 中的 SMTP 服务是 IIS 4 SMTP 服务的增强版本。您可以在很多地方找到非常有用的信息。除了随服务器安装的联机帮助文件,您还可以查阅以下文章:

How to Configure the IIS SMTP Service to Relay SMTP Mail(如何配置 IIS SMTP 服务以转发 SMTP 邮件,Microsoft 知识库文章 Q230235
Setting Up the SMTP Mail Service in Windows 2000 – Part 1(在 Windows 2000 中设置 SMTP 邮件服务 – 第一部分,http://www.asptoday.com/content/articles/20000306.asp
但我个人更愿意查阅由微软出版社出版的 Running Microsoft Internet Information Server(运行 Microsoft Internet Information Server)一书中相关的一章。本书对所有 IIS 管理员都是必读的,尽管其中介绍的是 Internet Information Server 4,但大量篇幅都适用于 IIS 5,包括涉及 SMTP 的那一章。您可以在 Microsoft TechNet 网站上找到这一章,网址是 http://www.microsoft.com/technet/prodtechnol/iis/iis4/deploy/confeat/mail.asp
最后,还可以参考 Microsoft 培训课程中有关如何配置 SMTP 服务的一个模块,课程名称为 2295a – Implementing and Supporting Microsoft Internet Information Services 5.0(实施和支持 Microsoft Internet Information Services 5.0)。

如何在系统帐户环境之外运行应用程序

问:我的 IIS 服务器可以运行一个自定义的 mpeg 播放应用程序。该应用程序可以将 mpeg 数据进行流式处理,具体是使用一块特殊的卡将数据解码并以流式输出到投影机上。当 mpeg 源位于本地磁盘上时,这个进程可以正常运行。但现在我需要从 Unix 服务器上提取 mpeg。当 IIS 加载 mpeg 播放应用程序时,总是以 SYSTEM 身份执行加载,但此身份无法访问 NFS(Unix 服务器)共享资源。我需要让 IIS 在启动 mpeg 播放应用程序时使用 SYSTEM 以外的一个用户身份。我已经试过更改 IIS 服务使用的用户帐户,但这样一来问题更多了。如何才能解决这个问题,我到底错在哪里呢?

答:任何进程都总是在帐户的“上下文”中运行的。正如您指出的那样,INETINFO 是由 SYSTEM 帐户所启动的进程,所以 Inetinfo 是在 SYSTEM 帐户上下文中运行的。SYSTEM 帐户不属于典型的用户帐户。SYSTEM 帐户的一个特点之一就是不具备网络访问权,因此,以 SYSTEM 身份运行的应用程序无法访问网络资源。某些情况下,可以对服务进行配置,让它作为由一个指定的用户帐户启动的进程运行,但 IIS 又不支持此项配置功能。

最理想的做法就是让 IIS 服务器中的应用程序切换“上下文”,使用正调用该应用程序的用户的安全身份验证凭据(有关详细信息,请参考以下两本书:由微软出版社出版的 Designing Secure Web-Based Applications for Microsoft Windows 2000(为 Microsoft Windows 2000 设计安全的基于 Web 的应用程序)及 Addison Wesley 出版的 Programming Windows Security(Windows 安全性编程)。

不过,您还可以通过将应用程序配置为在进程外 运行来解决问题。您可以在 IIS 管理单元的 Web 站点或目录属性中配置该设置。在 Internet Information Server 4 中,需要选中“在单独的内存空间中运行(独立进程)”复选框;在 IIS 5 中,需要将应用程序保护级别设置为“中”或“高”。一经配置,应用程序将在 IWAM_ 帐户而不是 SYSTEM 帐户的上下文中运行。IWAM 是一个普通的用户帐户,您可以为其分配访问远程网络资源的权限,这样在此环境中运行的应用程序就可以访问这些资源了。

作为多个站点的主机时推荐使用的文件夹结构

问:在选择主目录和主目录的物理文件夹结构时需要注意哪些事项,特别是在作为多个站点的主机时需要注意什么?如果有 A 公司、B 公司或更多公司,它们是应位于 Inetpub 文件夹下还是 wwwroot 之下?换言之,wwwroot 是所有 Web 站点的根目录还是只是安装的默认 Web 站点的根目录?这对访问 Scripts 等文件夹有何影响?

答:以下几点说明可以澄清上述疑问。安装 IIS 后,系统的目录结构将如下所示:

Drive Root
Inetpub
Adminscripts
Ftproot
Iissamples
Scripts
Wwwroot

因为看到 wwwroot 名称中含有“root”,人们往往就会推断它是存储所有 Web 内容的位置,但是,事实并非如此。该文件夹只是“默认 Web 站点”的主文件夹,您应将该名称视为与“DefaultWebRoot”等同。
故此,您最好将新的 Web 站点放入默认 wwwroot 文件夹之外的文件夹中。如果不这样做,所有 Web 站点内容都只能从默认 Web 站点中读取。另外,为安全起见,不应将网站内容放在系统驱动器中。

还应特别注意 Scripts 文件夹。默认情况下,Scripts 文件夹的访问权限设为每个用户 – 完全控制,并允许执行脚本,所以必须使该文件夹的安全控制更严格一些。我建议将 Scripts 文件夹重新定位到新的 webroot 所在的驱动器,并对其重命名。这样如果有人想探查服务器中有没有名为“Scripts”的文件夹,并在找到此文件夹后试图上传负载,那么这种攻击行为将被挫败。

用 IIS 设置并路由子域

问:在 W2K 服务器上,怎样用 IIS 5.0 创建子域?如果我让 BerAult.Com 在根 web 站点,并希望让 Technical.Bertault.com 带我到一个新文件夹或者子站点,应如何设置它?我所能找到的全部信息都是关于如何将 Berault.com/technical 配置成 URL 的。

答:您的 web 站点体系结构及其与 DNS 的集成对于您的 IIS 安装来说当然是一个很关键的部分。正如您说的那样,为 Berault.com/technical 配置一个站点很容易,因为它实际上就是位于 Beralut.com 站点内的一个文件夹或虚拟目录。

而将 technical.bertault.com 配置为一个“子站点”则是另外一回事,这一点您已知道了。按照设计,URL 的构成是这样的:http://domainname.com 应是 http://hostname.domainname.com 的父级域。这是 DNS 的设计使然,DNS 要求 URL 中使用这种名称空间结构。不过,就一个 web 服务器而言,它们是两个完全不同的概念。IIS 并不认为它们之间有什么关系。

因此,您应将 technical.berault.com 作为一个完全不同的 web 站点来看待。在 DNS 中,您可以为 technical.berault.com 添加一条 A 记录,此记录给 technical.berault.com 分配一个与 berault.com 相同的 IP 地址。然后,您可以创建一个 ASP 页,用它检查传入的 URL 并相应地路由请求。如果您想让“子域”路由到您主 web 站点内的一个文件夹,这一点将非常有用。或者,您也可以创建一个全新的 web 站点,用一个新的 IP 地址(它必须在 DNS 中配置)或用 IIS 内的主机标题来标识它。

您可以为您的“子域”创建一个新的 web 站点,使其主文件夹作为其父级域内的一个位置。虽然这样做是可行的,但我建议您不要这样做,因为这样您会发现同一内容将有两个管理界面,而且没有办法使它们保持同步。这样会导致对配置和安全问题进行故障诊断时出现困难。

屏蔽 HTTP 标头(内容-位置)中的 IP 地址

问:在对 IIS 5 服务器进行端口扫描时,它返回以下信息:

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: http://192.168.0.44/Default.htm
Date: Tue, 19 Feb 2002 20:19:20 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Tue, 19 Feb 2002 20:04:10 GMT
Content-Length: 16

问题是,Content-Location(内容-位置)标头暴露了 web 服务器的内部 IP 地址。这就为黑*客大开了方便之门。是否有办法让 IIS 在扫描过程中不返回服务器的 IP 地址?

答:有,您可以配置 IIS 4 和 IIS 5,使 Content-Location 字段返回 URL 而非 IP 地址,如下所示:

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: http://homer.test.bh.tm/Default.htm
Date: Tue, 19 Feb 2002 20:27:20 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Tue, 19 Feb 2002 20:04:10 GMT
Content-Length: 16

要做到这一点,您必须将 UseHostName 这一值添加到 Metabase 中的 W3SVC 键上。最简单的办法是使用默认情况下安装在 InetpubAdminscripts 中的 ADSUTIL 程序,如下所示:
adsutil set w3svc/UseHostName True

然后,您必须重新启动 web 服务。有关更多信息,请参阅 Microsoft 知识库文章 Q218180
更改 CGI 脚本超时时间

问:我们每天都要运行一个 CGI 脚本。开始时它运行一会儿,接着我们就会收到一条消息说“超过了 CGI 的时间限制”。CGI 的时间限制是多长,是否有办法改变它?

答:IIS 确实有一个与 CGI 进程关联的超时限制,默认设置为 300 秒(5 分钟)。此设置可以在用户界面上更改。此设置只在 WWW 服务的 Master 属性中可以看到,所以不易找到它。打开“IIS 管理单元”,右键单击您的服务器并选择“属性”。在选定 WWW Service Master Properties(WWW 服务主属性)后,单击 Edit(编辑)。单击 Home Directory(主目录)选项卡,然后依次单击 Configuration(配置)选项卡、Process Options(进程选项)选项卡,如图 1 所示。在这里可以看到 CGI 脚本超时设置。
如果您的浏览器不支持内嵌框,请单击此处 在单独的页中查看。

图 1 Application Configuration(应用程序配置)中的 Process(进程选项)选项卡

从 IIS Lockdown 工具中提取 URLScan

问:我们希望在服务器上安装 URLscan,但又不想运行 IISLockdown 工具。以前,Microsoft 是分别提供这些工具的,而现在它们都在同一个安装中。怎样才能既安装 URLScan 又不运行 IISLockdown 呢?

答:您刚才说过,Microsoft 以前是分开发行 IIS Lockdown 工具和 URLScan 的。IIS Lockdown 工具的 2.1 版在更新之后包含了 URLScan 2.0。在绝大多数情况下,IIS Lockdown 向导应在 IIS 服务器上运行。这样将执行若干个重要步骤以加强您服务器的安全,并将配置和安装 URLScan ISAPI 筛选器。

可以从 IIS Lockdown 安装包中提取 URLScan 组件,并在不运行 IIS Lockdown 的情况下安装它。这将为您提供 URLScan 的 2.0 版本,而不是它的 1.0 版;在本文脱稿时,1.0 版仍可以作为一个单独的可下载软件从 Microsoft 的下载页和通过许多 Microsoft 知识库文章来下载。
如想从 IISLockdown 2.1 中提取 URLScan,请首先下载 IISLockdown 2.1。然后在该工具的位置打开一个命令提示窗口并键入以下命令:

iislockd.exe /q /c /t:c:lockdown_files

此命令将从安装包中提取这些文件。然后,您就可以将 URLScan.dll 安装为一个 WWW Master 属性级别的 ISAPI 筛选器。确保存放 URLScan.ini 文件的位置与存放 URLScan.dll 文件的位置相同。
您很可能需要为您的服务器手动配置 URLScan.ini 文件。我们建议,只有经验丰富的管理员才可以编辑 URLscan.ini 文件。请阅读从 IIS Lockdown 实用工具中提取的 URLScan.doc 文件中的使用说明。运行 IISLockdown 工具向导来安装 URLScan 的好处之一是,它为您配置了 URLScan.ini 文件。
使用 URL 中的参数重定向请求

问:是否有办法使用 URL 中的参数作为重定向的一部分,而不使用 ASP?换言之,当人们访问我们的站点 www.oursite.com?A=1 时,我们想将此请求转发到 www.theirsite.com?A=1 站点。

答:在 web 站点、目录、虚拟目录或文件的属性中,您可以将文件的位置指定为“本地”、在“另一系统上”(带一个 UNC 路径名),或者将请求重定向。如果您选择重定向请求,您可能要用到鲜为人知但功能十分强大的重定向变量。就您的情况而言,您需要在 Redirect To(重定向至)文本框中输入 http://www.theirsite.com$P。$Q 替换变量将全部问号及其后的参数附加到重定向请求后。

还有许多其他的重定向变量使您能够不用编写代码就可以执行替换和其他操作。您可以在 IIS 联机帮助文件中的 Redirect Reference(重定向参考)部分找到更多有关重定向参数方面的信息。

网站统计 Statistics

  • 创建时间: 2005年1月3日 距今5062 天
  • 日志总数: 2461
  • 评论总数: 630
  • 标签总数: 654
  • 链接总数: 273
  • 最后更新: 2018-8-31 17:57:04
  • 您是本站第 14144396 位访客

广告区 Guǎng Gào