手動設定 Kerberos 用戶端

設定 Kerberos 時,一般可以採用兩種方法 — 透過 /etc/krb5.conf 檔案靜態設定,或透過 DNS 動態設定。使用 DNS 組態時,Kerberos 應用程式會嘗試透過 DNS 記錄找出 KDC 服務。使用靜態組態時,請將 KDC 伺服器的主機名稱新增到 krb5.conf(並在移動 KDC 時更新檔案,或以其他方式重新設定領域)。

以 DNS 為基礎的組態通常較有彈性,每台機器的組態工作量比較少。但是,它要求您的領域名稱必須和 DNS 網域或它的子網域一樣。透過 DNS 設定 Kerberos 也會產生些微的安全性問題 — 攻擊者可透過 DNS 嚴重地干擾您的基礎結構 (藉由癱瘓名稱伺服器、欺騙 DNS 記錄等)。但是,最多僅能達成拒絕服務而已。除非您在 krb5.conf 中輸入 IP 位址取代主機名稱,否則在靜態組態案例中也會發生相似狀況。

靜態組態

設定 Kerberos 的其中一個方式是編輯 /etc/krb5.conf 組態檔。預設安裝的檔案包含各種範例項目。在啟動之前,請刪除所有這些項目。krb5.conf 由數個小節所組成,每一個由包括在括號中的小節名稱做為前導,如 [this]

若要設定您的 Kerberos 用戶端,請將下列節新增到 krb5.conf (其中 kdc.example.com 是 KDC 的主機名稱):

[libdefaults]
        default_realm = EXAMPLE.COM

[realms]
        EXAMPLE.COM = {
                kdc = kdc.example.com
                admin_server = kdc.example.com
        }

default_realm 行設定 Kerberos 應用程式的預設領域。如果您有數個領域,僅需將其他敘述句新增到 [realms] 小節。

同時新增敘述句到此檔案,告知應用程式如何將主機名稱對應到領域。例如,在連線到遠端主機時,Kerberos 程式庫必須知道此主機所處的領域。這必須在 [domain_realms] 小節中設定:

[domain_realm]
        .example.com = EXAMPLE.COM
        www.foobar.com = EXAMPLE.COM

這告訴程式庫 example.com DNS 網域中的所有主機均位於 EXAMPLE.COM Kerberos 領域。此外,名為 www.foobar.com 的外部主機應該被視為 EXAMPLE.COM 領域的成員。

以 DNS 為基礎的組態

以 DNS 為基礎的 Kerberos 組態大量使用 SRV 記錄。請參閱 (RFC2052) A DNS RR 以指定服務的位置,網址為 http://www.ietf.org。在 BIND 名稱伺服器的較早執行方式中不支援這些記錄。至少必須使用 BIND 版本 8 才可執行。

SRV 的名稱 (就 Kerberos 相關的部分) 格式永遠為 _service._proto.realm,此處領域為 Kerberos 領域。DNS 中的網域名稱沒有大小寫之分,因此有大小寫之分的 Kerberos 領域在使用此組態方式時會發出問題。_service 是服務名稱 (例如,在嘗試聯絡 KDC 或密碼服務時使用不同名稱)。_proto 可以是 _udp_tcp,但是並非所有服務均支援兩種通訊協定。

SRV 來源記錄的資料部分由優先程度值、權重、連接埠號碼和主機名稱所組成。優先程度定義嘗試主機的順序 (較低的值表示較高的優先程度)。權重在此支援相同優先程度伺服器之間負載平衡的排序。您可能從不需要它,因此也可以設為零。

MIT Kerberos 目前在查詢服務時會查閱下列名稱:

_kerberos

定義 KDC 精靈 (驗證和票證授予伺服器) 的位置。典型記錄是像這樣:

_kerberos._udp.EXAMPLE.COM.  IN  SRV    0 0 88 kdc.example.com. 
_kerberos._tcp.EXAMPLE.COM.  IN  SRV    0 0 88 kdc.example.com.
_kerberos-adm

描述遠端管理服務的位置。典型記錄是像這樣:

_kerberos-adm._tcp.EXAMPLE.COM. IN  SRV    0 0 749 kdc.example.com.

因為 kadmind 不支援 UDP,應該沒有 _udp 記錄。

和靜態組態檔相似,有一種機制可通知用戶端特定伺服器在 EXAMPLE.COM 領域中,即使它不是 example.com DNS 網域的一部分。可將 TXT 記錄附加到 _keberos.hostname 來完成,如此處所示:

_keberos.www.foobar.com.  IN TXT "EXAMPLE.COM"

調整時鐘偏移

時鐘偏移是接受時間戳記不完全符合主機系統時鐘票證的之容錯度。時鐘偏移通常設為 300 秒鐘 (五分鐘)。這表示票證的時間戳記可以比伺服器的時間超前或延後五分鐘。

在使用 NTP 同步化所有主機時,可將此值減少到一分鐘左右。時鐘偏移值可在 /etc/krb5.conf 中設定如下:

[libdefaults]
        clockskew = 120