MIT Kerberos 用户常用命令

在本节中,我们将介绍Kerberos 中常见的概念及用户常用命令。首先我们介绍两个概念:凭据缓存(Credential cache)和keytab。

1. 凭据缓存(Credential cache)

凭证缓存可以在有效时效内保存Kerberos凭证,以便多次对服务进行身份验证(例如,多次连接到Web或邮件服务器),从而避免每次都需要联系KDC进行身份验证。

凭证缓存通常包含一个初始票证(Initial Ticket),该票证是使用密码或其他形式的身份验证而获得的。如果此票证是票证授予票证(TGT),则可以使用它来获取没有密码的其他凭证。由于凭证缓存不存储密码,所以Kerberos 访问是安全的访问方式即便凭证缓存大都存在用户端。凭证缓存存储默认客户端Principal名称,在创建缓存时设置, 可以使用klist –A命令来查询 凭证缓存 的详细信息。

每个凭证缓存条目包括服务主体(Service Principal)名称,客户端主体 (User Principal)名称,生命有效期和标志(Flag)以及凭证本身。

2. KeyTab

Keytab(“key table”的缩写)存储一个或多个主体 (Principal)的密钥 (Long Term)。 Keytab最常用于允许服务器应用程序(Service)接受来自客户端的身份验证,但也可用于获取客户端应用程序(Client)的初始凭据。

Keytab使用格式 Type :Value 来表示,通常type是FILE,value是文件的绝对路径名。类型的其他可能值是SRVTAB,表示不推荐使用的Kerberos 4 srvtab格式的文件,以及MEMORY,它表示存储在当前进程的内存中的临时密钥表。

Keytab包含一个或多个条目,其中每个条目由时间戳(表明条目何时写入密钥表),主体(Principal)名称,密钥版本号,加密类型和加密密钥本身组成。

可以使用带有-k选项的klist命令显示Keytab。可以使用kadmin ktadd命令从KDC数据库中提取密钥来创建或追加条目到Keytab中。可以使用ktutil和k5srvutil命令来操作Keytab。

3. 票据管理 (Ticket Management)

在许多系统中,Kerberos认证内置在登录系统中,在登录时自动获得票据,其他程序(如ssh)可以将票据的副本转发到远程主机上, 大多数这些程序在退出时也会自动销毁相应的票据。 最好的经验是使用Kerberos票据时明确销毁这些票据,如确可将kdestroy命令添加到.logout文件中。

kinit获得票据

可以使用kinit命令显式地获取Kerberos票据。 同样,如果Kerberos票据过期,可以使用kinit命令获取新的票据。

要使用kinit命令,只需键入kinit,然后在提示符下键入密码即可。 例如,Jennifer(其用户名为jennifer), Kerberos域名为ATHENA.MIT.EDU, 输入如下:

shell% kinit
Password for jennifer@ATHENA.MIT.EDU: <-- [Type jennifer's password here.]
shell%

如果输入的密码不正确,kinit会给出以下错误消息:

shell% kinit
Password for jennifer@ATHENA.MIT.EDU: <-- [Type the wrong password here.]
kinit: Password incorrect
shell%

在默认情况下,kinit总是假定在默认的Realm中获得票据。 假设Jennifer的朋友David正在访问Jennifer的公司,David想借一个窗口检查他的邮件,那么, David需要在他自己的Realm中(EXAMPLE.COM)获得票据。 输入如下:

shell% kinit david@EXAMPLE.COM
Password for david@EXAMPLE.COM: <-- [Type david's password here.]
shell%

随后,David便会获得登录自己机器的票据。 请注意,David在Jennifer的机器上键入了他的密码,但是该密码并没有在网络上进行传输。上述例子演示了在 本地主机上的Kerberos对另一个Realm中的KDC执行了身份验证。

如果希望 可以将票据转发给其他主机,则需要申请可转发票据(forwardable)。 可以通过指定-f选项来执行此操作:

shell% kinit -f
Password for jennifer@ATHENA.MIT.EDU: <-- [Type your password here.]
shell%

可以使用klist命令来查看票据。通常情况下,票据具有默认的票据生命周期,在许多系统上为10小时,可以使用-l选项指定不同的票据有效期。 字母s代表秒的值,m表示分钟,h表示小时,d表示天数。 例如,要获得david@EXAMPLE.COM的可转发票据,该票据持续三个小时,可以键入:

shell% kinit -f -l 3h david@EXAMPLE.COM
Password for david@EXAMPLE.COM: <-- [Type david's password here.]
shell%

Klist查看票据

klist命令显示票据。如下所示执行该命令:

shell% klist
Ticket cache: /tmp/krb5cc_ttypa
Default principal: jennifer@ATHENA.MIT.EDU
Valid starting     Expires            Service principal
06/07/04 19:49:21  06/08/04 05:49:19  krbtgt/ATHENA.MIT.EDU@ATHENA.MIT.EDU
shell%

Ticket Cache是票据文件的位置。 在上面的示例中,此文件名为/ tmp / krb5cc_ttypa。 默认主体 (Principal)是当前用户的Kerberos主体。

“Valid starting”和“Expires”字段描述了票据的有效的时间段。 “Service Principal”描述每个票据的名称。 TGT票据的第一个组件是krbtgt,第二个组件是Realm。

可以使用-f选项来查看票据的标示(Flag), 有效的标示如下:

1541929684137938.png

如下例子,用户jennifer获得了初始票据(I),该票据是其可转发的(F)并且是没有验证的。

shell% klist -f
Ticket cache: /tmp/krb5cc_320
Default principal: jennifer@ATHENA.MIT.EDU
Valid starting      Expires             Service principal
31/07/05 19:06:25  31/07/05 19:16:25  krbtgt/ATHENA.MIT.EDU@ATHENA.MIT.EDU
        Flags: FdiI
shell%

4. Kdestroy销毁票据

Kerberos票据证明用户的确实是用户所声称的用户,如果某人获得了存储票据的计算机的访问权,则可能会窃取票据。 如果发生这种情况,窃取票据的人可以伪装成相应的用户直到票据过期。 因此,当用户离开计算机时,应该销毁Kerberos票据。销毁票据只需输入kdestroy:

shell% kdestroy
shell%

如果kdestroy无法销毁票据,将会给出错误消息。 例如,如果kdestroy找不到任何要销毁的票据,它将给出以下消息:

shell% kdestroy
kdestroy: No credentials cache file found while destroying cache
shell%

更改密码

要更改Kerberos密码,使用kpasswd命令。 该命令会询问旧密码,然后提示输入新密码两次。  例如,用户david将执行以下操作:

shell% kpasswd
Password for david:    <- Type your old password.
Enter new password:    <- Type your new password.
Enter it again:  <- Type the new password again.
Password changed.
shell%

如果david输入了错误的旧密码,会收到以下消息:

shell% kpasswd
Password for david:  <- Type the incorrect old password.
kpasswd: Password incorrect while getting initial ticket
shell%

MIT Kerberos 用户常用命令

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 27 = 三十 三