建立 Kerberos 主機主體

除了確認您網路上的每一台機器都知道所處的 Kerberos 領域和所連絡的 KDC 之外,請為其建立主機主體。到目前為止,僅討論使用者證件。但是,Keberos 相容的服務通常也需要對用戶端使用者驗證自己。因此,在 Kerberos 資料庫中必須包含領域中每一台主機的主體。

主機主體的命名慣例為 host/<hostname>@<REALM>,其中 hostname 是主機的完整主機名稱。主機主體與使用者主體相似,但是有顯著的差異。使用者主體與主機主體的主要差異在於,前者的金鑰受到密碼保護 — 當使用者從 KDC 取得票證授予的票證時,必須輸入密碼,Kerberos 才能解密票證。如果系統管理員必須每八個小時取得 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 外圍程序執行下一個指令:

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 所取得的管理票證。