当前位置:web 服务器 > IIS >>

深入剖析IIS 6.0(下)

前文介绍了IIS 6.0的安装和Web服务器的新型体系结构。IIS 6.0新特性的数量多得令人惊奇,其中一些特性是如此引人注目,以至于人们的大部分注意力都被它们吸引。在这第二篇介 绍IIS 6.0的文章中,我们不仅将了解这些已成为“明星”的特性,还将关注一下IIS 6.0各种较少有人注意却同样重要的改进之处。

  一、安全

  微 
软一次又一次地做着同样一件事情——某个软件产品出了问题,饱受人们诟病,于是赶紧发布新的版本将问题解决。例如,发布Windows NT 4.0之后,因稳定性问题而饱受批评;于是微软发布了Windows 2000,新操作系统的稳定性颇受好评,但Win 2K服务器默认安装的IIS 5.0却成了巨大的安全隐患,需要下大力气加以整治才能解决问题。IIS 6.0默认不安装,如果按照缺省方式安装,Web服务器只能提供静态内容服务。因此,从这个角度看,即使以后IIS 6.0应用引擎和组件突然出现了问题,IIS 6.0还是极大地降低了安全风险。另外,Windows Server 2003还有一个新的组策略“禁止安装IIS”,有了该组策略,我们就可以禁止Windows 2003在活动目录(AD)森林中禁止不准备作Web服务器用的机器上安装IIS 6.0,防止网络上出现根本无用的、不安全的IIS 6.0服务器。不过,目前这个组策略只对Windows 2003服务器有效,不能防止Windows XP Pro和Win 2K的机器安装IIS 5.0。

  当然,由于刚刚安装好的IIS 6.0不支持动态内容,所以出现了第二个人们经常会问的问题:“为什么我的服务器不能运行ASP?”(前文提到,第一个人们经常会问的问题是:“IIS 6.0可以在Win 2K服务器上运行吗”?答案是“不”)。要想在IIS 6.0上运行程序,必须使用IIS 6.0的一种新特性,即Web服务扩展,或Web Service Extension(这个名字似乎意味着它与XML Web服务有某种关系,实际情况并非如此。)


  如果要为某个程序启用Web服务扩展,首先打开IIS管理器(在“控制面板”→“管理工具”中。以前叫做Internet服务管理器或ISM),如图一,点击“添加一个新的Web服务扩展”,启动向导创建一个新的规则。为规则指定一个名字,然后找到想要启用的执行文件。另外,\system32\inetsrv下有一个ii易做图t.vbs脚本,它也能够配置并管理运行带有IIS 6.0的Windows Server 2003的Web服务扩展、应用程序和单独的文件。管理员可以使用此脚本来启用和列出应用程序;添加和删除应用程序依赖性;启用、禁用和列出 Web 服务扩展;添加、删除、启用、禁用和列出单独文件。

 


图一

  在图一中,注意“所有未知ISAPI扩展”和“所有未知CGI扩展”这两种Web服务扩展。默认情况下,这两种扩展是禁用的,意味着除非明确地允许一个应用在IIS 6.0上运行,否则它就不能运行。如果一个用户请求了某个没有启用的文件,IIS 6.0将向用户返回404错误——文件或目录没有找到,同时在W3SVC日志中记录“ 
404.2文件或目录无法找到:锁定策略禁止该请求”。在IIS 6.0中,404.2和其他子状态代码是W3SVC日志文件的一项可选功能,用来帮助排解故障、疑难(IIS 5.0和IIS 4.0中也有子状态代码,不过不会在日志文件中记录,但可以将它们转到定制的错误页面,便于根据子状态代码执行特殊的处理)。IIS 6.0的子状态代码很有用,它们提供了描述问题的详细信息,例如:403.20,禁止访问:Passport登录失败;403.18,禁止访问:无法在当前应用程序池中执行请求的URL;404.3,文件或目录无法找到:MIME映射策略禁止该请求;500.19,服务器错误:该文件的数据在配置数据库中配置不正确。所有这些错误和其他错误都映射到定制的错误页面,错误页面不会把子状态代码发送给用户,攻击者无法获知具体的错误信息。

  另一个安全方面的改进之处是IIS 6.0允许指派一个加密服务提供者(Cryptographic Service Provider,CSP),能够将基于硬件的安易做图接字层(SSL)加速器集成到IIS 6.0,从而把加密任务从服务器的通用CPU转移到了专门为加密操作而优化的专用设备,有利于提高性能和可靠性。

  二、配置数据

  在IIS 5.0和IIS 4.0中,配置数据库采用二进制文件结构,但IIS 6.0放弃了这一做法。IIS 6.0的配置数据由两个XML文件构成:一个是Metabase.xml,包含IIS 6.0服务器的配置信息;另一个是mbschema.xml,包含配置数据的模式定义。IIS管理器提供了一项新的功能,允许保存配置数据副本,只要右击Web网站,然后选择“所有任务”→“将配置保存到一个文件”,然后指定配置数据副本的文件名字和保存路径即可。按照这种方式保存配置数据时,IIS 6.0利用系统的机器码(Machine Key)加密配置数据的某些部分,因此,配置数据的副本只对创建该副本的机器有用。

  不过,在“将配置保存到一个文件”对话框中,我们可以选中“用密码对配置进行加密”选项,然后指定密码,用密码来保护导出的配置文件。如果提供了密码,IIS 6.0将用密码来替代机器码,以后只要提供同一个密码,就可以将配置数据导入到另一个服务器。另外,我们可以使用命令行脚本iisback.vbs(在systemroot\System32中)创建和管理远程或本地计算机的IIS配置的备份副本,管理员可以使用此脚本工具创建其IIS配置的备份副本,从备份副本还原IIS配置以及列出和删除备份副本。

  有些时候,我们只要保存某个应用程序池、Web网站或虚拟目录的配置,而不是保存全部的配置信息,这时可以按照如下步骤操作:右击要保持配置信息的对象,选择菜单“所有任务”→“将配置保存到一个文件”,如图二所示,如果准备将配置数据导入到另一个服务器,必须提供加密文件的密码。

 


图二


  如果右击一个应用程序池、Web网站组或单个网站,然后选择“新建”→“应用程序池(来自文件)”,或者“新建”→“网站”→“来自文件”,或者“新建”→“虚拟目录(来自文件)”,就可以从保存的配置文件创建新的应用程序池、Web网站或虚拟目录。因此,必要的时候,我们可以只创建和配置一个对象,利用“将配置保存到一个文件”功能导出对象 
的配置信息,然后利用“新建”→“虚拟目录(来自文件)”等功能将配置信息导入到多个Web网站。这就是说,我们可以先精心配置一个模板,然后用它来创建和配置新的网站。当然,出现问题时,配置信息副本还可以用来恢复网站的设置。

  由于IIS 6.0配置信息是可移植的,它还有另外一个好处,这就是方便了升级。假设我们升级时不能直接在Win 2K/IIS 5.0上安装Windows 2003/IIS 6.0,必须换一台机器,这时就要解决如何将IIS 5.0不可移植的配置数据转移到新的IIS 6.0服务器的问题。利用IIS 6.0配置数据的可移植性,解决办法是:首先安装好新的Windows 2003服务器,为原来的Win 2K服务器做一个完整的备份,然后在Win 2K服务器上安装第二个Windows 2003服务器将它升级,导出第二个Windows 2003服务器的配置数据(用密码加密),然后将配置数据导入到新的Windows 2003服务器。新安装的Windows 2003服务器必须作一些调整,例如允许IUSR帐户等,但至少现在不必重新执行全部配置操作了。

  IIS 6.0的配置数据是标准的文本文件(XML文件),所以可以用记事本之类的文本编辑器打开和编辑。如果修改了IIS 5.0或IIS 4.0的配置数据,有时必须重新启动IIS,如果系统上网站的数量很多,可能需要不少时间,例如ISP的服务器就属于这类情况。为了解决这个问题,IIS 6.0支持一种“运行时允许编辑”功能。“运行时允许编辑”功能按照如下方式启用:在IIS管理器中,右击服务器,选择菜单“属性”,然后选中“允许直接编辑配置数据库”选项,如图三所示。启用了这个功能之后,如果我们用记事本打开配置数据文件,插入一个虚拟目录的配置,然后保存并关闭配置文件,IIS 6.0几乎立即就能根据配置文件的设置作相应的修改,根本无需重新启动。

 


图三

  既然允许直接编辑配置文件,因配置文件不合法造成的服务器、应用程序故障也必然增多。为此,IIS 6.0提供了配置文件历史版本目录,即\system32\inetsrv\history,每次修改配置数据或重新启动IIS 6.0,IIS 6.0都会在该目录中保存一份原有的配置数据。

  三、IIS管理器

  每次产品重大升级,人们都会试图从用户界面寻找令人激动的新功能。IIS 6.0的管理器确实有了变化,不过改动之处出乎意料地少。

  其中一个改动之处虽小,但很实用。如果在IIS管理器中右击一个文件夹,现在可以选择“权限”菜单打开文件夹的“安全”对话框。在这个对话 
框中可以设置文件夹的NTFS授权,不必再离开IIS管理器。虽然这是一个小小的改动,也许它今年会为全世界所有的IIS管理员总共节省数千小时的工作时间。

  右击一个Web网站,选择“属性”,转到“目录安全性”页,点击“安全通信”下面的“编辑”按钮,在这里可以找到另一个重要的改动之处——安全通信属性页允许配置SSL、证书信任列表(CTL)、客户证书

上一个:在IIS6中配置PHP以isapi模式运行
下一个:windows98不能访问windows2000的解决方法

更多IIS疑问解答:
iis5.1配置php环境问题
iis服务器 php伪静态后不能获取$_get['id']的问题
谁给我推荐好用的iis+php+mysql的整合包?不要带什么Apache的!
童鞋们啊,我想把php脚本文件转化成文档,可是装phpDocumentor之前弄了iis,可是pear一直装不起来,怎么办
iis发布php项目只能访问首页
iis已经部署好了php项目,可是别人访问项目需要数据库,那iis中怎么连接mysql数据库啊
我将*.php的文件放的IIS服务器中,在浏览器中访问改文件只能显示代码,不能显示网页,为什吗呀
asp.net+iis+win7调试问题
如何在本机上浏览asp文件,(除了装iis)本人机子老出问题,iis老停止运行
xp中安装asp问题,我想学asp要在电脑上Dreamweaver和SQL还要安装IIs可是却运行不了ASP
我安装了IIS5.1组件,但不能读取ASP文件,为什么呢?请高手帮忙解答一下,谢谢
asp iis7下数据库连接文件出问题了···
我买了一个ASP的程序,一个文件夹,程序没问题,数据库我用SQL2005连接好了,IIS也设置好了,就是连不上?
ASP的网页文件夹做好了,IIS也设置好了,数据库也连好了,怎么就是打不开网页
我的网站是用asp.net开发的,利用了伪静态的技术,空间租的是VPS,请问如果设置IIS才能让网站跑起来呢?
Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
访问www.zzzyk.com 试试
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,