Sun 企業辯證機制使用指南

設置 KDC 伺服器

在安裝 SEAM 軟體之後,您必須設置 KDC 伺服器。設置可以提供核發證書服務的一個主 KDC 和至少一個從屬 KDC。這些證書是 SEAM 的基礎,因此必須在嘗試進行其他工作之前先安裝 KDC。

主及從屬 KDC 之間最大的差異之處在於只有主 KDC 可以處理資料庫管理的要求。例如,必須在主 KDC 之上才能變更一個密碼或新增一個新的主管。然後這些變更會被傳播至從屬 KDC。從屬及主 KDC 都能生成證書,以便在主 KDC 無法回應時提供備用。

如何設置一個主 KDC

要為您提供一個完成的範例,我們假設您並未執行事先設置的程序。如果您在安裝軟體時使用事先設置的程序,那麼此程序中所包括的許多檔案就不需要編輯;不過您還是應該要審閱檔案的內容來確定。

在此程序中必須使用下列的設置參數﹕

  1. 設置一個主 KDC 的先決條件。

    此程序需要先已安裝主 KDC 軟體。此外還必須執行 DNS。如果此主 KDC 要是可調換的話,請參見 "調換主與從屬 KDC" 中特定的命名指示。

  2. 成為主 KDC 之上的超級使用者。

  3. 編輯 Kerberos 設置檔案 (krb5.conf)。

    您必須變更伺服器的範疇名稱及名稱。請參見 krb5.conf(4) 線上援助頁中有關此檔案的詳細說明。如果您是使用設置檔案來安裝 SEAM 軟體的話,請確認檔案內容而不要編輯它。


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = ACME.COM
    
    [realms]
                    ACME.COM = {
                    kdc = kdc1.acme.com
                    kdc = kdc2.acme.com
                    admin_server = kdc1.acme.com
            }
    
    [domain_realm]
            .acme.com = ACME.COM
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
    
    [appdefaults]
        gkadmin = {
            help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
            }

    在此範例中,default_realmkdcadmin_server、及所有的 domain_realm 項目數行文字都被變更。default_realm 的文字也包括在內以使範例完整,但如果範疇及領域名稱對等的話,安裝過程便不會建立此項目。此外,定義 help_url 的文字也經過編輯。

  4. 編輯 KDC 設置檔案 (kdc.conf)。

    您必須變更範疇名稱。請參見 kdc.conf(4) 線上援助頁中有關此檔案的詳細說明。如果您是使用設置檔案來安裝 SEAM 軟體的話,請確認檔案內容而不要編輯它。


    kdc1 # cat /etc/krb5/kdc.conf
    [kdcdefaults]
            kdc_ports = 88,750
    
    [realms]
            ACME.COM= {
                    profile = /etc/krb5/krb5.conf
                    database_name = /var/krb5/principal
                    admin_keytab = /var/krb5/kadm5.keytab
                    acl_file = /var/krb5/kadm5.acl
                    kadmind_port = 749
                    max_life = 8h 0m 0s
                    max_renewable_life = 7d 0h 0m 0s
            }

    在此範例中,realms 一節中所定義的範疇名稱也經過變更。

  5. 使用 kdb5_util 來建立 KDC 資料庫。

    kdb5_util 指令會建立 KDC 資料庫,而且在與 -s 選項一起使用時,會建立一個在開始kadmindkrb5kdc 常駐程式之前用來向其本身辯證 KDC 的存放檔案。


    kdc1 # /usr/krb5/sbin/kdb5_util create -r ACME.COM -s 
    Initializing database '/var/krb5/principal' for realm 'ACME.COM'
    master key name 'K/M@ACME.COM' 
    You will be prompted for the database Master Password.
    It is important that you NOT FORGET this password.
    Enter KDC database master key:< 鍵入密鑰>	
    Re-enter KDC database master 密鑰 to verify: < 再一次鍵入>
    

    如果範疇名稱對等於伺服器名稱空間領域名稱的話,後面跟著範疇名稱的 -r 選項就非必要。

  6. 編輯 Kerberos 存取控制清單檔案 (kadm5.acl)。

    一旦傳播之後,/etc/krb5/kadm5.acl 應該 包含可以管理 KDC 的所有主管名稱。第一個新增的項目如下所示﹕


    kws/admin@ACME.COM   *

    此項目賦予 ACME.COM 範疇中的 kws/admin 主管修改 KDC 中的主管或政策的功能。預設的安裝包括一個 “*” 以符合所有的管理主管。這可能造成安全上的顧慮,因此包括一份所有管理主管的清單會比較安全。

  7. 開始 kadmin.local

    下幾個步驟可以建立 SEAM 所用的主管。


    kdc1 # /usr/krb5/sbin/kadmin.local
    kadmin.local: 
    1. 使用 kadmin.local 來將管理主管新增至資料庫中。

      您可以隨您所需來新增許多管理主管。您必須新增至少一個管理主管以完成 KDC 的設置過程。在此例中,新增了一個 kws/admin 主管。您可以利用一個適當的主管名稱來取代 “kws。”


      kadmin.local: addprinc kws/
      admin
      Enter password for principal kws/admin@ACME.COM: < 鍵入密碼>
      Re-enter password for principal kws/admin@ACME.COM: < 再一次鍵入> Principal "kws/admin@ACME.COM" created. 
      kadmin.local:
    2. 使用 kadmin.local 來建立一個 kadmin 的密鑰表檔案。

      此指令序列可以利用 kadminchangepw 的主管項目來建立一個特殊的密鑰表檔案。這些主管為 kadmind 服務所需。


      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.acme.com
      Entry for principal kadmin/kdc1.acme.com with kvno 3, 
      encryption type DES-CBC-CRC
      added to keytab WRFILE:/etc/krb5/kadm5.keytab.
      kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc1.acme.com 
      Entry for principal changepw/kdc1.acme.com with 
      kvno 3, encryption type DES-CBC-CRC added to keytab 
      WRFILE:/etc/krb5/kadm5.keytab.
      kadmin.local: 
    3. 退出 kadmin.local

      您已經新增了下一步的所有必要主管。


      kadmin.local: quit
      
  8. 開始 Kerberos 常駐程式。


    kdc1 # /etc/init.d/kdc startkdc1 # 
    /etc/init.d/kdc.master start
    
  9. 開始 kadmin

    此時您可以使用 SEAM 管理工具來新增主管。此處所示的指令行範例僅供方便之用。您必須以您在此程序之前所建立的其中一個管理主管名稱來登入。


    kdc1 # /usr/krb5/sbin/kadmin -p kws/admin
    Enter password: <輸入 kws/admin 密碼> 
    kadmin:
    1. 使用 kadmin 來建立主 KDC 主機主管。

      主機主管是由 Kerberos 化的應用程式(如 klistkprop)以及 Kerberos 化服務(如 ftptelnet)所使用。


      kadmin: addprinc -randkey host/kdc1.acme.com
      Principal "host/kdc1.acme.com@ACME.COM" created.
      kadmin: 
    2. 可任選﹕使用 kadmin 來建立主 KDC root 主管。

      此主管是用於辯證的 NFS 裝載,因此一個主 KDC 上可能並不需要。


      kadmin: addprinc root/kdc1.acme.com 
      Enter password for principal root/kdc1.acme.com@ACME.COM:< 鍵入密碼> 
      Re-enter password for principal root/kdc1.acme.com@ACME.COM:< 再一次鍵入> 
      Principal "root/kdc1.acme.com@ACME.COM" created. 
      kadmin:
    3. 將主 KDC 主機主管新增至主 KDC 密鑰表檔案中。

      將主機主管新增至密鑰表檔案中以自動使用此主管。


      kadmin: ktadd host/kdc1.acme.com
      kadmin: Entry for principal host/kdc1.acme.com with
        kvno 3, encryption type DES-CBC-CRC added to keytab
        WRFILE:/etc/krb5/krb5.keytab
      kadmin: quit
      
    4. 退出 kadmin


      kadmin: quit
      
  10. 將每個 KDC 的項目新增至傳播設置檔案中 (kpropd.acl)。

    請參見 kprop(1M) 線上援助頁中有關此檔案的詳細說明。如果您是使用設置檔案來安裝 SEAM 軟體的話,請確認檔案內容而不要編輯它。


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.acme.com@ACME.COM
    host/kdc2.acme.com@ACME.COM
  11. 可任選﹕使用 NTP 或另一個時鐘同步化機制來同步化主 KDC 時鐘。

    雖然沒有必要安裝與使用 NTP,但每個時鐘必須在 krb5.conf 檔案的 libdefaults 一節中所定義的預設時間之內,以確保辯證成功。請參見 "同步化 KDC 及 SEAM 客戶端之間的時鐘" 中有關 NTP 的資訊。

如何設置一個從屬 KDC

在此程序中設置了一個名為 kdc3 的新從屬 KDC。要提供 一個完成的範例,我們假設您在安裝軟體時並未使用事先設置程序,或者在執行事先設置程序時並位將 kdc3 定義為一個從屬。如果您使用程序並且辨識 kdc3 為一個從屬,那麼此程序中所包括的許多檔案都不需要編輯,但您應該審閱檔案的內容。

此程序使用下列設置參數﹕

  1. 設置一個從屬 KDC 的先決條件。

    此程序需要先已設置主 KDC,而且 SEAM 從屬 KDC 軟體也已安裝在 kdc3 之上。如果此從屬要是可調換的話,請參見 "調換主與從屬 KDC" 中的特定指示。

  2. 成為主 KDC 之上的超級使用者。

  3. 在主 KDC 之上﹕開始 kadmin

    您必須以其中一個您在設置主 KDC 時所建立的管理主管名稱來登入。


    kdc1 # /usr/krb5/sbin/kadmin -p kws/admin
    Enter password: 
    <輸入 kws/admin 密碼>
    kadmin: 
    
    1. 在主 KDC 之上﹕如果尚未將從屬主機主管新增至資料庫中的話,請使用 kadmin 來新增。

      為了讓從屬能夠正常運作,它必須有一個主機主管。


      kadmin: addprinc -randkey host/kdc3.acme.com
      Principal "host/kdc3@ACME.COM" created.
      kadmin: 
    2. 可任選﹕在主 KDC 之上,使用 kadmin 來建立從屬 KDC root 主管。

      如果從屬將要 NFS 裝載一個辯證的檔案系統的話,才需要此主管。


      kadmin: addprinc root/kdc3.acme.com 
      Enter password for principal root/kdc3.acme.com@ACME.COM:< 鍵入密碼>
      Re-enter password for principal root/kdc3.acme.com@ACME.COM: < 再一次鍵入> 
      Principal "root/kdc3.acme.com@ACME.COM" created. kadmin:
    3. 退出 kadmin


      kadmin: quit
      
  4. 在主 KDC 之上﹕編輯 Kerberos 設置檔案 (krb5.conf)。

    您必須為每個從屬新增一個項目。請參見 krb5.conf(4) 線上援助頁中有關此檔案的詳細說明。如果您在執行事先設置的程序時,將 kdc3 定義為一個從屬伺服器,請確認檔案的內容而不要編輯它。


    kdc1 # cat /etc/krb5/krb5.conf
    [libdefaults]
            default_realm = ACME.COM
    
    [realms]
                    ACME.COM = {
                    kdc = kdc1.acme.com
                    kdc = kdc2.acme.com
                    kdc = kdc3.acme.com
                    admin_server = kdc1.acme.com
            }
    
    [domain_realm]
            .acme.com = ACME.COM
    #
    # if the domain name and realm name are equivalent, 
    # this entry is not needed
    #        
    [logging]
            default = FILE:/var/krb5/kdc.log
            kdc = FILE:/var/krb5/kdc.log
    
    [appdefaults]
        gkadmin = {
            help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
    
  5. 在主 KDC 之上﹕為每個從屬 KDC 新增一個項目至資料庫傳播設置檔案中 (kpropd.acl)。

    請參見 kprop(1M) 線上援助頁中有關此檔案的詳細說明。如果您在執行事先設置的程序時,將 kdc3 定義為一個從屬伺服器,請確認檔案的內容而不要編輯它。


    kdc1 # cat /etc/krb5/kpropd.acl
    host/kdc1.acme.com@ACME.COM
    host/kdc2.acme.com@ACME.COM
    host/kdc3.acme.com@ACME.COM
    
  6. 在所有從屬 KDC 之上﹕從主 KDC 伺服器中複製 KDC 管理檔案。

    所有的從屬 KDC 之上都必須依照此步驟,因為主 KDC 伺服器有每個 KDC 伺服器所需的已更新資訊。如果您在執行事先設置的程序時,將 kdc3 定義為一個從屬伺服器,請確認檔案的內容而不要編輯它。 您可以使用 ftp 或是一個較簡單的傳輸機制,從主 KDC 中抓取下列檔案的副本﹕

    • /etc/krb5/krb5.conf

    • /etc/krb5/kdc.conf

    • /etc/krb5/kpropd.acl

  7. 在新的從屬之上﹕使用 kadmin 來將從屬的主機主管新增至從屬的密鑰表檔案。

    您必須以您在設置主 KDC 時所建立的其中一個管理主管名稱來登入。此項目可以讓 kprop 及其他 Kerberos 化的應用程式正常運作。


    kdc3 # /usr/krb5/sbin/kadmin -p kws/admin 
    Enter password:<輸入 kws/admin 密碼> 
    kadmin:ktadd host/kdc3.acme.com
    kadmin: Entry for principal host/kdc3.acme.com with   
    kvno 3, encryption type DES-CBC-CRC added to keytab   
    WRFILE:/etc/krb5/krb5.keytab
     kadmin: quit
    
  8. 在主 KDC 之上﹕將從屬 KDC 名稱新增至 cron 工作,它會執行 crontab -e 以自動執行備份。

    將每個從屬 KDC 伺服器的名稱新增在 kprop_script 行的結尾。如果您在執行事先設置的程序時,將 kdc3 定義為一個從屬伺服器,請確認檔案的內容而不要編輯它。


    10 3 * * * /usr/krb5/lib/kprop_script kdc2.acme.com kdc3.acme.com
    

    您可能也要變更備份的時間。此項設置會在每天的上午 3:10 開始備份過程。

  9. 在主 KDC 之上﹕使用 kprop_script 來備份與傳播資料庫。

    如果已經有一個資料庫的備份副本,就不需要完成另一個備份。請參見 "如何以手動方式將 Kerberos 資料庫傳播至從屬 KDC" 中進一步的指示。


    kdc1 # /usr/krb5/lib/kprop_script kdc3.acme.com
    Database propagation to kdc3.acme.com: SUCCEEDED
  10. 在新的從屬之上﹕使用kdb5_util 來建立一個存放檔案。


    kdc3 # /usr/krb5/sbin/kdb5_util stash
    kdb5_util: Cannot find/read stored master key while reading master key 
    kdb5_util: Warning: proceeding without master key 
    
    Enter KDC database master key:  < 鍵入密鑰>
    
  11. 在新的從屬之上﹕開始 KDC 常駐程式 (krb5kdc)。


    kdc3 # /etc/init.d/kdc start
    
  12. 可任選﹕在新的從屬之上,使用 NTP 或另一個時鐘同步化機制來同步化主 KDC 時鐘。

    您並不一定要安裝與使用 NTP,但是每一個時鐘都必須在 krb5.conf 檔案的 libdefaults 一節中所定義的預設時間之內,才能讓辯證成功。請參見 "同步化 KDC 及 SEAM 客戶端之間的時鐘" 中有關 NTP 的資訊。