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

第 7 章 目錄伺服器密碼策略

當使用者連線至目錄伺服器時,會認證該使用者。目錄會根據認證期間建立的身份識別,授予使用者存取權限與資源限制。本章中的帳號大致表示使用者項目。帳號也反映該使用者可在目錄上執行作業的權限。在此密碼策略的說明中,每個帳號都會與使用者項目以及密碼相關。

本章也會說明密碼策略的帳號啟用。目錄伺服器管理員無須遵守密碼策略,可直接對帳號進行鎖定與解除鎖定。

本章不包含認證方法。部分認證方法 (例如 SASL GSSAPI 與用戶端 SSL 憑證型認證) 不需要使用密碼。本章中關於密碼策略的資訊不適用於這類認證方法。如需配置認證機制的相關指示,請參閱第 5 章, 目錄伺服器安全性。

本章包含下列主題:

密碼策略與工作表

本節說明密碼策略設定,並提供工作表協助您定義符合您需求的密碼策略。


備註 –

若要使用預設密碼策略,請參閱管理預設密碼策略。


密碼策略設定

在目錄伺服器中指定密碼策略時,會修改或建立包含物件類別 pwdPolicy(5dsoc) 的項目。

定義特定使用者類型的密碼策略時,需要考量下列事項:

本章後續幾節說明如何處理密碼策略的這幾點。使用定義密碼策略的工作表釐清規劃要執行的各項密碼策略。

帳號封鎖策略

本節說明決定帳號封鎖的策略屬性。

目錄伺服器帳號大致表示使用者項目,以及該使用者在目錄上執行作業所具有的權限。每個帳號會與連結 DN 及使用者密碼相關。當出現入侵者嘗試破解密碼時,希望目錄伺服器會鎖定帳號。鎖定功能可避免入侵者使用帳號進行連結,也能避免入侵者繼續攻擊。

身為管理員,您也可以手動停用共用一個角色的所有使用者之帳號。如需相關指示,請參閱手動鎖定帳號。此外,密碼策略的主要部分必須在無人介入且目錄伺服器鎖定帳號的情況下指定。

首先,您必須指定目錄伺服器可以使用 pwdLockout(5dsat) 在發生太多失敗連結時,自動鎖定帳號。目錄伺服器會記錄嘗試連結帳號的連續失敗次數。您可以使用 pwdMaxFailure(5dsat) 指定在目錄伺服器鎖定帳號之前可允許的連續失敗次數。

目錄伺服器會嚴守密碼策略鎖定帳號。此純粹為機械化作業。帳號鎖定的原因可能不是因為入侵者對帳號發動攻擊,而是因為使用者鍵入的密碼不正確。因此,您可以使用 pwdFailureCountInterval(5dsat) 指定目錄伺服器清除失敗嘗試的記錄之前,等待下一次嘗試的時間。您可以使用 pwdLockoutDuration(5dsat) 指定目錄伺服器自動解除鎖定帳號之前,封鎖應持續的時間。如果使用者的錯誤有正當理由而不是出於惡意,管理員不須介入解除鎖定使用者帳號。

如果在整個複寫拓樸中複寫使用者資料,也會複寫封鎖計數器與封鎖屬性。pwdIsLockoutPrioritized(5dsat) 屬性可決定是否以更高的優先權複寫封鎖屬性的更新,因此在大多數情況下,此屬性應為 TRUE。因此,使用者在遭封鎖之前,僅能嘗試連結至一個複本 pwdMaxFailure 次,當使用者嘗試更多複本時,嘗試次數可能變少。另請參閱「Sun Java System Directory Server Enterprise Edition 6.0 Deployment Planning Guide」中的「Preventing Authentication by Using Global Account Lockout」。包含全域封鎖的文件說明如何確定使用者嘗試 pwdMaxFailure 次,才會在整個複寫拓樸中遭封鎖。

密碼變更的策略

本節說明決定密碼變更的策略屬性。

目錄伺服器在許多部署中是身份識別資料的儲存庫。使用者應該能夠如 pwdAllowUserChange(5dsat) 所指定變更密碼,因此您無須變更密碼。

允許使用者變更密碼之後,可能也要控制使用者可以變更密碼的情況。您可以使用 pwdSafeModify(5dsat) 指定變更密碼的使用者必須先提供正確的現有密碼,才能取代密碼。如需如何修改密碼的範例,請參閱在 pwdSafeModify 為 TRUE 時從指令行修改密碼。您可以使用 pwdInHistory(5dsat) 指定目錄伺服器會記住的密碼數目,避免使用者重複使用相同的密碼。您也可以設定 pwdMinAge(5dsat) 以避免使用者變更密碼過於頻繁。

在許多情況下,可利用管理員身份或是由某些您所管理的應用程式,在目錄中建立使用者項目。您可以指定使用者密碼值在使用者第一次連結至新帳號時進行變更。您也可能需要重設使用者密碼,重設之後,使用者應在下次使用帳號時變更密碼。目錄伺服器具有特定屬性 pwdMustChange(5dsat),您可用以表示當另一個使用者重設密碼值之後,使用者是否必須變更密碼。

您也可以指定目錄伺服器管理員在設定 passwordRootdnMayBypassModsChecks(5dsat) 以變更密碼時,不須遵守策略。

密碼內容的策略

本節說明決定密碼內容的策略屬性。

雖然密碼值一般不會在目錄搜尋中傳回,但是攻擊者可能會取得目錄資料庫的存取權。因此,密碼值一般會以使用 passwordStorageScheme(5dsat) 指定的支援雜湊格式之一儲存。

您可以設定 pwdMinLength(5dsat) 強制密碼至少有指定的字元數。

您也可以設定 pwdCheckQuality(5dsat),強制檢查密碼是否符合最基本的密碼品質定義。強制檢查時,目錄伺服器會檢查密碼是否至少具備最基本的長度。伺服器也會檢查密碼是否不含任何 cn、givenName、mail、ou、sn 或 uid 屬性值。此外,啟用 Strong Password Check (密碼強度檢查) 外掛程式時,目錄伺服器會檢查密碼是否不含外掛程式所用之字典檔案的字串。伺服器也會檢查密碼是否包含不同字元類型的適當混合。

您可以使用 dsconf set-server-prop 指令啟用密碼強度檢查。使用 pwd-strong-check-enabled 特性可啟動外掛程式,並重新啟動伺服器以使變更生效。使用 pwd-strong-check-require-charset 特性可指定密碼所需的字元集。pwd-strong-check-require-charset 特性包含下列值:

lower

新密碼必須包含小寫字元。

upper

新密碼必須包含大寫字元。

digit

新密碼必須包含數字。

special

新密碼必須包含特殊字元。

any-two

新密碼至少必須從上述兩個字元集中,各包含至少一個字元。

any-three

新密碼至少必須從上述三個字元集中,各包含至少一個字元。

pwd-strong-check-require-charset 特性的預設設定為 lower && upper && digit && special。

密碼過期的策略

本節說明決定密碼過期的策略屬性。

若要確保使用者定期變更密碼,請設定 pwdMaxAge(5dsat),以配置目錄伺服器在密碼到達特定存在期限之後,設定密碼為過期。

使用者必須收到密碼即將過期的通知。您可以配置目錄伺服器傳回用以連結的密碼即將過期之警告。使用 pwdExpireWarning(5dsat) 定義過期之前多久,才應在用戶端連結時傳回警告。請注意,用戶端應用程式會收到警告。使用者不會直接收到警告。當用戶端應用程式收到密碼即將過期的警告時,必須通知一般使用者。

您可以設定 pwdGraceAuthNLimit(5dsat),允許使用者以過期的密碼嘗試連結一或多次。如此一來,無法及時變更密碼的使用者仍得以連結以變更密碼。請注意,當使用者使用寬限登入進行連結時,使用者可執行任何作業。寬限登入執行起來就好像密碼尚未過期一般。

目錄伺服器會在每次項目上的密碼有所修改時,更新作業屬性 pwdChangedTime(5dsat)。因此,若要啟用密碼過期,已超過期限的使用者密碼將在您啟用密碼過期時立即過期。若您覺得此運作方式不合用,請使用警告與寬限登入。

追蹤上次認證時間的策略

本節包含密碼策略屬性 pwdKeepLastAuthTime(5dsat) 的用法。

一旦設定 pwdKeepLastAuthTime,目錄伺服器就會在每次使用者認證時,追蹤上次成功連結的時間。時間會記錄在使用者項目的 pwdLastAuthTime(5dsat) 作業屬性中。

由於此運作方式會為每個成功的連結作業增加一個更新,因此預設不會啟用 pwdKeepLastAuthTime 功能。您必須明確地啟用此功能,才能於部署中使用。

定義密碼策略的工作表

此工作表設計用以協助您定義密碼策略,以透過指令行介面或使用目錄服務控制中心 (DSCC) 執行。每個密碼策略各使用一個工作表。

記錄密碼策略項目的 DN 之後,請記錄每個策略區中關於屬性設定的決策。另請記錄使用這些設定的理由。

密碼策略工作表 

密碼策略項目辨別名稱 

dn: cn=

策略區 

屬性 

於此處寫入設定 

於此處寫入使用這些設定的理由 

帳號封鎖 

pwdFailureCountInterval(5dsat)

   

pwdIsLockoutPrioritized(5dsat)

           

           

pwdLockout(5dsat)

           

           

pwdLockoutDuration(5dsat)

           

           

pwdMaxFailure(5dsat)

           

           

密碼變更 

passwordRootdnMayBypassModsChecks(5dsat)

           

           

pwdAllowUserChange(5dsat)

           

           

pwdInHistory(5dsat)

           

           

pwdMinAge(5dsat)

           

           

pwdMustChange(5dsat)

           

           

pwdSafeModify(5dsat)

           

           

密碼內容 

passwordStorageScheme(5dsat)

           

           

pwdCheckQuality(5dsat)

           

           

pwdMinLength(5dsat)

   

密碼過期 

pwdExpireWarning(5dsat)

           

           

pwdGraceAuthNLimit(5dsat)

           

           

pwdMaxAge(5dsat)

           

           

追蹤上次認證時間 

pwdKeepLastAuthTime(5dsat)

           

           


備註 –

當 pwdCheckQuality 屬性設為 2 時,伺服器可以執行其他檢查。Password Check (密碼檢查) 外掛程式會同時啟用,外掛程式的設定會影響要在新密碼的值上執行之檢查作業。


管理預設密碼策略

預設密碼策略會套用到目錄實例中未定義專用策略的所有使用者。但是,預設密碼策略不會套用到目錄管理員。如需策略範圍的詳細資訊,請參閱套用的密碼策略。

預設密碼策略是可以使用 dsconf 指令配置的策略。您也可以讀取 cn=Password Policy,cn=config 以檢視預設密碼策略。

本節顯示每個策略區的策略屬性以及相關的 dsconf 伺服器特性,亦說明如何檢視與變更預設密碼策略設定。

密碼策略屬性與 dsconf 伺服器特性之間的關聯

下表顯示每個密碼策略區的密碼策略屬性與相關的 dsconf 伺服器特性。

策略區 

策略屬性 

dsconf 伺服器特性

帳號封鎖 

pwdFailureCountInterval

pwd-failure-count-interval

pwdLockout

pwd-lockout-enabled

pwdLockoutDuration

pwd-lockout-duration

pwdMaxFailure

pwd-max-failure-count

密碼變更 

passwordRootdnMayBypassModsChecks

pwd-root-dn-bypass-enabled

pwdAllowUserChange

pwd-user-change-enabled

pwdInHistory

pwd-max-history-count

pwdMinAge

pwd-min-age

pwdMustChange

pwd-must-change-enabled

pwdSafeModify

pwd-safe-modify-enabled

密碼內容 

pwdCheckQuality

pwd-check-enabled、pwd-accept-hashed-password-enabled、pwd-strong-check-dictionary-path、pwd-strong-check-enabled、pwd-strong-check-require-charset

pwdMinLength

pwd-min-length

passwordStorageScheme

pwd-storage-scheme

密碼過期 

pwdExpireWarning

pwd-expire-warning-delay

pwdGraceAuthNLimit

pwd-grace-login-limit

pwdMaxAge

pwd-max-age

追蹤上次認證時間 

pwdKeepLastAuthTime

pwd-keep-last-auth-time-enabled


備註 –

pwdCheckQuality 的相關特性可配置 Password Check (密碼檢查) 外掛程式。因此,這五個特性適用於整個伺服器實例。這五個特性也適用於 pwdCheckQuality: 2 的其他密碼策略。


Procedure檢視預設密碼策略設定

您可以使用 dsconf 指令檢視預設密碼策略設定。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

    讀取預設密碼策略配置。


    $ dsconf get-server-prop -h host -p port | grep ^pwd-
    pwd-accept-hashed-pwd-enabled      :  N/A
    pwd-check-enabled                  :  off
    pwd-compat-mode                    :  DS5-compatible-mode
    pwd-expire-no-warning-enabled      :  on
    pwd-expire-warning-delay           :  1d
    pwd-failure-count-interval         :  10m
    pwd-grace-login-limit              :  disabled
    pwd-keep-last-auth-time-enabled    :  off
    pwd-lockout-duration               :  1h
    pwd-lockout-enabled                :  off
    pwd-lockout-repl-priority-enabled  :  on
    pwd-max-age                        :  disabled
    pwd-max-failure-count              :  3
    pwd-max-history-count              :  disabled
    pwd-min-age                        :  disabled
    pwd-min-length                     :  6
    pwd-mod-gen-length                 :  6
    pwd-must-change-enabled            :  off
    pwd-root-dn-bypass-enabled         :  off
    pwd-safe-modify-enabled            :  off
    pwd-storage-scheme                 :  SSHA
    pwd-strong-check-dictionary-path   :  /local/ds6/plugins/words-english-big.txt
    pwd-strong-check-enabled           :  off
    pwd-strong-check-require-charset   :  lower
    pwd-strong-check-require-charset   :  upper
    pwd-strong-check-require-charset   :  digit
    pwd-strong-check-require-charset   :  special
    pwd-supported-storage-scheme       :  CRYPT
    pwd-supported-storage-scheme       :  SHA
    pwd-supported-storage-scheme       :  SSHA
    pwd-supported-storage-scheme       :  NS-MTA-MD5
    pwd-supported-storage-scheme       :  CLEAR
    pwd-user-change-enabled            :  on

Procedure變更預設密碼策略設定

您可以使用 dsconf 指令設定伺服器特性,以變更預設密碼策略。


備註 –

完成此程序之前,請閱讀並完成定義密碼策略的工作表。


您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

  1. 從工作表轉譯設定至 dsconf 指令特性設定中。

  2. 使用 dsconf set-server-prop 指令適當地變更預設密碼策略特性。

    例如,下列指令可讓目錄管理員在修改密碼時違反預設策略:


    $ dsconf set-server-prop -h host -p port pwd-root-dn-bypass-enabled:on

管理專用密碼策略

專用密碼策略會定義於 pwdPolicy(5dsoc) 項目中。您可以在目錄樹狀結構的任何位置定義策略,通常會在以策略決定的帳號複寫之子樹狀結構中。該策略具有格式為 cn=policy name,subtree 的 DN。

定義密碼策略之後,可以在想要的使用者項目中設定 pwdPolicySubentry(5dsat) 屬性以指定密碼策略。

本節包含下列主題:

套用的密碼策略

目錄伺服器可讓您配置多個密碼策略。本節說明預設密碼策略與專用密碼策略。本節亦會說明當多個密碼策略可套用到指定的帳號時,將強制執行的策略。

第一次建立目錄伺服器實例時,該實例會有預設密碼策略。預設密碼策略會顯示在配置項目 cn=PasswordPolicy,cn=config 中。預設密碼策略會套用到目錄中除目錄管理員以外的所有帳號。

如同在所有目錄伺服器密碼策略中一般,cn=PasswordPolicy,cn=config 具有物件類別 pwdPolicy(5dsoc)。


備註 –

建立目錄伺服器實例時,密碼策略屬性會保留在 Directory Server 5 相容模式中,以從舊版本升級。在 Directory Server 5 相容模式中,目錄伺服器也會處理具有物件類別 passwordPolicy(5dsoc) 的密碼策略項目。

升級完成後,可以如「Sun Java System Directory Server Enterprise Edition 6.0 Migration Guide」中所述,以完整功能模式使用新密碼策略。目錄應用程式不會感覺到管理動作的進行。

本章包含使用新密碼策略功能的密碼策略配置。


您可以變更預設密碼策略以覆寫預設設定。您可以使用 dsconf(1M) 指令設定預設密碼策略的伺服器特性。這類伺服器特性名稱一般會以 pwd- 前綴為開頭。變更這類特性的設定時,會覆寫該實例的預設密碼策略。但是,複寫不會複製對複本所做的變更。對預設密碼策略所做的變更是實例配置的一部分,而不是目錄資料的一部分。

除了配置預設密碼策略之外,您還可以配置專用密碼策略。專用密碼策略會由目錄樹狀結構中的項目所定義。專用密碼策略項目會有與預設密碼策略相同的物件類別 pwdPolicy(5dsoc),因此會有相同的策略屬性。由於專用密碼策略為標準目錄項目,策略項目會以標準目錄項目相同的方式進行複寫。

使用者項目透過作業屬性 pwdPolicySubentry(5dsat) 的值參照專用密碼策略。使用者項目參照專用密碼策略時,該策略會覆寫實例的預設密碼策略。在許多部署中,您需要指定使用者角色。您可以設定 pwdPolicySubentry 值配置角色與服務類別 (CoS) 搭配使用,以決定套用到使用者帳號的密碼策略。若要覆寫某個角色所設定的密碼策略,請直接變更使用者項目上的 pwdPolicySubentry 值。

總結本節,一開始會套用預設密碼策略。您可以變更預設密碼策略以覆寫預設值。接著,您可以建立專用密碼策略項目以覆寫預設密碼策略。以角色與 CoS 指定密碼策略時,可以指定個別項目的密碼策略以覆寫 CoS 指定的策略。

Procedure建立密碼策略

建立與修改專用密碼策略的方式與建立及修改任何其他目錄項目的方式相同。下列程序示範如何使用文字編輯器在 LDIF 中寫入密碼策略項目。接著,您可以使用 ldapmodify 指令與 -a 選項,將密碼策略項目增加至目錄中。

您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

開始之前

除非另外指定,否則此處顯示的資料範例來自於 Example.ldif。

  1. 為要建立的密碼策略完成密碼策略工作表。

    如需範例,請參閱定義密碼策略的工作表。

  2. 在以工作表為基礎的 LDIF 中寫入密碼策略項目。

    例如,下列策略項目會指定 Example.com 臨時員工的密碼策略,該員工的子樹狀結構根目錄為 dc=example,dc=com:

    dn: cn=TempPolicy,dc=example,dc=com
    objectClass: top
    objectClass: pwdPolicy
    objectClass: LDAPsubentry
    cn: TempPolicy
    pwdCheckQuality: 2
    pwdLockout: TRUE
    pwdLockoutDuration: 300
    pwdMaxFailure: 3
    pwdMustChange: TRUE

    除了預設密碼策略設定之外,此處顯示的策略還會指定其他運作方式,同時會強制執行密碼品質檢查。帳號會在三次連續連結失敗之後鎖定五分鐘 (300 秒)。重設密碼之後必須變更密碼。指定策略給使用者帳號之後,此處明確指定的設定會覆寫預設密碼策略。

  3. 將密碼策略項目增加至目錄中。

    例如,下列指令會增加 dc=example,dc=com 下 Example.com 臨時員工的密碼策略。密碼策略已儲存在名為 pwp.ldif 的檔案中。


    $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f pwp.ldif
    Enter bind password: 
    adding new entry cn=TempPolicy,dc=example,dc=com
    
    $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w --b dc=example,dc=com \
    "(&(objectclass=ldapsubentry)(cn=temppolicy))"
    Enter bind password:
    version: 1
    dn: cn=TempPolicy,dc=example,dc=com
    objectClass: top
    objectClass: pwdPolicy
    objectClass: LDAPsubentry
    cn: TempPolicy
    pwdCheckQuality: 2
    pwdLockout: TRUE
    pwdLockoutDuration: 300
    pwdMaxFailure: 3
    pwdMustChange: TRUE
    $

    如 Example.ldif 中所示,kvaughan 是人力資源部門的經理,具有修改 dc=example,dc=com 項目的存取權。Vaughan 的連結密碼如 Example.ldif 中所示,為 bribery。

另請參閱

若要定義您所定義的策略決定之使用者帳號,請參閱指定密碼策略給個別帳號或使用角色與 CoS 指定密碼策略。

Procedure指定密碼策略給個別帳號

本程序會指定現有的密碼策略給單一使用者帳號。


備註 –

若要完成此程序,必須有可指定的專用密碼策略。請參閱建立密碼策略。


您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

除非另外指定,否則此處顯示的資料範例來自於 Example.ldif。

    將密碼策略 DN 增加至使用者項目之 pwdPolicySubentry 屬性的值。

    例如,下列指令會指定在建立密碼策略中定義的密碼策略給 DN 為 uid=dmiller,ou=people,dc=example,dc=com 的 David Miller 項目:


    $ cat pwp.ldif 
    dn: uid=dmiller,ou=people,dc=example,dc=com
    changetype: modify
    add: pwdPolicySubentry
    pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com
    
    $ ldapmodify -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f pwp.ldif 
    Enter bind password: 
    modifying entry uid=dmiller,ou=people,dc=example,dc=com
    
    $ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w - -b dc=example,dc=com \
    "(uid=dmiller)" pwdPolicySubentry
    Enter bind password:
    version: 1
    dn: uid=dmiller, ou=People, dc=example,dc=com
    pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com
    $

    如 Example.ldif 中所示,kvaughan 是人力資源部門的經理,具有修改 dc=example,dc=com 項目的存取權。Vaughan 的連結密碼如 Example.ldif 中所示,為 bribery。

Procedure使用角色與 CoS 指定密碼策略

本程序經由套用角色與服務類別 (CoS),指定現有的專用密碼策略給一組使用者。如需角色與 CoS 的詳細資訊,請參閱第 9 章, 目錄伺服器群組、角色與 CoS。


備註 –

若要完成此程序,必須有可指定的專用密碼策略。請參閱建立密碼策略。


您可以使用 DSCC 執行此作業。如需有關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。

除非另外指定,否則此處顯示的資料範例來自於 Example.ldif。

  1. 建立要由密碼策略所決定的項目角色。

    例如,下列指令會為 Example.com 的臨時員工建立篩選的角色:


    $ cat tmp.ldif
    dn: cn=TempFilter,ou=people,dc=example,dc=com
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: nsRoleDefinition
    objectclass: nsComplexRoleDefinition
    objectclass: nsFilteredRoleDefinition
    cn: TempFilter
    nsRoleFilter: (&(objectclass=person)(status=contractor))
    description: filtered role for temporary employees
    
    $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f tmp.ldif
    Enter bind password: 
    modifying entry cn=TempFilter,ou=people,dc=example,dc=com
    
    $

    如 Example.ldif 中所示,kvaughan 是人力資源部門的經理,具有修改 dc=example,dc=com 項目的存取權。Vaughan 的連結密碼如 Example.ldif 中所示,為 bribery。

  2. 建立服務類別以產生密碼策略項目的 DN。

    DN 為具有您所建立的角色之使用者的 pwdPolicySubentry 屬性值。

    例如,下列指令會為 Example.com 的臨時員工建立篩選的角色。該指令會指定 cn=TempPolicy,dc=example,dc=com 給具有該角色的使用者。


    $ cat cos.ldif
    dn: cn=PolTempl,dc=example,dc=com
    objectclass: top
    objectclass: nsContainer
    
    dn: cn="cn=TempFilter,ou=people,dc=example,dc=com",
     cn=PolTempl,dc=example,dc=com
    objectclass: top
    objectclass: extensibleObject
    objectclass: LDAPsubentry
    objectclass: costemplate
    cosPriority: 1
    pwdPolicySubentry: cn=TempPolicy,dc=example,dc=com
    
    dn: cn=PolCoS,dc=example,dc=com
    objectclass: top
    objectclass: LDAPsubentry
    objectclass: cosSuperDefinition
    objectclass: cosClassicDefinition
    cosTemplateDN: cn=PolTempl,dc=example,dc=com
    cosSpecifier: nsRole
    cosAttribute: pwdPolicySubentry operational
    
    $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f cos.ldif
    Enter bind password: 
    modifying entry cn=TempFilter,ou=people,dc=example,dc=com
    
    $

    狀態為 contractor 的使用者現在變成遵循密碼策略 cn=TempPolicy,dc=example,dc=com。

Procedure設定第一次登入密碼策略

在許多部署中,新帳號所套用的密碼策略會與已建立的帳號所套用的密碼策略不同。本節示範第一次登入密碼策略。該策略提供使用者三天試用新建立的帳號並設定新密碼,之後才會鎖定帳號。該策略執行方式對重設密碼的使用者而言也相同。

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

  1. 建立新建立帳號的專用密碼策略。

    例如,增加設定過期時間為三天 (259,200 秒) 的密碼策略項目。此密碼策略的 pwdMustChange(5dsat) 也會設為 TRUE,表示使用者第一次連結時必須變更密碼。


    $ cat firstLogin.ldif
    dn: cn=First Login,dc=example,dc=com
    objectClass: top
    objectClass: LDAPsubentry
    objectClass: pwdPolicy
    objectClass: sunPwdPolicy
    cn: First Login
    passwordStorageScheme: SSHA
    pwdAttribute: userPassword
    pwdInHistory: 0
    pwdExpireWarning: 86400
    pwdLockout: TRUE
    pwdMinLength: 6
    pwdMaxFailure: 3
    pwdMaxAge: 259200
    pwdFailureCountInterval: 600
    pwdAllowUserChange: TRUE
    pwdLockoutDuration: 3600
    pwdMinAge: 0
    pwdCheckQuality: 2
    pwdMustChange: TRUE
    
    $ ldapmodify -a -D cn=admin,cn=Administrators,cn=config -w - -f firstLogin.ldif
    Enter bind password: 
    adding new entry cn=First Login,dc=example,dc=com
    
    $
  2. 建立包含所有新建立帳號的角色。

    建立此角色會設定一些區分新建立的帳號與已建立的帳號之方式。

    1. 將新帳號定義為 pwdReset(5dsat) 屬性設為 TRUE 的帳號。

      若是密碼管理員等其他使用者變更使用者密碼時,pwdReset 會設為 TRUE。

    2. 建立識別新帳號的角色。

      例如,下列指令會建立已重設密碼的帳號角色。


      $ cat newRole.ldif 
      dn: cn=First Login Role,ou=people,dc=example,dc=com
      objectclass: top
      objectclass: LDAPsubentry
      objectclass: nsRoleDefinition
      objectclass: nsComplexRoleDefinition
      objectclass: nsFilteredRoleDefinition
      cn: First Login Role
      nsRoleFilter: (pwdReset=TRUE)
      description: Role to assign password policy for new and reset accounts
      
      $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f newRole.ldif
      Enter bind password: 
      adding new entry cn=First Login Role,ou=people,dc=example,dc=com
      
      $ 
  3. 使用服務類別指定新建立帳號的密碼策略。


    $ cat newCoS.ldif 
    dn: cn=First Login Template,dc=example,dc=com
    objectClass: top
    objectClass: nsContainer
    
    dn: cn="cn=First Login Role,ou=people,dc=example,dc=com",
     cn=First Login Template,dc=example,dc=com
    objectClass: top
    objectClass: extensibleObject
    objectClass: LDAPSubEntry
    objectClass: CoSTemplate
    cosPriority: 1
    pwdPolicySubentry: cn=First Login,dc=example,dc=com
    
    dn: cn=First Login CoS,dc=example,dc=com
    objectClass: top
    objectClass: LDAPSubEntry
    objectClass: CoSSuperDefinition
    objectClass: CoSClassicDefinition
    cosTemplateDN: cn=First Login Template,dc=example,dc=com
    cosSpecifier: nsRole
    cosAttribute: pwdPolicySubentry operational
    
    $ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -f newCoS.ldif
    Enter bind password: 
    adding new entry cn=First Login Template,dc=example,dc=com
    
    adding new entry cn="cn=First Login Role,ou=people,dc=example,dc=com",
     cn=First Login Template,dc=example,dc=com
    
    adding new entry cn=First Login CoS,dc=example,dc=com
    
    $

範例 7–1 檢查密碼策略指定

增加符合已增加的角色之新使用者。增加使用者以驗證新使用者遵循新密碼策略,而現有使用者則不用。


$ cat quentin.ldif
dn: uid=qcubbins,ou=People,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
uid: qcubbins
givenName: Quentin
sn: Cubbins
cn: Quentin Cubbins
mail: quentin.cubbins@example.com
userPassword: ch4ngeM3!
description: New account

$ ldapmodify -a -D uid=kvaughan,ou=people,dc=example,dc=com -w - -f quentin.ldif
Enter bind password: 
adding new entry uid=qcubbins,ou=People,dc=example,dc=com

$ ldapsearch -D uid=kvaughan,ou=people,dc=example,dc=com -w - \
-b dc=example,dc=com uid=qcubbins nsrole pwdPolicySubentry
Enter bind password:
version: 1
dn: uid=qcubbins,ou=People,dc=example,dc=com
nsrole: cn=first login role,ou=people,dc=example,dc=com
pwdPolicySubentry: cn=First Login,dc=example,dc=com
$ ldapsearch -b dc=example,dc=com uid=bjensen nsrole pwdPolicySubentry
version: 1
dn: uid=bjensen, ou=People, dc=example,dc=com
$ 

請注意,Barbara Jensen 的現有帳號由預設密碼策略所決定。但是,Quentin Cubbins 的新帳號則是由您定義的密碼策略所決定。


在 pwdSafeModify 為 TRUE 時從指令行修改密碼

當使用者密碼策略的 pwdSafeModify 設為 TRUE 時,必須提供舊密碼,才能以新密碼變更密碼。預設密碼策略的指令 dsconf set-server-prop pwd-safe-modify-enabled:on 有相同效果。

您可以使用 ldappasswd(1) 指令變更密碼。此指令可支援安全密碼修改。此指令執行 RFC 3062「LDAP Password Modify Extended Operation」

您可以使用 ldapmodify(1) 指令變更密碼。傳遞給案例中 ldapmodify 指令的 LDIF 應如下所示:

dn: DN of user whose password you are changing
changetype: modify
delete: userPassword
userPassword: old password
-
add: userPassword
userPassword: new password

您也可以使用 LDAP 密碼修改延伸的作業。設定延伸作業的支援說明於使用密碼修改延伸作業重設密碼中。

重設過期的密碼

當密碼策略強制執行密碼過期時,部分使用者將無法及時變更密碼。本節顯示如何變更過期的密碼。


備註 –

目錄伺服器會在每次項目上的密碼有所修改時,更新作業屬性 pwdChangedTime(5dsat)。因此,若要啟用密碼過期,已超過期限的使用者密碼將在您啟用密碼過期時立即過期。若您覺得此運作方式不合用,請使用警告與寬限登入。


本節包含使用密碼修改延伸作業以重設密碼,以及在密碼過期時允許寬限認證的程序。

本節所述的機制旨在供管理員使用,或供處理實際使用者與目錄互動的應用程式使用。您通常會信任應用程式會確認一般使用者使用機制的方式實際上與您所要的方式相同。

Procedure使用密碼修改延伸作業重設密碼

使用者帳號會在密碼過期時鎖定。重設密碼時會解除鎖定帳號。管理員等其他使用者可以重設密碼。重設密碼之後,目錄伺服器會解除鎖定使用者帳號。目錄伺服器支援 RFC 3062「LDAP Password Modify Extended Operation」。延伸作業可讓您允許目錄伺服器管理員或目錄應用程式,透過密碼重設以解除鎖定帳號。

如本程序中所示,允許使用密碼修改延伸作業時請小心。請將存取權僅授予所信任的管理員與應用程式。請勿以純文字格式在網路上傳遞密碼。

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

  1. 授予使用者密碼管理員或密碼管理應用程式的存取權。

  2. 允許密碼管理員存取並使用密碼修改延伸作業。

    下列指令設定 ACI 允許 Password Managers 角色成員在 SSL 連線上使用密碼修改延伸作業:


    $ cat exop.ldif
    dn: oid=1.3.6.1.4.1.4203.1.11.1,cn=features,cn=config
    objectClass: top
    objectClass: directoryServerFeature
    oid: 1.3.6.1.4.1.4203.1.11.1
    cn: Password Modify Extended Operation
    aci: (targetattr != "aci")(version 3.0;
     acl "Password Modify Extended Operation
     "; allow( read, search, compare, proxy ) (roledn = "
     ldap:///cn=Password Managers,dc=example,dc=com" and authmethod = "SSL");)
    
    $ ldapmodify -a -D cn=admin,cn=Administrators,cn=config -w - -f exop.ldif
    Enter bind password: 
    adding new entry oid=1.3.6.1.4.1.4203.1.11.1,cn=features,cn=config
    
    $

    cn=features,cn=config 下的項目可讓您管理對於使用密碼修改延伸作業的存取權。

  3. 讓密碼管理員重設使用者密碼。

    此步驟會解除鎖定使用者帳號,且可以使用 ldappasswd(1) 指令完成。

  4. (可選擇) 如果使用者必須變更密碼,請讓密碼管理員通知使用者。

    如果決定使用者項目的密碼策略包含 pwdMustChange: TRUE,使用者必須在重設密碼之後變更密碼。

Procedure密碼過期時允許寬限認證

本程序說明如何提供使用者寬限認證,讓使用者可以變更過期的密碼。

寬限認證會由處理密碼策略請求與回應控制的應用程式所管理。

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

  1. 請確定使用者具有使用密碼策略請求與回應控制的應用程式之存取權。

    該應用程式應確保使用者可適當地處理寬限認證。

  2. 允許應用程式使用密碼策略控制。

    下列指令設定 ACI 可允許 Password Managers 角色成員使用密碼策略控制:


    $ cat ctrl.ldif
    dn: oid=1.3.6.1.4.1.42.2.27.8.5.1,cn=features,cn=config
    objectClass: top
    objectClass: directoryServerFeature
    oid: 1.3.6.1.4.1.42.2.27.8.5.1
    cn: Password Policy Controls
    aci: (targetattr != "aci")(version 3.0; acl "Password Policy Controls
     "; allow( read, search, compare, proxy ) roledn = "
     ldap:///cn=Password Managers,dc=example,dc=com";)
    
    $ ldapmodify -a -D cn=admin,cn=Administrators,cn=config -w - -f ctrl.ldif
    Enter bind password: 
    adding new entry oid=1.3.6.1.4.1.42.2.27.8.5.1,cn=features,cn=config
    
    $

    cn=features,cn=config 下的項目之唯一目的,是讓您管理使用密碼策略請求與回應控制的作業之存取權。

  3. 將密碼策略中的 pwdGraceAuthNLimit 設為密碼過期後可允許的認證數目。

  4. 請確定應用程式會引導一般使用者在寬限認證無效之前,及時變更過期的密碼。

手動鎖定帳號

目錄伺服器可讓您配置密碼策略,在達到指定的失敗連結嘗試次數時,強制封鎖帳號。如需詳細資訊,請參閱帳號封鎖策略。本節包含目錄管理員可以使用的手動帳號鎖定與啟用工具。

目錄管理員無須使用封鎖持續時間計時器,便可管理帳號封鎖。鎖定的帳號會在密碼手動重設之前維持在鎖定狀態。目錄管理員也可以無限地停用部分帳號。

本節顯示如何檢查帳號狀態、停用帳號以及重新啟用帳號。

Procedure檢查帳號狀態

如此處所示檢查帳號狀態。


備註 –

您必須以目錄管理員身份連結。


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

    使用 ns-accountstatus 指令檢查帳號或角色的狀態。

    下列指令會檢查 Barbara Jensen 的帳號狀態:


    $ ns-accountstatus -D "cn=Directory Manager" -j pwd.txt \
     -I uid=bjensen,ou=people,dc=example,dc=com
    uid=bjensen,ou=people,dc=example,dc=com activated.
    $

    如需詳細資訊,請參閱 ns-accountstatus(1M) 線上手冊。

Procedure停用帳號

如此處所示停用帳號或角色。


備註 –

您必須以目錄管理員身份連結。


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

    使用 ns-inactivate 指令停用帳號或角色。

    下列指令會停用 Barbara Jensen 的帳號:


    $ ns-inactivate -D "cn=Directory Manager" -j pwd.txt \
    -I uid=bjensen,ou=people,dc=example,dc=com
    uid=bjensen,ou=people,dc=example,dc=com inactivated.
    $

    如需詳細資訊,請參閱 ns-inactivate(1M) 線上手冊。

Procedure重新啟用帳號

如此處所示解除鎖定帳號或角色。


備註 –

您必須以目錄管理員身份連結。


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

    使用 ns-activate 指令重新啟用帳號或角色。

    下列指令會重新啟用 Barbara Jensen 的帳號:


    $ ns-activate -D "cn=Directory Manager" -j pwd.txt \
    -I uid=bjensen,ou=people,dc=example,dc=com
    uid=bjensen,ou=people,dc=example,dc=com activated.
    $

    如需詳細資訊,請參閱 ns-activate(1M) 線上手冊。