日期:2008-10-11  浏览次数:20846 次

简介

如果你是一名使用Microsoft® Internet Information Server (IIS,Internet信息服务器) 3.0的开发人员,理解IIS如何使用验证(Authentication)和扮演(Impersonation)技术控制你的Web服务器的安全是十分重要的。当在Microsoft的Internet开发人员支持小组工作时,我发现我们处理的问题中有四分之一与我们称之为许可权(permissions)的主题有关。进一步讲,如果开发人员对验证的实现内幕在概念上有更多的了解的话,这些问题中的大部分都能够被避免。验证只是一个简单的确定用户身份的过程。当一个用户被肯定确认后, Windows NT®随即能够控制该用户可以访问的资源。当不是具有特别的技术色彩时,验证和安全易于混淆。对IIS如何控制安全的准确理解将帮助你创建更有活力的站点和避免常见、费时的问题。

本文解释了有关IIS的Windows NT安全,所以你能够有效地解决与安全有关的问题。我们的内容包括三种验证形式,它们的差异,对你的Web服务器关键区域的几种访问控制方式,以及重要的但被普遍误解的“委托(delegation)”概念。对于任何使用IIS建立数据委托驱动的Web站点的人员,必须理解授权。理解Windows NT如何处理不同的用户将节省你在排除疑难时耗费的成天甚至成周的时间。

ACLs, NTLM以及其它定义

在开始前,我们先定义一些常见术语:

访问控制表(ACLs,Access Control Lists)   每个ACL是一个访问控制入口(Access Control Entries)列表,访问控制入口规定了NTFS(New Technology File System)硬盘上的Windows NT所使用的访问和审核信息。Windows NT通过访问ACLs确定已被授予访问特定资源(文件和文件夹)权限的用户,以及用户能够得到的权限,包括读、写和执行。在文件或文件夹资源上单击鼠标右键,选择Properties(属性),然后单击Securities(安全)页的Permissions(权限)按钮,可以查看该资源的ACLs。
Windows NT 盘问/响应(Challenge/Response)   这是一个Windows NT 验证过程。在用户或服务(如IIS)试图通过网络访问另一台Windows NT计算机存储的任何资源(诸如查询一台服务器上的一个共享资源)时都会发生盘问/响应。盘问/响应也能被IIS用来在用户浏览Web站点时进行验证。
NTLM  这是Windows NT使用的盘问/响应验证机制。NTLM代表Windows NT LAN Manager,因为它最早开发和使用于Microsoft LAN Manager, Microsoft最早的一种网络产品。
SAM   SAM (Security Account Manager,安全帐户管理器)是存储用户和组帐户信息的数据库。SAM中并不包含密码,但是它存储了密码散列表(后面将进行说明)。SAM存储在注册表的HKEY_LOCAL_MACHINE\SAM和HKEY_LOCAL_MACHINE\Security\SAM 子树中。不必惊讶,SAM经常是黑客的主要目标。
扮演(Impersonation)

在不同的情况下,IIS会假扮成不同的用户。在Windows NT计算机上的所有操作的处理都是运行在一个有效的Windows NT帐户上的。当一个程序或处理(类似于IIS)代表一个用户运行时,它可以说是运行在该用户的安全上下文(security context)中。安全上下文的用途是使代表用户运行的处理对文件和资源的访问权不能超过用户在本地运行一个处理时所获得的访问权。当IIS代表一个用户运行时,就说它扮演了该用户。

IIS设计将Web请求作为自动的服务进行处理。要实现这一点,IIS需要运行在一个有效的用户安全上下文中。IIS需要对两种请求作出反应:匿名请求(Anonymous Request)和验证的请求(Authenticated Request)。在匿名请求中, IIS对用户情况一无所知。而在验证的请求中,IIS能够准确了解请求资源的用户。因为匿名请求和验证式请求在进行时都不会对用户出现对话框或其它标识,所以使用何种方法并不总是一眼就能发现的。但是,对我们开发人员应该总能知道使用何种方式,这是必须的。IIS扮演的帐户,以及更大范围而言,到IIS的处理能力,主要依赖于所使用的请求类型。