Sun Java System Directory Server Enterprise Edition 6.2 管理指南

配置憑證層級與認證方法

套用至用戶端的安全模式會透過憑證層級與認證方法的組合進行定義。

目錄伺服器支援下列憑證層級:

用戶端認證是伺服器驗證用戶端身份識別的機制。

用戶端認證可透過下列方式之一執行:

本節提供下列有關在目錄伺服器上配置兩個 SASL 機制的資訊。

如需有關配置安全性的更多資訊,請參閱配置 LDAP 用戶端以使用安全性

設定目錄伺服器中的 SASL 加密層級

配置 SASL 機制之前,必須先指定是否需要加密。SASL 加密的需求,由安全性強度係數 (SSF) 的最大值與最小值所設定。

dsSaslMinSSF(5dsat)dsSaslMaxSSF(5dsat) 屬性代表加密金鑰長度,這些屬性儲存於 cn=SASL, cn=security, cn=config 之中。

伺服器允許任何層級的加密,包含不加密。這表示目錄伺服器接受大於 256 的 dsSaslMinSSFdsSaslMaxSSF 值。但目前沒有任何 SASL 機制支援大於 128 的 SSF。目錄伺服器會在 SSF 可用的最大值 (128) 以內協調這些值。因此,視可用的基礎機制之不同,SSF 實際上的最大值可能會小於配置的最大值。

SASL 安全性係數認證取決於兩個主要項目:伺服器與用戶端應用程式所請求的最小與最大係數,以及基礎安全性元件所提供的可用加密機制。概略地說,伺服器與用戶端會嘗試使用小於或等於兩者之最大設定係數,但大於或等於兩者之最小係數的最高可用安全性係數。

目錄伺服器預設的最小 SASL 安全性係數 dsSaslMinSSF0,表示沒有任何保護。除非您變更目錄伺服器的最小值,否則實際上的最小值取決於用戶端設定。實務上應將最小值設為您實際上要讓伺服器與用戶端使用的最低層級。若伺服器與用戶端無法協調出符合最小需求的機制,則不會建立連線。

Procedure需要 SASL 加密

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 若需要 SASL 加密,請將 dsSaslMinSSF 值設為所需的最小加密。


    $ ldapmodify -h host -p port -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: cn=SASL, cn=security, cn=config
    changetype: modify
    replace: dsSaslMinSSF
    dsSaslMinSSF: 128
    ^D

Procedure不允許 SASL 加密

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 若不允許 SASL 加密,請將 dsSaslMinSSFdsSaslMaxSSF 值都設為零。


    $ ldapmodify -h host -p port -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: cn=SASL, cn=security, cn=config
    changetype: modify
    replace: dsSaslMinSSF
    dsSaslMinSSF: 0
    
    replace: dsSaslMaxSSF
    dsSaslMaxSSF: 0
    ^D

透過 DIGEST-MD5 的 SASL 認證

DIGEST-MD5 機制會比較用戶端傳送的雜湊值與使用者密碼的雜湊值,以認證用戶端。但由於此機制必須讀取使用者密碼,因此所有想透過 DIGEST-MD5 進行認證的使用者,在目錄中都必須要有 {CLEAR} 密碼。將 {CLEAR} 密碼儲存到目錄時,您必須如第 6 章, 目錄伺服器存取控制中所述,確實透過 ACI 適當限制密碼值的存取權。此外,您還必須如為屬性值加密中所述,在尾碼中配置屬性加密。

Procedure配置 DIGEST-MD5 機制

下列程序說明如何配置目錄伺服器以使用 DIGEST-MD5。

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 使用 ldapsearch 指令,驗證 DIGEST-MD5 是根項目上的 supportedSASLMechanisms 屬性值。

    例如,下列指令可顯示哪些是啟用的 SASL 機制:


    $ ldapsearch -h host -p port -D cn=admin,cn=Administrators,cn=config -w - \
     -s base -b "" "(objectclass=*)" supportedSASLMechanisms
    Enter bind password:
    dn:
    supportedSASLMechanisms: EXTERNAL
    supportedSASLMechanisms: DIGEST-MD5
    supportedSASLMechanisms: GSSAPI
    ^D
  2. 若 DIGEST-MD5 尚未啟用,請加以啟用。


    $ ldapmodify -h host -p port -D cn=admin,cn=Administrators,cn=config -w - 
    Enter bind password:
    dn: cn=SASL, cn=security, cn=config
    changetype: modify
    add: dsSaslPluginsEnable
    dsSaslPluginsEnable: DIGEST-MD5
    -
    replace: dsSaslPluginsPath
    dsSaslPluginsPath: SASL-library
    ^D

    其中 SASL-library 為下列其中一項:

    JES 安裝

    /usr/lib/mps/sasl2

    Zip 安裝

    install-path/dsee6/private/lib

  3. 針對 DIGEST-MD5 使用預設身份識別對映,或建立新的對映。

    如需相關資訊,請參閱DIGEST-MD5 身份識別對映

  4. 請確定所有將使用 DIGEST-MD5 而透過 SSL 存取伺服器的使用者,均已將密碼儲存在 {CLEAR} 中。

    如需密碼儲存機制,請參閱第 7 章, 目錄伺服器密碼策略

  5. 若修改了 SASL 配置項目或任何 DIGEST-MD5 身份識別對映項目,請重新啟動目錄伺服器。

DIGEST-MD5 身份識別對映

SASL 機制的身份識別對映會嘗試比對 SASL 身份識別的憑證與目錄中的使用者項目。如果在對映中找不到對應 SASL 身份識別的 DN,認證即會失敗。如需此機制的完整描述,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Reference」

SASL 身份識別是一個名為 Principal 的字串,用以表示各機制之特定格式下的使用者。在 DIGEST-MD5 中,用戶端應建立含有 dn: 前綴與 LDAP DN,或含有 u: 前綴與任何用戶端指定文字的主體。對映期間,用戶端所傳送的主體可用於 ${Principal} 預留位置中。

伺服器配置的下列項目,即為 DIGEST-MD5 的預設身份識別對映:


dn: cn=default,cn=DIGEST-MD5,cn=identity mapping,cn=config
objectClass: top
objectClass: nsContainer
objectClass: dsIdentityMapping
objectClass: dsPatternMatching
cn: default
dsMatching-pattern: \${Principal}
dsMatching-regexp: dn:(.*)
dsMappedDN: \$1

此身份識別對映會假設主體的 dn 欄位含有現有使用者在目錄中的實際 DN。

Procedure定義您自己的 DIGEST-MD5 身份識別對映

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 編輯預設對映項目,或在 cn=DIGEST-MD5,cn=identity mapping,cn=config 下建立新的對映項目。

    下列指令將說明此對映的定義方式:


    $ ldapmodify -a -h host1 -p 1389 -D cn=admin,cn=Administrators,cn=config -w -
    Enter bind password:
    dn: cn=unqualified-username,cn=DIGEST-MD5,cn=identity mapping
    cn=config
    objectclass: dsIdentityMapping
    objectclass: dsPatternMatching
    objectclass: nsContainer
    objectclass: top
    cn: unqualified-username
    dsMatching-pattern: \${Principal}
    dsMatching-regexp: u:(.*)@(.*)\\.com
    dsSearchBaseDN: dc=\$2
    dsSearchFilter: (uid=\$1)
  2. 重新啟動目錄伺服器,使您的新對映生效。

透過 GSSAPI 的 SASL 認證 (僅限 Solaris 作業系統)

透過 SASL 的通用安全服務 API (GSSAPI) 可讓您使用協力廠商的安全性系統 (例如 Kerberos V5) 來認證用戶端。GSSAPI 程式庫僅適用於 Solaris 作業系統 SPARC® 平台。Sun 建議您在 Sun Enterprise Authentication MechanismTM 1.0.1 伺服器上安裝 Kerberos V5 實作。

此伺服器會使用 GSSAPI 驗證使用者的身份識別。接著,SASL 機制會套用 GSSAPI 對映規則,以取得此連線期間對所有作業而言皆為連結 DN 的 DN。

Procedure配置 Kerberos 系統

根據製造商的指示配置 Kerberos 軟體。若您使用 Sun Enterprise Authentication Mechanism 1.0.1 伺服器,請執行此程序。

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. 配置 /etc/krb5 中的檔案。

  2. 建立用以儲存使用者與服務的 Kerberos 資料庫。

  3. 在資料庫中,建立 LDAP 服務的主體。


    $ ldap/server-FQDN@realm
    

    其中 server-FQDN 是您目錄伺服器完全合格的網域名稱。

  4. 啟動 Kerberos 常駐程式程序。


    備註 –

    DNS 必須配置於主機電腦上。


    如需這些步驟的詳細指示,請參閱軟體文件。另請參閱使用 GSSAPI 與 SASL 配置 Kerberos 認證的範例

Procedure配置 GSSAPI 機制

下列程序說明如何配置目錄伺服器以在 Solaris 作業系統上使用 GSSAPI:

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. GSSAPI 身份識別對映中所述,建立 GSSAPI 的預設身份識別對映與所有自訂對映。

  2. 建立用以儲存服務金鑰的 keytab。

    您的 LDAP 服務金鑰會儲存在 keytab 中。

    1. 請確定只有目錄伺服器使用者可讀取 keytab。

    2. 將檔案名稱變更為預設值 /etc/krb5/krb5.keytab 以外的名稱。

    3. 設定環境變數 KRB5_KTNAME,以確保所使用的是新的 keytab,而非預設 keytab。

  3. 若修改了 SASL 配置項目或任何 GSSAPI 身份識別對映項目,請重新啟動目錄伺服器。

    請注意,DNS 必須配置於主機電腦上。

GSSAPI 身份識別對映

SASL 機制的身份識別對映會嘗試比對 SASL 身份識別的憑證與目錄中的使用者項目。如果在對映中找不到對應 SASL 身份識別的 DN,認證即會失敗。

SASL 身份識別是一個名為 Principal 的字串,用以表示各機制之特定格式下的使用者。在 Kerberos 中使用 GSSAPI 時,主體將是 uid [/instance][@ realm] 格式的身份識別。uid 可包含一個可選擇的 instance 識別碼,再加上通常為網域名稱的可選擇 realm。例如,下列字串皆為有效的使用者主體:


bjensen
bjensen/Sales
bjensen@EXAMPLE.COM
bjensen/Sales@EXAMPLE.COM

目錄中最初並未定義 GSSAPI 對映。根據您的用戶端定義所使用之主體的方式,定義預設對映以及所需要的任何自訂對映。

Procedure定義 GSSAPI 的身份識別對映

無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。

  1. cn=GSSAPI,cn=identity mapping, cn=config 下建立新的對映項目。

    如需身份識別對映項目中的屬性定義,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Reference」instance-path/ldif/identityMapping_Examples.ldif 中含有 GSSAPI 的對映範例。

    此檔案中的預設 GSSAPI 對映,會假設主體中僅包含一個使用者 ID。此對映可判斷位在目錄之固定分支中的使用者:


    dn: cn=default,cn=GSSAPI,cn=identity mapping,cn=config
    objectclass: dsIdentityMapping
    objectclass: nsContainer
    objectclass: top
    cn: default
    dsMappedDN: uid=\${Principal},ou=people,dc=example,dc=com

    此檔案中的另一個範例說明如何在使用者 ID 位於含有已知範圍的主體中時,判斷使用者 ID。


    dn: cn=same_realm,cn=GSSAPI,cn=identity mapping,cn=config
    objectclass: dsIdentityMapping
    objectclass: dsPatternMatching
    objectclass: nsContainer
    objectclass: top
    cn: same_realm
    dsMatching-pattern: \${Principal}
    dsMatching-regexp: (.*)@EXAMPLE.COM
    dsMappedDN: uid=\$1,ou=people,dc=EXAMPLE,dc=COM
  2. 重新啟動目錄伺服器,使您的新對映生效。