小知识:为什么Windows Server 2003缺省没有安装IIS 6.0?
在过去,包括微软在内的厂商打包一系列的样本脚本,文件处理和给管理员提供的必要的便于是用的小型的文件系统许可在网络服务器默认安装程序中。然而,这样一来增加了被攻击的可能性,而且也是多种对IIS进行攻击的基础。因此,IIS6.0比其以前的版本都要安全。其中最为显著的改变是IIS6.0不是作为windows server 2003的缺省安装。
在Windows Server 2003安装IIS 6.0:
单击“开始”“控制面板”→“添加/删除程序”→“添加/删除 Windows 组件”按钮,启动“Windows 组件向导”。在“Windows 组件”列表中,选中“应用程序服务器”旁的复选框,单击“详细信息”。在“应用程序服务器”→“应用程序服务器子组件”下方,突出显示“Internet 信息服务 (IIS)”,单击“详细信息”。在“Internet 信息服务 (IIS) 子组件”列表中,选择“万维网服务”,单击“详细信息”。要添加可选组件,选中要安装的组件旁的复选框。单击“下一步”,然后单击“完成”。
图1
在解释IIS 6.0安全性配置之前,首先应该介绍一下IIS 6.0的几个不安定因素:IIS管理服务(inetinfo.exe,提供IIS的管理工作,SMTP,NNTP,FTP等服务),WWW管理服务(WAS,工作处理程序管理,组态管理),HTTP.sys(负责出来Request,提供Cache,Queue等功能),工作处理程序(W3Wp.exe)。接下来笔者围绕这些因素谈谈相关安全配置的取舍。
WEB应用程序(如ASP)缓冲池
实验证明,在给网站配备了应用程序缓冲池之后,网站的访问效率提高的几倍甚至十几倍。IIS 6.0最大的改进之一就是应用程序缓冲池允许隔离。IIS 5.0中,所有WEB应用程序只允许共用一个缓冲池。由于将web应用程序隔离在独立的单元将会导致严重的性能下降,因此没有实现应用程序隔离。
通常一个web应用程序的失败会影响同一服务器上其他应用程序。然而,IIS 6.0在处理请求时,通过将应用程序隔离成一个个叫做应用程序池的孤立单元这种设计上的改变,成倍的提高了性能。每个应用程序池中通常由一个或多个工作进程。这样就允许确定错误的位置,防止一个工作进程影响其他工作进程。这种机制也提高了服务器以及其上应用的可靠性。
这样的结构明显很不合理,造成了权限的混乱。而在IIS 6.0中,也许是微软汲取了非典期间的智慧,把各个缓冲池进行了隔离。可以设定多个缓冲池,定义它们的名字。指定在网站,目录,甚至虚拟目录中的WEB程序到任何一个缓冲池。
首先要选择到底采用IIS 5.0还是采用IIS 6.0的隔离措施。出于对旧版本的兼容性,IIS 6.0允许仍然采用IIS 5.0的方式。但两种方式不能同时启用。
点击“开始”→“设置”→“控制面板”→“管理工具”→“IIS管理器”,右键单击网站,点击“属性”→“服务”,把“以IIS 5.0的隔离模式运行WWW服务”复选框前的钩去掉。
图2
图3
[page]
单击“应用程序池”,右键单击右边空白处,点击“新建”→“应用程序池”,给新建的应用程序池设置一个名字,点击确定即可。这里所谓的依照某一模板新建,是指新建的应用程序池的属性配置与之前建好的某应用程序池。点击“网站”前的加号,展开当前目录下的所有网站,右键单击目标网站,点击“属性”→“主目录”→“应用程序池”,选定刚刚建好的缓冲池。重复这些步骤,便可为不同的网站设立不同的应用程序缓冲池。这些缓冲池是隔离开的,提高了服务器的稳定性和安全性。
图4
图5
1.右击适当的应用程序池,然后单击“属性”。出现应用程序池的属性对话框。 单击“回收”选项卡,然后设置适当的应用程序池设置。“内存回收”是等效于 memoryLimit ASP.NET 进程模型设置的应用程序池设置。它指定辅助进程可以使用的最大内存量。如果辅助进程超出了这一数量,将创建新的进程来替换它,并且当前所有请求都被重新分配给该新进程。
图6
2.右击适当的应用程序池,然后单击“属性”。出现应用程序池的属性对话框。 单击“性能”选项卡,然后设置适当的应用程序池设置。“空闲超时”是指定辅助进程或应用程序池在开始处于不活动状态后,过多长时间将其关闭。
默认情况“空闲超时”是启用的而且设置为 20 分钟。通过更改数值调节框中的值,可以指定一个不同的时间限制。“请求队列限制”指定在异常终止后等待辅助进程启动时在 ASP.NET ISAPI 中排队的请求的最大数目。默认情况下“请求队列限制”是启用的而且设置为 1000 个请求。通过更改数值调节框中的值,可以对排队的请求的数目指定不同的限制。
图7
3.右击适当的应用程序池,然后单击“属性”。出现应用程序池的属性对话框。 单击“健全”选项卡,然后设置适当的应用程序池设置。“启用 ping”是指定 ASP.NET ISAPI 检查辅助进程是否存在的时间间隔。如果没有辅助进程,则重新启动辅助进程。默认情况下“启用 ping”是启用的而且设置为 30 秒。
通过更改数值调节框中的值,可以指定一个不同的时间间隔。“关闭时间限制”是指定提供给辅助进程的用来正常关闭的时间长度。如果辅助进程在指定的时间长度内没有关闭,则 ASP.NET ISAPI 将结束该辅助进程。默认情况下“关闭时间限制”设置为 90 秒。通过更改数值调节框中的值,可以指定一个不同的时间限制。