管理机构的身份验证。什么意思?对于大多数系统来说“管理机构”就是系统管理员。那么,“身份验证”是什么意思?从技术上说,“身份验证”就是系统准确确 定谁正在与系统交互的过程。进行身份验证时会问这样一个问题:“我如何能确定您是您所说的人?”但很多人将身份验证等同于“登录”。对于运行 Microsoft Windows 的系统来说,登录序列要比仅仅进行身份验证包含更多的内容。
本文档按照其准确的含义来使用“身份验证”和“登录”两个术语。本文将重点讲述身份验证。 概述 对于那些对 Microsoft Windows NT 4.0 系统有一定经验并且最近已经升级到或将要升级到 Windows 2000 的系统管理员来说,本白皮书将提供有关身份验证的信息。 基本上,本文档是在回答这个问题:“对于 Windows 2000 的身份验证,我应该知道些什么?” 本文档包括以下方面的信息: Kerberos 身份验证的管理。 与麻省理工学院 Kerberos V5 实施的互操作性。 Kerberos 身份验证的高级方面。 其中有一节记录了一个 Microsoft 小组为确定一台服务器可以处理多少个登录请求所进行的一系列测试。旨在为系统管理员提供规划特定环境时使用的一些数据。 尽管每个环境都有自己的问题和限制,并且这些结果也并非是“严格”的,但这些结果可以帮助系统设计者了解他们的组织需要什么样级别的计算机,并更好地理解登录过程需要多少资源。 登录和身份验证 登录过程 登录过程有一些步骤。在 Windows 2000 客户机上,当用户同时按下 CTRL+ALT+DELETE 并键入用户名和密码时,计算机已经向域控制器验证了自己的身份,执行了一些轻目录存取协议 (LDAP) 和域名系统 (DNS) 查询,并且收到了应用于这台计算机的各种策略。用户登录过程包括 LDAP 查询、所需的协议协商和特定用户的策略的收集。 身份验证过程 当登录过程执行实际的身份验证步骤时,Windows 2000 使用 Kerberos 身份验证协议。Kerberos V5 协议是 Windows 2000 的默认身份验证协议,Kerberos 协议来自于二十世纪八十年代后期麻省理工学院的 Athena 项目。Kerberos 协议的第 5 个版本是第 2 个发行版本(前三版是内部开发版本),在 IETF RFC 1510 中对此有说明。(有关详细信息,请参见 http://www.ietf.org/rfc/rfc1510.txt 。) Kerberos V5 协议是一个身份验证协议。它只允许计算机去验证一个用户或另一台计算机确实是这个用户所宣称的身份。这是所有安全系统的基础。除非服务器能够证实一个用户 的身份,否则它将不能可靠地控制对它的资源的访问。只要服务器收到了用户明确的身份,它就能确定该用户是否有权访问该资源。 Kerberos 协议本身并不授权用户访问任何资源。Microsoft 对 Kerberos V5 协议的实施确实允许安全地传送用户凭据。用户和组安全标识符 (SID) 封装在一种名为特权属性证书 (Privilege Attribute Certificate, PAC) 的票据中。PAC 不是一个公共密钥证书而且并不是由证书颁发机构颁发的。PAC 包含 SID,服务器利用它来确认这个用户是否能够访问其所请求的资源。PAC 的规范可以在如下站点找到:http://www.microsoft.com/technet/security/kerberos/default.asp。 为什么使用 Kerberos 协议? 下面列出了为什么选择 Kerberos 作为身份验证协议的原因。 良好的安全性。 任何安全方案都应该是安全的、可靠的、对用户透明的,并且是可伸缩的。这些就是开发 Kerberos 协议的准确的设计准则。 为满足安全标准,Kerberos 协议使用了被认为是当今最新的加密协议。 为了检查 Kerberos 的可靠性,对其进行多次鉴定后,我们发现它在加密方面很可靠。 因为 Kerberos 协议能够缓存并转发票据,所以该协议对于用户是透明的。 归功于其具有缓存功能和具有比 NTLM 更少的消息数,对于更大的环境来说,Kerberos 协议比 NTLM 具有更大的伸缩性。 由于来自于学术界,Kerberos 协议已经过多次审阅和分析。它不会有明显的错误,如在网络上传送未加密的密码。版本 4 的技术弱点已经在版本 5 中作了更正,版本 5 已经被作为“工业级”通用身份验证协议。 Kerberos 协议有一些潜在的弱点。(例如,可参见“Kerberos 协议的限制”,其作者为 S.M. Bellovin 和 M. Merritt,发表在 1991 年冬天的 USENIX 会议录上。尽管他们的文章是对版本 4 的分析,但有关重放攻击和密码攻击的问题也适用于版本 5。)但实际上这些限制适用于所有的分布式计算环境 (DCE)。很多作者已经注意到,Kerberos 协议易受到密码攻击。这意味着网络管理员应该记录下身份验证失败的情况并锁定那些在很短的时间里有多次失败的帐号。 可升级。 在该协议第 5 版中有一个域是加密类型标识符,这样可使用任何加密方法。同样,密钥也和类型和长度有关。RFC 1510 中定义了必须支持的加密方法的最小集合,但随着加密方法的改进,其实施将紧跟当前的最新技术,而且应用程序不必修改协议。 代理和转发。 Windows NT 4.0 和早期版本的一个限制就是 NTLM 不支持多次反射模拟。如果一个用户将其凭据传送给一个中间层对象,这个对象将不能转发该用户的凭据来获得访问,如对 Microsoft SQL Server 数据库的访问。 Kerberos V5 协议既允许代理又允许转发。代理指的是用户可赋予其他一些资源服务和会话票据。该服务使用会话票据访问该资源。例如,一台打印服务器可以通过文件服务器利用用户的会话票据访问要打印的文件。 代理仅要求该客户的会话票据和目标服务器上的会话密钥。这是一种有限制的模拟。更通常的情况,如转发或委派,是一个应用程序必须传送这个客户所有的凭据才能整个模拟该客户。要完成这些,这个应用程序必须使用客户的票据授权票据 (TGT) 去请求目标服务器上的会话票据。COM+ 应用程序可以充分利用转发功能。从低层的观点来看,转发意味着一个票据对于源计算机可以有一个 IP 地址,对于请求计算机可以有不同的 IP 地址。 高效票据是缓存的(对用户是透明的)。 每台计算机上的 Kerberos 协议客户端都在内存中保存收到的票据。在每次登录会话中身份验证序列都必须发生一次。TGT 和服务票据可以保存下来并可根据客户端的需要而多次使用,而不必再重复整个步骤。对用户来说所有的缓存过程都是透明的。当票据过期时,客户端自动更新它们。这对于用户也是透明的。 IETF 标准 - 与非 Windows 系统的互操作性。 在 IETF RFC 1510 中定义了 Kerberos 协议的工作方式。Microsoft 对 Kerberos 协议的实施可完全支持该 RFC。这将允许在 Microsoft Kerberos 客户端和服务器与 MIT Kerberos 客户端和服务器间实现基本的互操作性。(请参见下面有关互操作性讨论的章节。) 快速和可伸缩性。 票据的使用允许客户端“传送”它们的凭据并且可根据需要多次将凭据提交给服务器。无需在用户每次请求访问某个服务或资源时都对其进行重新验证。由于有了缓存,在票据有效寿命期间内客户端将不必获得新票据。这两种功能使 Kerberos 协议比 NTLM 更快而且无疑具有更高的伸缩性。 六种 Kerberos 消息的简要概述 有关 Kerberos 协议的任何讨论都应该描述六个主要的 Kerberos 消息。这六个消息实际上是三种类型的操作,每个都有一个来自客户端的请求和来自 Kerberos 密钥分发中心 (KDC) 的响应。 当客户键入密码时发生第一个操作。在工作站上的 Kerberos 协议客户端发送一个 "AS" 请求给 KDC 上的身份验证服务,要求身份验证服务返回一个票据,以此来验证这个用户确实是他或她所宣称的用户。身份验证服务验证该客户的凭据并发回身份验证响应。 当客户端通过将身份验证响应发给 KDC 上的票据许可服务来请求对某一服务或资源的访问时,发生第二个操作。票据许可服务返回一组票据,客户端可以将其提交给任何存有客户端所需的服务或资源的服务器。 当 Kerberos 客户端确实将票据提交给服务器并且请求对该服务或资源的访问时,发生第三个操作。这些是应用 (AP) 消息。访问标识符 (SID) 包含在 PAC 中,它是发送到服务器的票据的一部分。 除非客户端特别要求双向身份验证,否则第三个操作不需要服务器作出响应。如果客户端将此次交换标记为双向验证,则服务器将一个包含认证者时间戳的消息返回给客户端。对于典型的域登录,在用户被允许访问工作站之前,所有这三个操作都要发生。 Kerberos 的管理 后台工作 切记,Kerberos 协议仅仅是登录过程中使用的身份验证组件。如上所述,登录过程比单纯的身份验证过程要复杂得多。计算机策略、组策略和潜在的 sIDHistory 都必须从域控制器传送到客户端。这些项会明显增加网络通信量。所以,当考虑域控制器的安装方式和位置时,把眼界放开阔些是非常有用的。 例如,登录过程要求客户端从全局目录中查询信息。如果在客户端和包含全局目录的服务器间的连接不可靠或比较慢,将会发生严重的登录问题。可以比较确信地说,与系统的其它部分发生的所有通信量(如登录、活动目录复制等等)相比较,Kerberos 通信和 Kerberos 工作是很小的。 Kerberos 协议不要求而且也不允许太多的“管理”。它是默认的身份验证程序包,并且象 NTLM 一样,它在后台工作而无需介入。当您安装 Windows 2000 域控制器时,就创建了一个名为 krbtgt 的帐号。这个帐号主要是 Kerberos 服务使用的安全规则(按照 RFC 1510)。此帐号既不能被删除也不能被更改帐号名。因为 krbtgt 不能用于登录,所以该帐号是禁用的并且不能被启用。 创建该帐号时,将分配一个随机密码。系统会定期来更改该密码。在域控制器上由 Kerberos 客户端使用 krbtgt 帐号的密码创建密钥,用于对 KDC 所有的授权票据的票据进行加密和解密。所以,当您在您的用户列表中看到该 krbtgt 帐号时,不要做任何改动。 Microsoft 提供的管理工具 KerbTray。这是 Windows 2000 服务器资源工具包的一个实用程序。可从网络管理工具文件夹(而非安全工具文件夹)中找到它。当您运行程序 KerbTray.exe 时,它显示在 Windows 任务栏上的文件盘中。KerbTray 显示该计算机缓存中票据的图形界面。下面是 KerbTray 屏幕上每个选项卡的示例。 NetDom.“网络域”是一个命令行实用程序,它可允许网络管理员验证服务器和信任关系以及将重置信任关系。 NetMon。在 Windows 2000 发布时“网络监视器”还没有 Kerberos 分析器。NetMon 跟踪器能够显示出流经端口 88 和 Kerberos 的 IP 端口的通信量,显示一些消息中未加密的数据。这些数据足以解决一些基本的问题,但把 NetMon 作为日常的评估工具是不可能的。 错误和疑难解答 Kerberos 的错误记录在事件日志中。网络管理员应该定期检查此日志文件,或者最好创建或购买能够查看事件日志中的特定项并能预先发出警告的应用程序。RFC 1510 中定义了很多在 Windows 2000 域中根本不可能发生的错误。一个这样的错误是 Requested Protocol Version Number Is not Supported(所要求的协议版本号不支持)。因为所有的 Windows 2000 Kerberos 客户端都是版本 5,仅仅当 MIT Kerberos 版本 4 客户端试图使用 Windows 2000 域控制器进行验证时,才会发生这种错误。 以下是一些您会看到的错误、错误解释以及解决办法: 错误 0x6:客户名称没找到(原因不明)或错误 0x7 :服务器名称没找到(原因不明) 当域控制器不能在本身的活动目录中找到这个名称时,就会发生该错误。如果您遇到该错误,应检查一下该名称是否在活动目录中。如果在,查看这个帐号是否已经 过期。很可能是用户在一个会话进行中突然被锁定。如果“强制用户登录限制”选项设置成真(默认设置),并且此帐号已经过期,就会发生这种情况。 “强制用户登录限制”强迫域控制器在每次提交 TGT 时检查用户的帐号。如果此主要名称不在本地活动目录中,已知这个帐号应该存在,就应该检查此活动目录的同步是否最新。这很可能是一个用户刚刚被加入到域中,并且充当该用户的 KDC 的域控制器还没有完成更新。 错误 0x17:密码过期。更改密码并重置。 如果 TGT 被缓存并且用户的密码已经过期并被更改,就会产生凭据冲突。由于用户的密钥是基于此密码的,所以保存在缓存 TGT 中的密钥将不会与 KDC 中该用户的密钥相匹配。为了使凭据匹配,用户应该先注销然后再次登录。 错误 0x1A请求的服务器和票据不匹配。 一台服务器收到了一个用于另一台服务器的票据。开始查找该错误的位置是 DNS 或任何您用于名称解析的位置。客户端很可能收到了它正在查找的服务器的错误的地址。 错误 0x1F:解密域的集成检查失败和)错误 0x29 消息流已被修改 这些错误表明包含在消息中的散列和在目标处计算出来的散列不匹配。此消息的更改可能是由于受到了攻击或由于网络噪声的影响。这会是您应预先得到通知的一种消息。 错误 0x20 票据过期 “用户票据的最大寿命”的值设置得越小,您看到的错误就会越多。票据更新是自动进行的,因此当您看到这个消息时,无需要做任何事情。 错误 0x22 会话请求是一个重放 这个错误表明一个特定的认证者显示了两次。起因可能是攻击者试图重放某个会话或某块网卡出错。不管是哪种情况,这都是您应该尽早了解的错误。 错误 0x25时钟偏差太大 如果客户端发送的时间戳与服务器的时间戳的差别超过了在“计算机时钟同步的最大容错”策略中定义的分钟数,则会记录该错误。这种情况很常见,特别是增加膝上型计算机(即可断开连接的计算机)的数量时。 尽管这个错误可以显示在日志中,但它并不阻止用户被验证。返回该错误时,域控制器也会提供正确时间。Kerberos 客户端使用正确的域控制器时间进行第二次验证请求。假设该用户的凭据是有效的,此用户将在第二次被验证。 在 Windows 2000 中如何配置 Kerberos 在配置 Kerberos 时要记住的第一件事是其默认值比较适宜。在 Windows 2000 中配置 Kerberos 时只有五项可以更改。除非有一些特殊的原因要求更改其中的参数,否则最好不要作任何更改。客户增加 Kerberos 票据寿命的原因之一是降低对客户机和域控制器之间的广域网 (WAN) 的信任。 如果您想修改 Kerberos 参数,可转至开始/程序/管理工具/域控制器安全策略。打开安全设置,再打开帐号策略,然后再打开 Kerberos 策略。正象您所看到的,Kerberos 策略是在域级设置并存储在 Active Directory 中。 这意味着两件事:一件是要想更改 Kerberos 策略,您必须是域管理员组中的成员。另一件是随着正常的 Active Directory 复制,在一台域控制器上所做的更改会复制到其它域控制器上。 这五项策略是: 强制用户登录限制。此设置通常设为“是”,强制域控制器在每次提交 TGT 时,检查帐号的有效性。这将引起更多的开销,但可使紧张的网络管理员变得轻松些。 服务票据的最大寿命。会话票据超过最大寿命后必须更新。通常设为 60。 用户票据的最大寿命。此设置定义了 TGT 在必须被更新之前所能存活的最长时间。通常设为 10 个小时。 用户票据更新的最大寿命。通常设为七天,此值定义了任何种类的票据所能存活的最大时间的总和。超过此时间,票据不会被更新。客户端必须获取一个新票据。这通常不是什么问题,因为该客户端会试图自动获取新票据。 计算机时钟同步的最大容错。这是客户端时间戳和服务器时间戳所能相差的时间,在此时间内,域控制器认为时间戳是一样的。如果时间戳的偏差大于最大容错,将 不会给客户机发送任何票据。正如以前提到的那样,如果域控制器遇到了这种情况,一个“时钟偏差太大”的错误会被记录下来。 系统管理员也可以更改用户和计算机的属性。尽管票据可以标记为“可转发的”,但在默认情况下,计算机和用户帐号对委派都是不信任的,这意味着转发功能是关 闭的。为了打开转发功能,网络管理员应该将用作安全环境的用户帐号设置为“帐户可委派其他帐户”属性,而且将在转发链上的每一台计算机都设置为“信任计算 机作为委派”。除非您有一个需要转发功能的应用程序,否则最好不要这么做。 为了更改用户帐号属性,打开 AD 用户和计算机然后打开“用户文件夹”。在相应的用户上双击,弹出属性对话框。选择帐号选项卡并查看帐户选项列表。如果您想让这个帐号能够转发票据,选择帐户可委派其他帐户框。如果您想确保该帐号永远不用于转发,可选择敏感帐户,不能被委派框。下图显示用户属性对话框。 如果您的浏览器不支持行内框,请单击此处查看独立的页面。 为了更改计算机属性,打开 AD 用户和计算机然后打开计算机(或域控制器)文件夹,在相应的计算机上双击,弹出属性对话框。单击一般选项卡,然后选择信任计算机作为委派框。下图显示计算机属性的对话框的一个示例。 如果您的浏览器不支持行内框,请单击此处查看独立的页面。 与 UNIX (MIT Kerberos V5) 环境的互操作 |