Sun 企業辯證機制使用指南

管理密鑰表

每一個提供服務的主機都必須有一個稱為 密鑰表(密鑰表的簡稱)的本機檔案,其中包含一個稱為 服務密鑰的正確服務主管。一項服務會使用服務密鑰來向 KDC 自我辯證,而且只有 Kerberos 及服務本身才知道。例如,如果您擁有一個 Kerbero 化NFS 伺服器,該伺服器必須有一個包含其 nfs 服務主管的密鑰表。

要將一個服務密鑰新增至密鑰表中,您使用 kadminktadd 指令來將正確的服務主管新增至一個主機的密鑰表中。而且,因為您是在將一個服務主管新增至密鑰表中,主管必須已經存在於 Kerberos 資料庫中,所以 kadmin 便可以確認其存在。根據預設,密鑰表檔案位於主 KDC 之上的 /etc/krb5/kadm5.keytab 中。根據預設,密鑰表檔案位於提供 Kerbero 化服務的應用程式伺服器之上的 /etc/krb5/krb5.keytab 中。

我們可以將密鑰表比喻為一個使用者的密碼。使用者必須小心防護他們的密碼,同樣地,應用程式伺服器也必須防護其密鑰表。您應該將密鑰表貯存在一個本機的磁碟之上,並且只有 root 有讀取的權限,也不得透過一個不安全的網路來傳送密鑰表。

也有特別的實例來將一位 root 主管新增至一個主機的密鑰表中。基本上,如果您想要 SEAM 客戶端之上的一位使用者使用 Kerberos 辯證來自動裝載 Kerberos 化的NFS 檔案系統,您必須將客戶端的 root 主管新增至客戶端的密鑰表中。否則,使用者必須在他們想要裝載一個 Kerberos 化的NFS 檔案系統時,利用 kinit 指令作為 root,甚至是使用自動裝載器以取得客戶端 root 主管的證書。請參見 "設定 Root 辯證以裝載 NFS 檔案系統" 中的詳細資訊。


註解 -

當您設定一個主 KDC 時,必須將 kadmindchangepw 主管新增至 kadm5.keytab 檔案中,好讓 KDC 解密管理員的 Kerberos 許可證,以決定是否應該賦予它們存取資料庫的權限。


另一個您可以用來管理密鑰表的指令就是 ktutil 指令。 ktutil 是一種互動式的指令行介面公用程式,讓您在沒有 Kerberos 管理權限的情況下,仍然可以管理一個本機主機的密鑰表。因為 ktutil 不像 kadmin 一樣會與 Kerberos 資料庫互動。因此在將一位主管新增至密鑰表之後,您可以使用 ktutil 來檢視密鑰表中的密鑰清單,或是暫時停用一項服務的辯證。

管理密鑰表工作對映圖

表 5-9 管理密鑰表工作對映圖

工作 

說明 

如需指示,請到 ... 

將服務主管新增至一個密鑰表中 

使用 kadminktadd 指令以將一位服務主管新增至密鑰表中。

"如何將一位服務主管新增至密鑰表中"

從一個密鑰表中移除一位服務主管 

使用 kadminktremove 指令以從密鑰表中移除一項服務。

"如何從密鑰表中移除一位服務主管"

顯示一個密鑰表中的密鑰清單(主管) 

使用 ktutil 指令以顯示一個密鑰表中的密鑰清單。

"如何顯示密鑰表中的密鑰清單(主管)"

暫時停用主機之上一項服務的辯證 

本程序將說明一種簡便的方法,在沒有 kadmin 權限的情況下暫時停用一個主機之上的一項服務的辯證。在使用 ktutil 從伺服器的密鑰表中刪除服務主管之前,請將原本的密鑰表複製到一個暫存位置。當您想要再次啟用服務時,只要將原本的密鑰表複製回來即可。

"如何暫時停用主機之上一項服務的辯證"

如何將一位服務主管新增至密鑰表中

  1. 請確定 Kerberos 資料庫中已經有主管的存在。

    請參見 "如何檢視主管清單" 中的詳細資訊。

  2. 在需要將一位主管新增至其密鑰表的主機之上成為超級使用者。

  3. 請開始 kadmin 指令。


    # /usr/krb5/sbin/kadmin
    
  4. 使用 ktadd 指令以將一位主管新增至密鑰表中。


    kadmin: ktadd [-k密鑰表] [-q] [主管 | -globprincipal_exp]

    -k 密鑰表

    指定密鑰表檔案。根據預設,/etc/krb5/krb5.keytab 會被使用。

    -q

    顯示較少的 verbose 資訊。 

    主管

    要新增至密鑰表中的主管。您可以新增下列服務主管﹕hostrootnfs、及 ftp

    -glob principal_exp

    所有符合主管表達式的主管都會被新增至密鑰表中。主管表達式的規則與 kadminlist_principals 指令相同。

  5. 退出 kadmin 指令。


    kadmin: quit
    

範例 - 將一位服務主管新增至密鑰表中

下列範例會將 kadmin/adminkadmin/changepw 主管新增至一個主 KDC 的密鑰表中。就此例而言,密鑰表檔案必須是 kdc.conf 檔案中所指定的。


"kdc1 # /usr/krb5/bin/kadmin.local""kadmin.local:ktadd -k /etc/krb5/kadm5.keytab kadmin/admin kadmin/changepw  ""kvno 3 的主管 kadmin/admin@ACME.COM 項目,加密類型 DES-CBC-CRC   ""新增至密鑰表中WRFILE:/etc/krb5/kadm5.keytab。""kvno 3 的主管 kadmin/changepw@ACME.COM 項目,加密類型 DES-CBC-CRC   ""新增至密鑰表中WRFILE:/etc/krb5/kadm5.keytab。""kadmin.local:quit"

下列範例會將 denverhost主管新增至 denver 的密鑰表檔案中,因此 denver 的網路服務便可以利用 KDC 來辯證。


"denver # /usr/krb5/bin/kadmin ""kadmin:ktadd host/denver@acme.com@ACME.COM""kadmin: kvno 2 的主管 host/denver@acme.com@ACME.COM 項目,""加密類型 DES-CBC-CRC 新增至密鑰表中""RFILE:/etc/krb5/krb5.keytab。""kadmin: quit"

如何從密鑰表中移除一位服務主管

  1. 在有一位要從其密鑰表中移除的服務主管的主機之上成為超級使用者。

  2. 請開始 kadmin 指令。


    # /usr/krb5/bin/kadmin
    
  3. 選擇性的。要顯示密鑰表中目前的主管(密鑰)清單,請使用 ktutil 指令。

    請參見 "如何顯示密鑰表中的密鑰清單(主管)" 中的詳細指示。

  4. 使用 ktremove 指令以從密鑰表中將一位主管移除。


    kadmin: ktremove [-k 密鑰表] [-q] 主管 [kvno | all | old ]

    -k 密鑰表

    指定密鑰表檔案。根據預設,將會使用 /etc/krb5/krb5.keytab

    -q

    顯示較少的 verbose 資訊。 

    主管

    要從密鑰表中移除的主管。 

    kvno

    移除其(密鑰版本編號)與 kvno 相符的指定主管的所有項目。

    all

    移除指定主管的所有項目。 

    old

    除了有最高 kvno 的主管之外,移除指定主管的所有項目。 

  5. 退出 kadmin 指令。


    kadmin: quit
    

範例 - 從密鑰表中將一位服務主管移除

下列範例會從 denver 的密鑰表檔案中將 denverhost主管移除。


"denver # /usr/krb5/bin/kadmin""kadmin: ktremove host/denver.acme.com@ACME.COM ""kadmin: 從密鑰表中移除的 kvno 3 的主管 host/denver.acme.com@ACME.COM 項目 WRFILE:/etc/krb5/krb5.keytab。""kadmin: quit"

如何顯示密鑰表中的密鑰清單(主管)

  1. 以密鑰表在主機之上成為超級使用者。


    註解 -

    雖然您可以建立其他使用者所擁有的密鑰表,密鑰表的預設位置需要 root 所有權。


  2. 請開始 ktutil 指令。


    # /usr/krb5/bin/ktutil
    
  3. 使用 read_kt 指令以將密鑰表讀入密鑰清單緩衝區。


    ktutil: read_kt keytab
    
  4. 使用 list 指令以顯示密鑰清單緩衝區。


     ktutil:清單
    

    目前的密鑰清單緩衝區會顯示出來。

  5. 退出 ktutil 指令。


    ktutil: quit
    

範例 - 顯示密鑰表中的一位密鑰清單(主管)

下列範例會顯示 denver 主機之上 /etc/krb5/krb5.keytab 檔案中的密鑰清單。


"denver # /usr/krb5/bin/ktutil     ""ktutil:read_kt /etc/krb5/krb5.keytab    ktutil: list""插槽 KVNO 主管"" ---- ---- ---------------------------------------    1    5 host/denver@ACME.COM ""ktutil:quit"

如何暫時停用主機之上一項服務的辯證

在您需要暫時停用網路應用程式伺服器之上的一項服務的辯證機制,如 rloginftp 時會出現這類實例。例如,您可能想要在執行維護程序時阻止使用者登入一個系統。您可以利用 ktutil 指令,從伺服器的密鑰表中移除服務主管來達到此目的,而不需要 kadmin 權限。要再次啟用辯證,您只需要將您所儲存的原始密鑰表複製回其原本的位置即可。


註解 -

根據預設,大多數的服務都被設定為要求辯證有效。如果並非如此,即使您停用服務的辯證,服務還是會有效。


  1. 以密鑰表在主機之上成為超級使用者。


    註解 -

    雖然您可以建立其他使用者所擁有的密鑰表,但是密鑰表的預設位置需要 root 的所有權。


  2. 將目前的密鑰表存入一個暫存檔案中。

  3. 請開始 ktutil 指令。


    # /usr/krb5/bin/ktutil
    
  4. 使用 read_kt指令以將密鑰表讀入密鑰清單緩衝區。


    ktutil: read_kt密鑰表
    
  5. 使用 list 指令以顯示密鑰清單緩衝區。


    ktutil: 清單
    

    目前的密鑰清單緩衝區會顯示出來。請注意您想要停用的服務插槽數。

  6. 要暫時停用一個主機的服務,請使用 delete_entry 指令從密鑰清單緩衝區中移除特定的服務主管。


    ktutil: delete_entry slot_number
    

    slot_number

    要刪除的服務主管插槽數,由 list 指令所顯示。

  7. 使用 write_kt指令以將密鑰清單緩衝區寫入密鑰表。


    ktutil: write_kt密鑰表
    
  8. 退出 ktutil 指令。


    ktutil: quit
    
  9. 當您想要再次啟用服務時,請將暫存的(原始的)密鑰表複製回其原本的位置。

範例 - 暫時停用主機上的一項服務

下列範例會暫時停用 denver 主機之上的 host 服務。要重新啟用 denver 之上的主機服務,您必須將 krb5.keytab.temp 檔案複製到 /etc/krb5/krb5.keytab 檔案中。


"denver # cp /etc/krb5/krb5.keytab /etc/krb5/krb5.keytab.temp""denver # /usr/krb5/bin/ktutil""    ktutil:read_kt /etc/krb5/krb5.keytab""    ktutil:list""插槽 KVNO 主管""---- ---- ---------------------------------------""   1    8 root/denver@ACME.COM""   2    5 host/denver@ACME.COM""    ktutil:delete_entry 2""    ktutil:list""插槽 KVNO 主管""---- ---- --------------------------------------""   1    8 root/denver@ACME.COM""    ktutil:write_kt /etc/krb5/krb5.keytab""    ktutil: quit"