IIS6.0详解

IIS6.0 详解
 
IIS6.0 是微软在 WEB 浏览应用方面里程碑的改进,相比 IIS5.1 IIS6.0 不仅仅是版本号的差别,更多的是功能上的改进和增强。那么 IIS6.0 中到底有一些什么新特性呢?本文就 IIS6.0 中的一些重要特性进行介绍。

(一)改善的IIS安装方式

Microsoft Windows Server 2003 家族中的 Internet 信息服务 IIS )提供了可用于 Intranet Internet Extranet 上的集成 Web 服务器能力,这种服务器具有可靠性、可伸缩性、安全性以及可管理性的特点,可以使用 IIS 6.0 为动态网络应用程序创建功能强大的通讯平台。 IIS 6.0 提供了一些新功能来帮助组织、 IT 专业人士和 Web 管理员为单个 IIS 服务器或多个服务器上可能存在的上千个网站实现高性能、可靠性、可伸缩性和安全性的目标。 IIS 6.0 只能在 Windows Server 2003 服务器的数据中心版、企业版、标准版以及 Web 版这四种版本之中运行,不能在 Windows XP 2000 NT 上运行。
  除了 Windows 2003 Web 版之外, Windows 2003 的其余版本默认不再安装 IIS Windows 2003 Server 安装完成后,安装 IIS 有三种途径:即利用“管理您的服务器”向导、利用控制面板“添加或删除程序”的“添加 / 删除 Windows 组件”功能以及执行无人值守安装。
微软在利用“管理您的服务器”向导来安装 IIS 时较以前有了很大的改观,采用了一种新型的“安装任何部件之前总是征求用户意见”的 IIS 安装策略,在高度安全和“锁定”模式下安装。说明微软确实在认真对待安全问题;而使用控制面板中的“添加 / 删除 Windows 组件”功能比较灵活,可以自行选择组件进行安装。在 IIS 6.0 中增加了 20 多个组件,在 IIS 中取消了文档,所有文档都以帮助文件的形式发布,不再有 IISHelp 虚拟目录,而且在 IIS 6.0 网站上必须自己创建该目录。在默认情况下, IIS 只为静态内容提供服务,即 ASP ASP.NET 、在服务器端的包含文件、 WebDAV 发布和 FrontPage® Server Extensions 等功能只有在启用时才工作。

(二)增强的服务

  微软在 IIS 6.0 中对大部分模块都进行了重新设计以便利用基本 Windows 内核 HTTP.sys 。这使其具有内置的响应和请求缓存和队列功能,并能够将应用程序进程请求直接路由到工作进程,从而改善可靠性和性能。 IIS 6.0 中提供了 POP3 服务和 POP3 服务 Web 管理器,从而在 Windows 2003 Server 上可以不用安装 Exchange Server ,也可以接受和发送邮件。
  统一描述、发现和集成协议( Universal Description, Discovery, and Integration ,即 UDDI )服务是 Windows 2003 Server 提供的跟 IIS 有关的又一种新的功能,默认不安装。 UDDI 是一种产业标准,能够通过广告发布 IIS 服务器提供的 Web 服务――这里“广告”一词的含义与日常生活中的广告不同,它是指一种让客户程序(通常是 Web 浏览器)获知 Web 服务(通常是 ASP.NET 应用)各种细节的方式。 UDDI 仍在发展之中,但一些企业已经在内部采用 UDDI ,以便开发者将自己的代码发布给其他协作开发的人。最后一种重要的支持服务是后台智能传送服务( Background Intelligent Transfer Service ,简称 BITS )。 BITS 是一种后台文件传输机制和队列管理器,也称作节流传输服务。 BITS 控制文件请求,减少带宽消耗并改善最终用户的体验。针对 IIS 启用 BITS 可保证 Web 服务器的服务质量,如果没有 BITS ,当 100 个用户同时下载一个 500 MB 的文件,服务器的带宽可能就被消耗殆尽,导致其他访问 Web 服务的用户频繁地遇到超时错误。

(三)全新设计的内核

   IIS 4.0 IIS 5.0 从体系结构上来看,其内核都是一样的,采用 TCP/IP 内核,前者应用程序为 MTX.exe ,后者为 DLLhost.exe 。它们都是在用户模式下运行的发布 Web 内容的应用程序,或者在 Inetinfo 进程之内以 System 账号运行,或者在 Inetinfo 进程之外以 IWAM 用户运行,其体系结构如图 1 所示。
1 IIS4.X 以及 IIS5.X 体系结构
IIS 6.0 开始,为了使 IIS 不仅能够轻松地支持 1000 Web 网站,而且能够支持 10000 个甚至更多的网站,同时还要提高 Web 服务器的安全性和可靠性,微软放弃了原有的 IIS 内核,重新构造了一个内核 http.sys 内核,其体系结构如图 2 所示。
2 IIS6.0 体系结构
IIS 6.0 中可以将监听请求、创建和监视 Web 网站、运行 Web 服务等不同的任务隔离了开来。新的设计极大地改善可用性、安全和性能; IIS 6.0 的内核体系主要建立在 W3SVC http.sys 以及 W3Core 三个组件之上。
1 W3SVC
   W3SVC 组件的任务是根据配置数据的设置创建和监视工作线程,由工作线程运行 Web 网站应用。在 IIS 5.0 中与 IIS6.0 中的 W3SVC 组件最接近的是 IIS 管理服务, IIS 管理服务是 Inetinfo 的一部分,如果 Inetinfo 出现问题, IIS 管理服务也会出现问题,出现问题后就无法重新启动 IIS 管理服务。在 IIS 6.0 W3SVC 作为一个独立的进程运行, Web 应用出现问题后不会影响其它服务。 W3SVC 一直处于运行状态,实时监视 Web 应用的状况,一旦出现异常情况可根据用户指定的参数监视和重新启动应用程序。
2 http.sys
   Windows Server 2003 家族成员中的超文本传输协议( HTTP )栈以一个名为 HTTP.sys 的内核模式设备驱动程序形式来实现,它是网络子系统的一部分。 IIS 6.0 体系设计中最重大的变化是加入了 http.sys 驱动程序, http.sys 驱动程序的任务是处理 HTTP 请求,它为 HTTP 服务器应用程序提供高性能的连接性,而且它在内核模式下执行操作。将处理 HTTP 请求的任务从 IIS 5.0 IIS 4.0 的用户模式改变到 IIS 6.0 的内核模式标志着新一代 IIS 服务器的诞生。
   IIS 6.0 https.sys 内核模式驱动程序极大地减少了用户模式和内核模式之间的切换次数。 http.sys 监听着 HTTP 请求,决定由哪一个用户模式的进程来处理该请求,或者是否由驱动程序本身返回用户请求的内容。另外,微软在 http.sys 驱动程序中采用了许多优化的算法,使其能够将请求直接转发到适当的工作进程。
3 W3Core
默认情况下, IIS 6.0 在工作进程隔离模式下运行,在这种模式中,对于每一个 Web 应用, IIS 6.0 都用一个独立的 w3wp.exe 的实例来运行它。 w3wp.exe 也称为工作进程( Worker Process ),或 W3Core 工作进程隔离模式不存在进程内( In-Process )应用程序存在的问题,有效地提高了可靠性和安全性。 w3wp.exe 的所有实例都在一个权限有限的“网络服务”账号下运行,必要时,还可以将工作进程配置成用其他用户账号运行。如果缓冲区溢出攻击成功入侵了一个 Web 应用,攻击者只能访问当时运行工作进程的账号有权访问的资源,默认的网络服务账号不能写入 Inetpub 文件夹,执行权限也极其有限,所以象 CodeRed 蠕虫之类的攻击根本不可能得逞。

(四)带宽和连接限制

  在 IIS 5.0 IIS 4.0 中不能直接操作服务器的网卡,虽然可以通过 Web 网站属性对话框的“性能”来允许启用带宽限制功能,指定允许网站占用的最大带宽,但是这个功能不一定起作用。 IIS 6.0 启用带宽限制功能后,必须在服务器中安装 QoS 数据包计划程序,该安装为自动安装,在安装 QoS 数据包计划程序期间 Windows 2003 Server 会临时地停止所有网络服务。配置好 QoS 数据包计划程序后,才能设置带宽限制,通过配置给定站点的网络带宽,可以更好地控制该站点允许的流量。
带宽限制可以是针对所有网站,也可以是针对单个网站的。设置全局 WWW 服务最大带宽不会替代已为服务器上的单个网站设定的最大带宽。单个站点根据已设置的最大值来限制带宽,而全局设置限制所有其他未限制带宽的网站。另外,全局 WWW 服务带宽限制设置不会影响 FTP 站点或 FTP 服务。
II6 中允许设置的最小带宽限制值是 1024 Byte/ 秒。对于“正常”的负载,服务器使用的带宽不应超过其全部可用带宽的 50% 。如果服务器有较大的高峰负载,请将正常负载保持在 50% 以下,剩下的带宽可在高峰期使用。
IIS6.0 中可以将 Internet 信息服务( IIS )配置成允许数目不受限制的并发连接,或限制该网站接收的连接个数。如果连接趋向于波动,则将“网站连接”设置成不受限制。如果为了保证系统性能,可以将站点限定在特定的连接数,网站的并发连接数是衡量网站性能的一个指标。

(五)网站标识与ID

网站标识由 IP 地址、 TCP 端口以及主机头名(可选)组成,它使名称与静态 IP 地址相关联从而主控多个站点。将主机名添加到名称解析系统( DNS )中,以便当有请求到达服务器时, IIS 使用主机名来确定客户端请求的站点,该主机名在 HTTP 头中传递。
对于 IIS 服务器来说,唯一标识一个网站的不是网站的名称,而是网站的 ID 数值。当在 IIS 5.0 IIS 4.0 中创建一个新网站时, Web 服务器将下一个可用的数字顺序号指定给网站,即 Web 服务器给默认站点指定的数字是 1 ,下一个网站是 2 ,接下来是 3 4 ,等等),这个数字就是网站的唯一 ID 。如果要访问一个网站的日志文件,首先必须知道该网站的 ID ,因为日志文件保存在 W3SVC< 网站的 ID 编号 > 目录。如果 Web 服务器上运行着多个网站,仅仅依靠日志文件的路径名称根本无法判断哪一个日志目录属于哪一个网站,而且在编写管理脚本和修改配置数据文件时,必须知道网站 ID
IIS 5.0 IIS 4.0 中,从 IIS 管理器无法直接找到网站的 ID 编号。而 IIS 6.0 的管理器在网站清单中增加了一个新的“标识符”列,该列的内容就是网站的 ID 编号。网站的 ID 是根据网站的名字计算出网站的 ID ,例如 130023491 ,该网站对应日志文件路径为“ W3SVC130023491 ”。在 IIS6 中通过修改注册表可以使用原有的网站 ID 顺序生成方式,也可以禁用 IIS 6.0 新式的 ID 生成方式,禁用后顺序生成是在现有的 ID 基础上开始累加。如要要禁用现有的 ID 生成方式而改为顺序生成 ID 方式,其具体的操作步骤是:找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetMgr\Parameters 注册子键,创建一个 REG_DWORD 值“ IncrementalSiteIDCreation ”,将它设置为十进制“ 2 ”。

(六)安全以及安全策略

   IIS 6.0 默认不安装在 Windows 2003 Server 服务器中,即使按照缺省方式安装, Web 服务器只能提供静态内容服务。除此之外 Windows Server 2003 还有一个新的组策略“禁止安装 IIS ”,有了该组策略,可以禁止 Windows 2003 在活动目录( AD )森林中禁止不准备作 Web 服务器用的机器上安装 IIS 6.0 ,防止网络上出现根本无用的、不安全的 IIS 6.0 服务器。  要想在 IIS 6.0 上运行程序,必须使用 IIS 6.0 的一种新特性―― Web 服务扩展( Web Service Extension )。
Web 服务扩展管理中可以看到“所有未知 ISAPI 扩展”和“所有未知 CGI 扩展”默认情况下是禁用的,意味着除非明确地允许一个应用在 IIS 6.0 上运行,否则它就不能运行。如果一个用户请求了某个没有启用的文件, IIS 6.0 将向用户返回 404 错误――文件或目录没有找到,同时在 W3SVC 日志中记录“ 404.2 文件或目录无法找到:锁定策略禁止该请求”。另外,“ systemroot\system32 ”下有一个 iisext.vbs 脚本,它也能够配置并管理运行带有 IIS 6.0 Windows Server 2003 Web 服务扩展、应用程序和单独的文件。管理员可以使用此脚本来启用和列出应用程序;添加和删除应用程序依存关系;启用、禁用和列出 Web 服务扩展;以及添加、删除、启用、禁用和列出单个文件。
  另一个安全方面的改进之处是 IIS 6.0 允许指派一个加密服务提供者( Cryptographic Service Provider CSP ),能够将基于硬件的安全套接字层( SSL )加速器集成到 IIS 6.0 ,从而把加密任务从服务器的通用 CPU 转移到了专门为加密操作而优化的专用设备,有利于提高性能和可靠性。除此之外在 IIS6.0 中还有其它一些安全改进:
1 )以具有低级访问权限的账户运行。 IIS 工作进程在访问权限极少的用户上下文中运行。这大大减少了潜在攻击的影响。
2 )提高了 ASP 运行程序的安全性。所有的 ASP 内置功能总是以具有极少访问权限的账号 IUSR_computername 运行。
3 )运行可执行文件的限制。为了运行系统文件夹中的大多数可执行文件(如 cmd.exe ),必须是 Administrators 组、 LocalSystem Interactive Service 账号的成员。该限制限制了对 Administrators 的远程访问,因此匿名用户无法运行可执行文件。
4 )修补程序管理。对于修补程序管理,管理员可在不中断服务的情况下安装最新的安全修补程序。
5 IIS 只为对具有已知文件扩展名的文件的请求提供服务。如果请求内容的文件扩展名未映射到已知的扩展,则服务器拒绝请求。
6 )内容的写保护。在默认情况下,拒绝匿名用户(以 IUSR_computername 账号运行)对 Web 内容进行写入访问。
7 )超时和限制。在 IIS 6.0 中,默认设置是安全而主动的,这样可最大限度地减少因以前太宽松的超时和限制而造成的攻击。
8 )上载数据限制,管理员可以限制能上载到服务器的数据。
9 )缓冲区溢出保护,工作进程会检测缓冲区溢出,并在检测到时退出程序。
10 )文件验证, IIS 在将请求发送到请求处理程序( ISAPI 扩展)之前会验证请求的内容是否存在。
11 )脚本资源访问:该权限允许访问 ASP 页脚本和其他脚本的“源代码”,它是新增功能,且在默认情况下被禁用。它可在选择了“读取”或“写入”权限时可用。

(七)异步CGI处理

IIS 5.0 IIS 4.0 以同步方式运行 CGI Common Gateway Interface ,通用网关接口)进程,这实际上意味着每次只有一个线程能够访问一个 CGI 进程,所以 IIS 5.0 IIS 4.0 CGI 支持的可伸缩性不佳。 IIS 6.0 能够异步运行 CGI 进程,所以如果一个线程调用了一个 CGI 应用程序,它不必再等待 CGI 进程处理完毕和返回信息。异步 CGI 改善了 IIS 服务器运行 CGI Web 应用程序的性能,使得 IIS 能够运行更多执行关键任务的基于 CGI 的应用程序。
CGI 程序在 Web 服务器接收到包含 CGI 程序名和程序所需参数的 URL 时执行。如果将 CGI 程序编译为可执行 (.exe) 文件,则必须提供包含程序执行权限的目录,以便用户可以运行程序。如果 CGI 程序以脚本形式(例如 Perl 脚本)编写,则既可为目录提供执行权限,也可为其提供脚本权限。要使用脚本权限,必须将脚本解释程序标记为脚本引擎。
在默认情况下 IIS_WPG 组不具备启动 CGI 进程的权利。如果创建了新账号并将其添加到 IIS_WPG 组以运行工作进程标识,还必须授予此账号两种启动 CGI 进程的用户权利。这些用户权利是“调整进程的内存配额”和“替换进程级令牌”。 为更加安全起见, Web 服务器不将命令解释程序的特殊字符传递给映射的 CGI 应用程序。默认情况下,“ ( , ; % < > ”字符不能包含在调用 CGI 应用程序的 URL 中。

(八)应用程序池

   IIS 6.0 只有在工作进程隔离模式下运行时才能使用这个应用程序池功能,应用程序池是将一个或多个应用程序链接到一个或多个工作进程集合的配置。因为应用程序池中的应用程序与其他应用程序被工作进程边界分隔,所以某个应用程序池中的应用程序不会受到其他应用程序池中应用程序所产生的问题的影响。通过创建新的应用程序池以及为其指派网站和应用程序,可以让服务器更加有效、可靠,同时也可以让其他应用程序一直保持可用状态。
    在应用程序池的“属性”对话框有“回收”、“性能”、“运行状况”以及“标识”四个标签。在工作进程隔离模式中, IIS 可以配置成定期重新启动应用程序池中的工作进程,从而更好地管理那些有错误的工作进程。这确保了池中的应用程序运行正常,并且可以恢复丢失的系统资源。默认情况下,应用程序池每隔 1740 分钟( 29 小时)回收一次。 W3SVC 根据“运行状况”页的选项来判断应用程序池运行是否正常。在默认情况下,当 IIS 6.0 回收一个池时,它会使用一种称为“ overlapped recycle ”的回收技术。在这种回收模式下,失败的工作进程仍会保持运行状态,同时创建一个新的工作进程。

(九)配置数据

  在 IIS 5.0 IIS 4.0 中,配置数据库采用二进制文件结构,而在 IIS 6.0 中的配置数据由 Metabase.xml mbschema.xml 这两个 XML 文件构成。 Metabase.xml 包含 IIS 6.0 服务器的配置信息, mbschema.xml 包含配置数据的模式定义。按照这种方式保存配置数据时, IIS 6.0 利用系统的机器码( Machine Key )加密配置数据的某些部分,因此,配置数据的副本只对创建该副本的机器有用,在 IIS 管理器还允许保存配置数据副本。在 IIS6.0 中还可以使用命令行脚本 iisback.vbs (在 systemroot\System32 中)创建和管理远程或本地计算机的 IIS 配置的备份副本,管理员可以使用此脚本工具创建其 IIS 配置的备份副本,从备份副本还原 IIS 配置以及列出和删除备份副本。这样可以先精心配置一个模板,然后用它来创建和配置新的网站,而且在出现问题时,配置信息副本还可以用来恢复网站的设置。
由于 IIS 6.0 配置信息是可移植的,因此便于升级。 IIS 6.0 的配置数据是标准的文本文件( XML 文件),可以用记事本之类的文本编辑器打开和编辑。如果修改了 IIS 5.0 IIS 4.0 的配置数据,有时必须重新启动 IIS ,如果系统上网站的数量很多,可能需要不少时间。 IIS 6.0 支持一种“运行时允许编辑”功能,这样 IIS 6.0 几乎立即就能根据配置文件的设置作相应的修改,根本无需重新启动。
IIS6.0 中提供了配置文件历史版本目录,在进行配置 / 还原时可以很方便的恢复到某个版本的配置。在 IIS6.0 配置中还提供了对某一个文件打开时直接进行授权――即在 IIS 管理器中选择一个文件夹右键单击,然后选择“权限”菜单打开文件夹的“安全”对话框。在该对话框中可以设置文件夹的 NTFS 授权,不必再离开 IIS 管理器,不但节约时间,而且非常方便。
  在 IIS6.0 中对“目录安全性”页下的“安全通信”允许配置 SSL 、证书信任列表( CTL )、客户证书。在 IIS 5.0 IIS 4.0 中,除非在 Web 网站上安装一个证书,否则不能访问该属性页。 IIS 6.0 不必在 Web 服务器上安装证书也可以访问和使用该属性页。

(十)通配符应用程序

    IIS 5.0 IIS 4.0 ISAPI 筛选器可以针对所有进入 Web 服务器或 Web 网站的请求执行操作的代码。 IIS 6.0 提供了一种更加灵活的新型机制来提供通常由 ISAPI 筛选器提供的服务,它就是 ISAPI 截取器( Interceptor ),或者称为通配符应用程序( Wildcard Application )。在 “应用程序配置”对话框中可以将一个或多个 ISAPI DLL 配置成通配符应用程序,对于每一个接收到的请求, IIS 6.0 将调用这里列出的各个通配符应用程序。除了针对所有网站配置通配符应用程序,还可以针对单个网站或在目录层次上配置通配符应用程序。由于这些 ISAPI 截取器是标准的 ISAPI 应用程序,它们具有普通 ISAPI 应用程序具备的所有功能,包括访问消息正文的能力。
  通配符应用程序可以做到开发者要做的任何事情,诸如 URL 定制、验证身份、记录特殊的日志信息、检测攻击企图、创建内容,等等。通配符应用程序结束处理后,它把请求转交给适当的处理引擎(例如处理 ASP 页面的 asp.dll ),由处理引擎进一步处理请求。另外,通配符应用程序还可以通过调用为 ISAPI 应用程序新增的 ExecuteURL 功能,将请求传递到同一个应用程序池中的任意页面。

(十一)日志功能

  与 IIS4.x IIS5.x 相比, IIS 6.0 在日志功能方面有许多重大的改进。在 IIS 6.0 中,记录日志的功能由 http.sys 实现, http.sys 在内核模式下运行。这就加快了日志写入速度,同时避免了多个工作进程争用同一日志文件。当 http.sys 遇到错误时,不能将日志信息写入 Web 网站的日志,这时 http.sys 会把事件写入一个新的日志文件 httperr.log
  在排解故障、优化 IIS 6.0 的过程中, httperr.log 日志文件是十分重要的。默认情况下, httperr.log 文件保存在 system32/logfiles 目录。在 httperr.log 日志文件中可以找到的信息包括:所有的 503 (服务不可用)错误,空闲连接超时,解析 URL 时出现的各种错误,最后 10 个提交给失败的应用程序池的请求。
   IIS 6.0 提供了“集中的二进制日志记录”,它是多个网站用来向单个日志文件写入不带格式的二进制日志数据的过程。当启用时,运行 IIS Web 服务器上的所有网站都将数据写入单个日志文件中,日志文件的扩展名是“ .ibl ”。对于有大量网站的公司,创建成百上千个带格式的日志文件以及将日志数据写入磁盘中的过程可快速消耗运行 IIS 的服务器上宝贵的 CPU 和存储器资源,从而产生性能和可伸缩性问题。要启用二进制日志功能,只要把配置文件的 W3SVCC/CentralBinaryLoggingEnabled 条目设置成 ture 1 )即可。微软的 Log Parser 2.0 工具能够读取二进制日志文件并生成报告,它还能够读取前面介绍的 httperr.log 文件并生成报告。
   IIS 5.0 IIS 4.0 IIS 管理器允许在指定日志文件路径的时候输入一个远程服务器的通用命名规范( UNC )的路径,但 Web 服务器实际上不会把日志保存到远程服务器。 IIS 6.0 可以通过网络,使用完整的通用命名约定 (UNC) 路径将日志数据写入到远程共享上。

(十二)默认设置的变化

  在 IIS 6.0 中许多配置项目的默认值已经与 IIS 5.0 IIS 4.0 的不同。
1 )默认的连接超时时间已经从 900 秒减少到 120 秒。
2 EnableParentPaths 设置默认关闭。
3 )如果某种文件类型没有在 MimeMap 配置属性中映射,所有对该类文件的请求将被拒绝。
4 默认情况下,所有工作进程会在 1740 分钟后自动回收,回收期间会话信息可能丢失。
5 )运行 CGI 应用程序的用户上下文必须是一个 IIS_WPG 组的成员。
6 Windows 2003 不安装 Collaboration Data Objects for Windows NT Server CDONTS )。
7 ASP 请求默认限制在 204800 字节之下,每一个域限制在 100 KB 之下。
8 )默认情况下, http.sys 仅接受标题小于 16 KB 的请求。
9 )在新安装的 IIS 6.0 中的子验证,在默认情况下不再启用。
  本文从十二个方面介绍了 IIS6.0 的一些新功能和特性, IIS6.0 的体系结构设计以及功能提升等方面具有突破性意义,与 IIS4.0 IIS5.0 相比是一个里程碑,在 IIS6.0 中还有很多实用的功能和新特性,读者朋友可以亲自去体验 IIS6.0

你可能感兴趣的:(职场,详解,休闲,IIS6.0)