本篇文章会就一些Kerberos术语来详细讲解一下

票证:在Kerberos事务处理中,票证是最基本的单位

领域Kerberos领域就是活动目录域

KRBTGT账户:这个账户是你提升或升级域中的第一台域控制器时自动创建的。改账号不能删除或重命名。但你可以修改他的密码。但不建议你这样做。因为KRBTGT账号的密码哈希是用来加密TGT票证的,如果被盗就产生非常验证的安全漏洞。KRBTGT密码很长,很负责,系统会定期更改这个账号,这个账号默认是禁用的,而且要通过高级功能才会显示出来

验证服务器:验证服务器同时也是目标或资源服务器。当Kerberos客户端(第一方)试图访问一个成员服务器(第二方)上的资源时,这个成员服务器会自动成为一个验证服务器来对会话票证进行验证。验证服务器将检查这个票证,看它是不是包含由KDC放入的信息,以及是否使用验证服务器的密码哈希进行加密。验证服务器必须和发行会话票证的KDC处在同一个Kerberos领域中,也就是同一个活动目录域中。

应答信息:前面讲过KDC应答由两部分组成:

第一部分:给客户端读取的客户端会话信息

第二部分:TGT或会话票证本身

下面来详细讲解一下票证的几个重要构成元素:

1、 客户端会话信息

1) 会话密钥 这是由KDC产生的一组随机数,用于Kerberos客户端和验证服务器互相   进行身份验证

2) Flags标记:这个标记决定了如何使用TGT或会话票证。其中包括

1、是否允许将票证转发到同KDC在同一个域的资源服务器。

2、信任委派  (这个是针对TGT的,TGT一定要有这个字段,才能进行委派)

这里有几个概念要清楚:

首先、域A中的Kerberos客户端要访问域B中的资源时,必须要先取得由域BKDC颁发的TGT,然后通过提交TGT来取得会话票证,接着把会话票证和一个鉴别码交给你要访问的资源服务器来进行互相验证并获得访问控制令牌。

其次,一个域中的KDC是不能为另一个域中的Kerberos客户端颁发TGT

那么,A中的客户端如何取得另一个域的TGT呢?答案就是信任委派

信任委派的意思是说当本地用户向本地KDC提交一个本地TGT,要访问另一个域的资源时,本地的KDC会代表用户从它的父域获取一个跨领域的TGT当域AKDC要向域BKDC申请TGT时,域B一定要信任域A,这样域BKDC才会颁发TGT给域AKDC,当然,在用一个林中这种信任关系时双向且可传递的)。本地KDC把它申请的TGT返回给客户端,同时返回的还有一个对父域的“参考”。客户端TGT中的“参考”字段,向父域的KDC提高跨领域的TGT,从而请求目标服务器的一个会话票证。如果请求的服务器也同样不在父域中,那么父域会继续代表用户向他的父域或另一颗树的树根域来申请跨领域的TGT,接下来的过程就和上面一样,知道找到目标服务器所在域的KDC

3) 起始时间和结束时间  票证在这段时间内有效

4) 票证版本号  windows使用的是Kerberos V5

2、 客户端会话信息

1) 会话密钥  颁发给客户端的会话密钥的一个拷贝,即一组随机数

2) 客户端的名称和领域  验证服务器用它来验证用户的身份以及容纳给客户端密钥的领域,如果宣称的身份和票证中的内容不符,验证服务器就知道有人劫持了一个票证。

3) 途径领域  就是客户端经过了几个领域后到底目标服务器所在的领域

4) 授权数据 这个字段主要用来存放PAC