创建 Kerberos 主机主体

除了确保您的网络上的每台计算机知道它所处的 Kerberos 领域以及要联系的 KDC 之外,还应为它创建一个主机主体。到目前为止,我们仅讨论了用户身份凭证。但与 Keberos 兼容的服务通常也需要将自身身份验证到客户机用户。因此,对于领域中的每个主机,在 Kerberos 数据库中必须存在特殊主机主体。

主机主体的命名约定是 host/<hostname>@<REALM>,其中 hostname 是完全限定的主机名。主机主体类似于用户主体,但也有显著的区别。用户主体和主机主体的主要区别在于用户主体的密钥是受密码保护的 - 当用户从 KDC 获得一个票据授予票据时,需要键入他的密码以便 Kerberos 能够解密此票据。很明显,如果系统管理员必须每隔 8 个小时为 SSH 守护程序获得新的票证,对系统管理员来说是非常不方便的。

相反,用来解密主机主体的初始票证的密钥是由管理员从 KDC 一次性抽取的,并储存在一个名为 keytab 的本地文件中。SSH 守护程序等服务将读取此密钥并在需要时使用它来自动获得新票证。默认 keytab 文件位于 /etc/krb5.keytab 中。

要为 test.example.com 创建一个主机主体,请在您的 kadmin 会话期间输入以下命令:

kadmin -p newbie/admin
Authenticating as principal newbie/admin@EXAMPLE.COM with password.
Password for newbie/admin@EXAMPLE.COM:
kadmin:  addprinc -randkey host/test.example.com
WARNING: no policy specified for host/test.example.com@EXAMPLE.COM;
defaulting 
to no policy
Principal "host/test.example.com@EXAMPLE.COM" created.
  

-randkey 标志没有为新主体设置密码,而是指示 kadmin 生成一个随机密钥。之所以在这里使用这个标志,是因为此主体不需要用户交互。它是计算机的一个服务器帐户。

最后,抽取密钥并将其储存在本地 keytab 文件 /etc/krb5.keytab 中。这个文件由超级用户拥有,所以您必须是 root 用户才能在 kadmin shell 中执行以下命令:

kadmin:  ktadd host/test.example.com
Entry for principal host/test.example.com with kvno 3, encryption type Triple
DES cbc mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5.keytab.
Entry for principal host/test.example.com with kvno 3, encryption type DES
cbc mode with CRC-32 added to keytab WRFILE:/etc/krb5.keytab.
kadmin:

完成后,应确保使用 kdestroy 命令销毁通过 kinit 获得的 admin 票证。