套用至用戶端的安全性模式,是以憑證層級與認證方法二者的組合加以定義。
匿名。允許匿名存取目錄的某些部分,其意味著所有存取目錄的人皆具備目錄的讀取權限。
如果使用匿名憑證層級,則必須允許所有 LDAP 命名項目與屬性的讀取權限。
請勿允許目錄的匿名寫入存取,因為具有DIT 寫入權限的任何人皆可變更 DIT 中的資訊,包含其他使用者的密碼或其自身的身份識別。
代理。用戶端使用代理帳號認證或連結至目錄。
此代理帳號可能是可連結至目錄的任何項目。代理帳號需要足夠的存取權限,才能在目錄上執行命名服務功能。您需要使用代理憑證層級,在每個用戶端上配置 proxyDN 和 proxyPassword。加密的 proxyPassword 儲存在本機用戶端上。
代理匿名。在多值項目中定義了多個憑證層級。
指定了代理匿名層級的用戶端會先使用其代理身份識別嘗試認證。如果用戶端因為任何原因 (例如使用者封鎖、密碼過期),而無法以代理使用者身份進行認證,則用戶端將使用匿名存取。視目錄配置方式的不同,可能會導致不同的服務層級。
用戶端認證可透過下列方式之一執行:
提供 DN 與密碼。
透過用戶端所呈現的憑證。
憑證型認證會使用透過 SSL 協定取得的用戶端憑證,尋找使用者的身份識別項目。在憑證型認證中,用戶端會傳送可指定外部機制的 SASL 連結請求。此連結請求需依賴已建立的 SSL 認證機制。
透過 SASL 型機制。
在所有作業系統上,SASL 均透過 DIGEST-MD5 運作。
在 Solaris 作業系統上,SASL 會採用可讓用戶端認證透過 Kerberos V5 進行的 GSSAPI 機制。
使用這兩個 SASL 機制之一時,必須同時配置伺服器,使其執行身份識別對映。SASL 憑證稱為主體。這兩項機制都必須具有特定的對映,以決定「主體」內容的連結 DN。當「主體」對映至單一使用者項目,而 SASL 機制驗證該名使用者的身份識別時,使用者的 DN 即為連線的連結 DN。
透過 SSL 用戶端認證模式。
若想讓所有用戶端均在 SSL 層上進行授權,請使用 SSL 用戶端認證。用戶端應用程式會傳送其 SSL 憑證至伺服器,以進行認證。您可以使用 SSL-client-auth-mode 旗標,指定伺服器將允許、需要或不允許 SSL 用戶端認證。預設會允許用戶端進行認證。
本節提供下列有關在目錄伺服器上配置兩個 SASL 機制的資訊。
如需有關配置安全性的更多資訊,請參閱配置 LDAP 用戶端以使用安全性。
配置 SASL 機制之前,必須先指定是否需要加密。SASL 加密的需求,由安全性強度係數 (SSF) 的最大值與最小值所設定。
dsSaslMinSSF(5dsat) 與 dsSaslMaxSSF(5dsat) 屬性代表加密金鑰長度,這些屬性儲存於 cn=SASL, cn=security, cn=config 之中。
伺服器允許任何層級的加密,包含不加密。這表示目錄伺服器接受大於 256 的 dsSaslMinSSF 與 dsSaslMaxSSF 值。但目前沒有任何 SASL 機制支援大於 128 的 SSF。目錄伺服器會在 SSF 可用的最大值 (128) 以內協調這些值。因此,視可用的基礎機制之不同,SSF 實際上的最大值可能會小於配置的最大值。
SASL 安全性係數認證取決於兩個主要項目:伺服器與用戶端應用程式所請求的最小與最大係數,以及基礎安全性元件所提供的可用加密機制。概略地說,伺服器與用戶端會嘗試使用小於或等於兩者之最大設定係數,但大於或等於兩者之最小係數的最高可用安全性係數。
目錄伺服器預設的最小 SASL 安全性係數 dsSaslMinSSF 為 0,表示沒有任何保護。除非您變更目錄伺服器的最小值,否則實際上的最小值取決於用戶端設定。實務上應將最小值設為您實際上要讓伺服器與用戶端使用的最低層級。若伺服器與用戶端無法協調出符合最小需求的機制,則不會建立連線。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
若需要 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 |
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
若不允許 SASL 加密,請將 dsSaslMinSSF 與 dsSaslMaxSSF 值都設為零。
$ 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 機制在進行用戶端認證時,會比較用戶端所傳送的雜湊值與使用者的密碼雜湊。但由於此機制必須讀取使用者密碼,因此所有想透過 DIGEST-MD5 進行認證的使用者,在目錄中都必須要有 {CLEAR} 密碼。將 {CLEAR} 密碼儲存到目錄時,您必須如第 6 章, 目錄伺服器存取控制中所述,確實透過 ACI 適當限制密碼值的存取權。此外,您還必須如為屬性值加密中所述,在尾碼中配置屬性加密。
下列程序說明如何配置目錄伺服器以使用 DIGEST-MD5。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
使用 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 |
若 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 為下列其中一項:
/usr/lib/mps/sasl2
install-path/dsee6/private/lib
針對 DIGEST-MD5 使用預設身份識別對映,或建立新的對映。
如需相關資訊,請參閱DIGEST-MD5 身份識別對映。
請確定所有將使用 DIGEST-MD5 而透過 SSL 存取伺服器的使用者,均已將密碼儲存在 {CLEAR} 中。
如需密碼儲存機制,請參閱第 7 章, 目錄伺服器密碼策略。
若修改了 SASL 配置項目或任何 DIGEST-MD5 身份識別對映項目,請重新啟動目錄伺服器。
SASL 機制的身份識別對映會嘗試比對 SASL 身份識別的憑證與目錄中的使用者項目。如果在對映中找不到對應 SASL 身份識別的 DN,認證即會失敗。如需此機制的完整說明,請參閱「Sun Java System Directory Server Enterprise Edition 6.1 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。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
編輯預設對映項目,或在 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) |
重新啟動目錄伺服器,使您的新對映生效。
透過 SASL 的通用安全服務 API (GSSAPI) 可讓您使用第三方安全性系統 (如 Kerberos V5) 進行用戶端認證。GSSAPI 程式庫僅適用於 Solaris 作業系統 SPARC® 平台。Sun 建議您在 Sun Enterprise Authentication MechanismTM 1.0.1 伺服器上安裝 Kerberos V5 實作。
此伺服器會使用 GSSAPI 驗證使用者的身份識別。接著,SASL 機制會套用 GSSAPI 對映規則,以取得此連線期間對所有作業而言皆為連結 DN 的 DN。
請根據製造商的指示配置 Kerberos 軟體。若您使用 Sun Enterprise Authentication Mechanism 1.0.1 伺服器,請執行此程序。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
配置 /etc/krb5 中的檔案。
建立用以儲存使用者與服務的 Kerberos 資料庫。
在資料庫中,建立 LDAP 服務的主體。
$ ldap/server-FQDN@realm |
其中 server-FQDN 是您目錄伺服器完全合格的網域名稱。
啟動 Kerberos 常駐程式程序。
DNS 必須配置於主機電腦上。
如需這些步驟的詳細指示,請參閱軟體文件。另請參閱使用 GSSAPI 與 SASL 配置 Kerberos 認證的範例。
下列程序說明如何配置目錄伺服器以在 Solaris 作業系統上使用 GSSAPI。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
如GSSAPI 身份識別對映中所述,建立 GSSAPI 的預設身份識別對映與所有自訂對映。
建立用以儲存服務金鑰的 keytab。
您的 LDAP 服務金鑰會儲存在 keytab 中。
若修改了 SASL 配置項目或任何 GSSAPI 身份識別對映項目,請重新啟動目錄伺服器。
請注意,DNS 必須配置於主機電腦上。
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 對映。根據您的用戶端定義所使用之主體的方式,定義預設對映以及所需要的任何自訂對映。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
在 cn=GSSAPI,cn=identity mapping, cn=config 下建立新的對映項目。
如需身份識別對映項目中的屬性定義,請參閱「Sun Java System Directory Server Enterprise Edition 6.1 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 |
重新啟動目錄伺服器,使您的新對映生效。