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

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


2005-09-20 08:45:17 5,464 0 发表评论 字体: 作者:C.K.

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

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

缓存溢出攻击事件中术语“在进程以内”与“在进程以外”的区别

问:能否澄清一下不同运行方式之间的区别所在?

在进程以内运行的应用程序与在进程以外运行的应用程序相比,如果遭到缓存溢出攻击的话,分别将会出现何种情况?

答:我始终认为“在进程以内”这一术语存在一些混淆。所有应用程序均在某个进程中运行,因此,实际上并不存在所谓“在进程以外”运行的应用程序。然而,我们经常在有关IIS应用程序的参考文献中见到这个术语,那么,它究竟代表何种含义呢?在IIS 4与IIS 5.x中,包含一个名为inetinfo的进程。当Web应用程序“在进程以内”运行时,该应用程序将在inetinfo进程内部运行。对于IIS 4应用程序来说,缺省情况下,应用程序将在inetinfo进程内运行。

与此相对应,“在进程以外”运行的应用程序是指那些并非在inetinfo进程中运行的应用程序。对于IIS 4,“在进程以外”运行的应用程序宿主于一个名为MTX的进程;对于IIS 5.x,此种应用程序则宿主于一个名为dllhost的进程。

所有进程均在某个用户帐号的安全环境中运行。Inetinfo进程在System帐号下运行。MTX(IIS 4)和dllhost(IIS 5.x)则在IWAM_帐号下运行。

现在,我们已经对回答您的问题所涉及的相关概念进行了解释。在一次成功的缓存溢出攻击事件中,攻击者可能会在托管失败应用程序的进程安全环境中运行相关代码。因此,如果您的应用程序在进程以内(在inetinfo进程中)运行,攻击者将在具备全面服务器访问权限的System安全环境中运行。如果您的应用程序在进程以外(在MTX或dllhost进程中)运行,攻击者将在仅仅具备有限服务器访问权限的IWAM帐号安全环境中运行。

需要特别注意的是,在缺省配置方案中,IIS 5按照中等应用程序保护设置(在进程以外模式下采用池分配方式)“在进程以外”运行所有应用程序。由于前面所提到的原因,这种运行方式与在进程以内运行应用程序相比要安全可靠得多。与缺省设置相比,由于通过System帐号访问服务器在IIS 5上所导致高发性缓存溢出攻击使服务器极易遭受攻击。在针对IWAM与IUSER帐号应用严格限制条件的同时,通过运行IIS Lockdown工具还可实现额外的安全性。

顺便提及一下,(作为Windows .NET Server 2003的组成部分之一)IIS 6采用这样一种配置方式,即在缺省的工作进程独立模式下,缓存溢出攻击根本无法通过具备高级权限的用户帐号对服务器进行访问。

如何在重建站点后继续使用原先的日志文件

问:我有一个与IIS元数据库文件相关的问题。当您在IIS 5服务器上创建一个新的Web站点时,日志文件夹将随该Web站点一同创建。IIS通过增量方式对这个文件夹进行命名。这种方式有效避免了日志文件夹命名不当或遭到意外破坏的情况。然而,当您删除并重新安装一个‘站点’时,您将丢失所有先前使用的元数据。同时,日志文件夹位置也将随之丢失。此文件夹现在将是按照增量方式最后创建的日志文件夹。[如果前一个取值为W3SVC8,那么,当前日志文件夹应为W3SVC9]。请问是否能够通过某种方式对元数据库进行编辑,以便使IIS将站点属性指向原有日志文件夹名称?

答:您描述了一个非常有趣的问题,但是您所建立的假设需要进行澄清。是的,IIS确实创建一个日志文件夹,通常情况下,这个文件夹是c:windowswinntlogfiles目录。同时,正如您敏锐观察到的那样,如果删除并重建一个Web站点,日志文件夹名称将发生变化。然而,IIS并非为避免与原先日志文件产生冲突而采用增量方式对日志文件夹进行命名。与此相反,用以保存日志文件的文件夹名称是基于元数据库中所存储的Web站点“站点编号”–有时也称作实例编号–生成的。您所创建的每个站点均拥有一个独立编号,当您每次创建新的Web站点时,这个编号将依次递增。您可以通过MetaEdit工具清楚的观察到这一点,该工具以文件夹1、2、3的形式(此种情况下为元数据库键值)来显示各个Web站点,通常情况下,1代表缺省Web站点,2代表管理Web站点,以此类推。(具体情况请查看图1)。

图1. MetaEdit用户界面

由此可见,如果您拥有1、2、3三个站点,当您删除站点2并希望通过从IIS控制台创建一个新的Web站点来“重建”原有站点时,IIS将为其分配下一个取值最大的站点编号,当前情况下为5。此后,日志文件将被放置在名为w3svc5(而非w3svc3)的文件夹中。

一旦创建完毕后,由于其它键值(如站点根路径)需要对其进行引用,因此,建议您最好不要对站点ID进行修改。在这种情况下,您只需将日志文件从原先使用的日志文件夹中复制到新建日志文件夹中。

然而,如果您通过脚本而非用户界面来创建Web站点的话,您可以指定希望针对“还原”Web站点所使用的站点ID。通过此种方式,您可以实现预先期望的目标。您可以从InetpubAdminscripts文件夹中找到一个缺省安装的名为mkw3site.vbs的脚本。在记事本或其它文本编辑器中打开这个脚本以查看其中所使用的语法,您会发现其中的参数之一为Sitenumber。这个参数允许您使用自己指定的站点编号而非通过IIS控制台以增量方式确定的下一个站点编号来创建Web站点。

如何在IIS上运行除ASP以外的其它类型脚本

问:我们希望在自己的IIS服务器上运行PHP和Perl程序,但我们始终无法找到允许这些脚本程序正常工作的正确方式。我们手中拥有大量非常实用的脚本,但如何才能允许IIS运行除ASP以外的其它类型脚本呢?

答:Microsoft公司在Windows 2000资源工具包中提供一种版本的Perl解释程序,但如需获取最新版本且功能最为完善的解释程序,您应从站点http://www.activestate.com/上下载该产品的最新发布版本。从那里,您将能够获得一个称作ActivePerl的软件包,该软件包中包含能够针对.pl和.plx文件创建应用程序映射关系的安装例程,从而允许您对上述类型的脚本文件进行管理。换言之,如果您希望针对所有脚本使用.pl文件类型,那么,您可以删除针对.plx文件的应用程序映射关系。在条件允许的情况下,您应尽可能使用perl.dll解释程序来替代perl.exe解释程序以获得更加优异的性能与可伸缩性。除此之外,您还可以从站点http://www.iisanswers.com/Top10FAQ/t10-installperl.htm上以及编号为Q245225的知识库文章中获取有关这一主题的操作指导文章,
您可以从站点http://www.php.net/上下载PHP解释程序以及大量相关文档与在线资源。
针对java应用程序的JRUN可以从站点http://www.macromedia.com/software/jrun上获取。
ASP.net可以通过站点http://gotdotnet.com/Windows更新服务获得。

如何检测哪台计算机上安装了IIS

问:我想知道是否存在一种工具能够检测出某台PC机上是否安装了IIS。我们目前拥有3000多台PC,我需要通过一种方式来确定哪些计算机上安装了IIS。

答:Microsoft提供了两种允许您对子网进行扫描的工具。HFNetChkMicrosoft Security Baseline Analyzer(MSBA)将在您的网络中对所有装有Microsoft网络客户端和文件与打印共享服务,以及正在运行服务器、工作站和远程注册表服务的系统进行扫描,以标识出“特定”类型的系统。如果这些服务无法正常工作,您还可以借助诸如fport(这种工具可以从站点http://www.foundstone.com/上进行下载,它将告诉您网络中各个系统上有哪些端口处于打开状态)之类的工具进行端口扫描。当然,由于IIS能够对用户所选择的任意端口进行监听,因此,您无法通过这种端口扫描操作来判断与每个端口相关联的服务;尽管如此,根据经验判定,如果80端口处于可用状态,那么,它很可能正在被IIS使用。来自Foundstone公司的另一种免费实用工具Superscan能够以“标语”形式显示出由您所连接到的服务返回的信息。这项细微改进能够快速完成网络扫描并报告所发现的内容。

除以上所介绍的方法外,当用户通过自己的帐号进行登录时,您还可以从用户的登录脚本中测试出IIS是否存在。凭借Internet上针对这一目的所提供的各种选择方案与可用工具,您将实现一个良好的开端。

在添加Internet服务后是否需要重新应用热修补程序和服务软件包?

问:我们在Windows 2000服务器上安装了IIS,但没有安装任何其它类型的Internet服务。现在,我们需要为一个要求从服务器上发送电子邮件的Web应用程序添加SMTP服务。如果我们添加SMTP服务的话,是否需要重新应用最新的服务软件包和热修补程序?

答:在Windows NT 4.0中,当您向操作系统中添加诸如SMTP之类的服务时,您需要重新安装服务软件包和热修补程序。在Windows 2000中,这种情况得到的明显改善,当您安装软件、服务或更新程序时,通常情况下无需重新应用服务软件包。举例来说,您可以安装不含IIS的Windows 2000操作系统,并应用服务软件包x(其中x为最新服务软件包编号),此后,当您安装IIS时,其二进制(程序)版本编号将自动与服务软件包(SP)x保持相同的级别。这项特性在添加诸如SMTP之类的服务时为您减少了大量工作。然而,热修补程序和滚动升级程序又产生了另一个问题。尽管您的SMTP服务能够与SP x处在同一级别上,但您还需要重新应用与该服务相关的热修补程序和滚动升级程序。举例来说,当您卸载或重新安装IIS时,在最近应用的服务软件包发布后出现的所有IIS热修补程序与滚动升级程序都必须重新加以应用。

确保您已经应用所有必要热修补程序和服务软件包的最佳方式是在系统中使用HFNetChkMicrosoft Security Baseline Analyzer(MSBA)。这是确定需要在服务器上应用哪些热修补程序及更新程序的最可靠方式。由此可见,正确的操作过程是首先安装SMTP,之后,运行上述工具之一以确定需要应用哪些热修补程序。

重新命名IUSR帐号

问:重新命名IUSR帐号将导致何种后果?

答:IUSR帐号通常称作“Web匿名用户”帐号或“Internet来宾”帐号。IUSR帐号是一种常用的简写形式,该帐号的实际格式为IUSR_,其中,是安装IIS时所使用的Netbios服务器名称。正如您可能已经知道的那样,当IIS服务器启用匿名身份验证方式,且该服务器上存在针对特定访问请求类型具备适当NTFS权限的IUSR帐号时,系统将自动对其加以应用。

由于此帐号的名称是众所周知的,因此,为加大网络黑*客在服务器上猜测用户名称与口令的难度,建议您在那些对安全性要求较为严格的环境中对IUSR帐号名称进行修改。对于需要具备高度安全性的服务器而言,这是一项非常良好的建议,然而,有几种注意事项您必须时刻牢记。

当修改匿名用户帐号名称时,您必须同时在Internet Information Services管理器和针对本地计算机的用户与组中对其进行修改(假设针对匿名用户使用本地帐号)。如果您在用户与组中删除IUSR帐号或对其名称进行修改,但未在Internet服务管理器中分配新的匿名用户帐号,那么,IUSR帐号将会在下次重新启动系统时自动重建。我经常简单的禁用当前IUSR帐号并创建一个新的帐号,之后在Internet服务管理器中针对匿名访问分配新建帐号。如果您正在使用IIS Lockdown工具的话,请将新建用户帐号设置为Web匿名用户本地组中的成员。
当您针对匿名用户创建新的用户名称与口令时,请一定确保使用一个难以破解的口令。Windows 2000操作系统中的匿名用户帐号是一个随机生成的由14个字母与数字所组成的字符串。通常情况下,按照人的一般习惯,事后创建的口令在保密效率上要远远低于匿名用户最初所使用的口令,因此,您一定要确保创建一个不易破解的口令。

只要心中牢记这些注意事项,在修改帐号的过程中就不会节外生枝,最后,请一定不要忘记在Internet Information Services管理器中指定新的匿名用户帐号。

查看以往的专栏文章:2001年12月:“如何确保IUSR帐号安全性。”

网站统计 Statistics

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

广告区 Guǎng Gào