摘要:IIS6.0新特性的数量多得令人惊奇,其中一些特性是如此引人注目,以至于人们的大部分注意力都被它们吸引。在这第二篇介绍IIS6.0的文章中,我们不仅将了解这些已成为“明星”的特性,还将关注一下IIS6.0各种较少有人注意却同样重要的改进之处。 一、安全 微软一次又一次地做着同样一件事情——某个软件产品出了问题
摘要:IIS6.0新特性的数量多得令人惊奇,其中一些特性是如此引人注目,以至于人们的大部分注意力都被它们吸引。在这第二篇介绍IIS6.0的文章中,我们不仅将了解这些已成为“明星”的特性,还将关注一下IIS6.0各种较少有人注意却同样重要的改进之处。
一、安全
微软一次又一次地做着同样一件事情——某个软件产品出了问题,饱受人们诟病,于是赶紧发布新的版本将问题解决。例如,发布WindowsNT4.0之后,因稳定性问题而饱受批评;于是微软发布了Windows2000,新操作系统的稳定性颇受好评,但Win2K服务器默认安装的IIS5.0却成了巨大的安全隐患,需要下大力气加以整治才能解决问题。IIS6.0默认不安装,如果按照缺省方式安装,Web服务器只能提供静态内容服务。因此,从这个角度看,即使以后IIS6.0应用引擎和组件突然出现了问题,IIS6.0还是极大地降低了安全风险。另外,WindowsServer2003还有一个新的组策略“禁止安装IIS”,有了该组策略,我们就可以禁止Windows2003在活动目录(AD)森林中禁止不准备作Web服务器用的机器上安装IIS6.0,防止网络上出现根本无用的、不安全的IIS6.0服务器。不过,目前这个组策略只对Windows2003服务器有效,不能防止windows xp Pro和Win2K的机器安装IIS 5.0。
当然,由于刚刚安装好的IIS6.0不支持动态内容,所以出现了第二个人们经常会问的问题:“为什么我的服务器不能运行ASP?”(前文提到,第一个人们经常会问的问题是:“IIS6.0可以在Win2K服务器上运行吗”?答案是“不”)。要想在IIS 6.0上运行程序,必须使用IIS6.0的一种新特性,即Web服务扩展,或WebService Extension(这个名字似乎意味着它与XMLWeb服务有某种关系,实际情况并非如此。)
如果要为某个程序启用Web服务扩展,首先打开IIS管理器(在“控制面板”→“管理工具”中。以前叫做Internet服务管理器或ISM),如图一,点击“添加一个新的Web服务扩展”,启动向导创建一个新的规则。为规则指定一个名字,然后找到想要启用的执行文件。另外,\system32\inetsrv下有一个iisext.vbs脚本,它也能够配置并管理运行带有IIS6.0的WindowsServer2003的Web服务扩展、应用程序和单独的文件。管理员可以使用此脚本来启用和列出应用程序;添加和删除应用程序依赖性;启用、禁用和列出Web服务扩展;添加、删除、启用、禁用和列出单独文件。
图1
在图一中,注意“所有未知ISAPI扩展”和“所有未知CGI扩展”这两种Web服务扩展。默认情况下,这两种扩展是禁用的,意味着除非明确地允许一个应用在IIS6.0上运行,否则它就不能运行。如果一个用户请求了某个没有启用的文件,IIS6.0将向用户返回404错误——文件或目录没有找到,同时在W3SVC日志中记录“404.2文件或目录无法找到:锁定策略禁止该请求”。在IIS6.0中,404.2和其他子状态代码是W3SVC日志文件的一项可选功能,用来帮助排解故障、疑难(IIS5.0和IIS4.0中也有子状态代码,不过不会在日志文件中记录,但可以将它们转到定制的错误页面,便于根据子状态代码执行特殊的处理)。IIS6.0的子状态代码很有用,它们提供了描述问题的详细信息,例如:403.20,禁止访问:Passport登录失败;403.18,禁止访问:无法在当前应用程序池中执行请求的URL;404.3,文件或目录无法找到:MIME映射策略禁止该请求;500.19,服务器错误:该文件的数据在配置数据库中配置不正确。所有这些错误和其他错误都映射到定制的错误页面,错误页面不会把子状态代码发送给用户,攻击者无法获知具体的错误信息。
另一个安全方面的改进之处是IIS 6.0允许指派一个加密服务提供者(CryptographicServiceProvider,CSP),能够将基于硬件的安全套接字层(SSL)加速器集成到IIS6.0,从而把加密任务从服务器的通用cpu转移到了专门为加密操作而优化的专用设备,有利于提高性能和可靠性。