當使用者連線至目錄伺服器時,會認證該使用者。目錄會根據認證期間建立的身份識別,授予使用者存取權限與資源限制。本章中的帳號大致表示使用者項目。帳號也反映該使用者可在目錄上執行作業的權限。在此密碼策略的說明中,每個帳號都會與使用者項目以及密碼相關。
本章也會說明密碼策略的帳號啟用。目錄伺服器管理員無須遵守密碼策略,可直接對帳號進行鎖定與解除鎖定。
本章不包含認證方法。部分認證方法 (例如 SASL GSSAPI 與用戶端 SSL 憑證型認證) 不需要使用密碼。本章中關於密碼策略的資訊不適用於這類認證方法。如需配置認證機制的相關指示,請參閱第 5 章, 目錄伺服器安全性。
本章不涵蓋 Directory Server 6.2 與目錄伺服器先前版本之間的密碼策略相容性問題。當您建立 Directory Server 6.2 實例時,密碼策略實作預設為 Directory Server 5 相容模式,以從早期版本進行升級。若要完整使用本章所述的密碼策略功能,您需要變更密碼策略相容性模式。如需有關設定密碼相容性模式的更多資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Migration Guide」中的「Password Policy Compatibility」。
本章包含下列主題:
本節說明密碼策略設定,並提供工作表協助您定義符合您需求的密碼策略。
若要使用預設密碼策略,請參閱管理預設密碼策略。
在目錄伺服器中指定密碼策略時,會修改或建立包含物件類別 pwdPolicy(5dsoc) 的項目。
定義特定使用者類型的密碼策略時,需要考量下列事項:
如何在出現入侵者嘗試破解密碼時封鎖帳號。
如需詳細資訊,請參閱帳號封鎖策略。
如何變更密碼。
如需詳細資訊,請參閱密碼變更的策略。
允許的密碼值。
如需詳細資訊,請參閱密碼內容的策略。
如何處理密碼過期。
如需詳細資訊,請參閱密碼過期的策略。
伺服器是否記錄上次成功認證的時間。
請參閱追蹤上次認證時間的策略。
本章後續幾節說明如何處理密碼策略的這幾點。使用定義密碼策略的工作表釐清規劃要執行的各項密碼策略。
本節說明決定帳號封鎖的策略屬性。
目錄伺服器帳號大致表示使用者項目,以及該使用者在目錄上執行作業所具有的權限。每個帳號會與連結 DN 及使用者密碼相關。當出現入侵者嘗試破解密碼時,希望目錄伺服器會鎖定帳號。鎖定功能可避免入侵者使用帳號進行連結,也能避免入侵者繼續攻擊。
身為管理員,您也可以手動停用共用一個角色的所有使用者之帳號。如需相關指示,請參閱手動鎖定帳號。此外,密碼策略的主要部分必須在無人介入且目錄伺服器鎖定帳號的情況下指定。
首先,您必須指定目錄伺服器可以使用 pwdLockout(5dsat) 在發生太多失敗連結時,自動鎖定帳號。目錄伺服器會記錄嘗試連結帳號的連續失敗次數。您可以使用 pwdMaxFailure(5dsat) 指定在目錄伺服器鎖定帳號之前可允許的連續失敗次數。
目錄伺服器會嚴守密碼策略鎖定帳號。此純粹為機械化作業。帳號鎖定的原因可能不是因為入侵者對帳號發動攻擊,而是因為使用者鍵入的密碼不正確。因此,您可以使用 pwdFailureCountInterval(5dsat) 指定目錄伺服器清除失敗嘗試的記錄之前,等待下一次嘗試的時間。您可以使用 pwdLockoutDuration(5dsat) 指定目錄伺服器自動解除鎖定帳號之前,封鎖應持續的時間。如果使用者的錯誤有正當理由而不是出於惡意,管理員不須介入解除鎖定使用者帳號。
如果您的使用者資料已在複寫拓樸之間複寫,封鎖屬性會隨其他項目資料一併複寫。pwdIsLockoutPrioritized(5dsat) 屬性的預設設定為 TRUE,因此會以較高的優先權複寫封鎖屬性的更新。因而會限制使用者在連續嘗試連結至任何單一複本 pwdMaxFailure 次之後,便遭到封鎖,其他多個複本在遭到封鎖之前的嘗試次數可能更少。如需有關如何確定使用者在整個複寫拓樸中遭到封鎖前,確實有 pwdMaxFailure 次嘗試次數的詳細資訊,請參閱「Sun Java System Directory Server Enterprise Edition 6.2 Deployment Planning Guide」中的「Preventing Authentication by Using Global Account Lockout」。
本節說明決定密碼變更的策略屬性。
目錄伺服器在許多部署中是身份識別資料的儲存庫。使用者應該能夠如 pwdAllowUserChange(5dsat) 所指定變更密碼,因此您無須變更密碼。
允許使用者變更密碼之後,可能也要控制使用者可以變更密碼的情況。您可以使用 pwdSafeModify(5dsat) 指定變更密碼的使用者必須先提供正確的現有密碼,才能取代密碼。如需如何修改密碼的範例,請參閱在 pwdSafeModify 為 TRUE 時從指令行修改密碼。您可以使用 pwdInHistory(5dsat) 指定目錄伺服器會記住的密碼數目,避免使用者重複使用相同的密碼。您也可以設定 pwdMinAge(5dsat) 以避免使用者變更密碼過於頻繁。
在許多情況下,可利用管理員身份或是由某些您所管理的應用程式,在目錄中建立使用者項目。您可以指定使用者密碼值在使用者第一次連結至新帳號時進行變更。您也可能需要重設使用者密碼,重設之後,使用者應在下次使用帳號時變更密碼。目錄伺服器具有特定屬性 pwdMustChange(5dsat),您可用以表示當另一個使用者重設密碼值之後,使用者是否必須變更密碼。
您也可以指定目錄伺服器管理員在設定 passwordRootdnMayBypassModsChecks(5dsat) 以變更密碼時,不須遵守策略。
本節說明決定密碼內容的策略屬性。
雖然密碼值一般不會在目錄搜尋中傳回,但是攻擊者可能會取得目錄資料庫的存取權。因此,密碼值一般會以使用 passwordStorageScheme(5dsat) 指定的支援雜湊格式之一儲存。
您也可以設定 pwdCheckQuality(5dsat),強制檢查密碼是否符合最基本的密碼品質定義。伺服器接著會檢查密碼是否不符合 cn、givenName、mail、ou、sn 或 uid 屬性的任何值。密碼與任何值的比較皆區分大小寫。
其他檢查可透過設定 pwdCheckQuality(5dsat) 提供。您可以設定 pwdMinLength(5dsat) 強制密碼至少有指定的字元數。此外,啟用 Strong Password Check (密碼強度檢查) 外掛程式時,目錄伺服器會檢查密碼是否不含外掛程式所用之字典檔案的字串。伺服器也會檢查密碼是否包含不同字元類型的適當混合。
您可以使用 dsconf set-server-prop 指令啟用密碼強度檢查。使用 pwd-strong-check-enabled 特性可啟動外掛程式,並重新啟動伺服器以使變更生效。使用 pwd-strong-check-require-charset 特性可指定密碼所需的字元集。pwd-strong-check-require-charset 特性包含下列值:
新密碼必須包含小寫字元。
新密碼必須包含大寫字元。
新密碼必須包含數字。
新密碼必須包含特殊字元。
新密碼至少必須從上述兩個字元集中,各包含至少一個字元。
新密碼至少必須從上述三個字元集中,各包含至少一個字元。
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= |
策略區 |
屬性 |
於此處寫入設定 |
於此處寫入使用這些設定的理由 |
---|---|---|---|
帳號封鎖 | |||
|
|
||
|
|
||
|
|
||
|
|
||
密碼變更 |
|
|
|
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
密碼內容 |
|
|
|
|
|
||
密碼過期 |
|
|
|
|
|
||
|
|
||
追蹤上次認證時間 |
|
|
當 pwdCheckQuality 屬性設為 2 時,伺服器可以執行其他檢查。Password Check (密碼檢查) 外掛程式會同時啟用,外掛程式的設定會影響要在新密碼的值上執行之檢查作業。
預設密碼策略會套用到目錄實例中未定義專用策略的所有使用者。但是,預設密碼策略不會套用到目錄管理員。如需策略範圍的詳細資訊,請參閱套用的密碼策略。
預設密碼策略是可以使用 dsconf 指令配置的策略。您也可以讀取 cn=Password Policy,cn=config 以檢視預設密碼策略。
本節顯示每個策略區的策略屬性以及相關的 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 的其他密碼策略。
您可以使用 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 |
您可以使用 dsconf 指令設定伺服器特性,以變更預設密碼策略。
完成此程序之前,請閱讀並完成定義密碼策略的工作表。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
從工作表轉譯設定至 dsconf 指令特性設定中。
使用 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) 與物件類別 sunPwdPolicy(5dsoc)。
建立目錄伺服器實例時,密碼策略屬性會保留在 Directory Server 5 相容模式中,以從舊版本升級。在 Directory Server 5 相容模式中,目錄伺服器也會處理具有物件類別 passwordPolicy(5dsoc) 的密碼策略項目。
如「Sun Java System Directory Server Enterprise Edition 6.2 Migration Guide」中所述,在升級完成之後,便可以在完整功能模式中使用新的密碼策略。目錄應用程式不會感覺到管理動作的進行。
本章包含使用新密碼策略功能的密碼策略配置。
您可以變更預設密碼策略以覆寫預設設定。您可以使用 dsconf(1M) 指令設定預設密碼策略的伺服器特性。這類伺服器特性名稱一般會以 pwd- 前綴為開頭。變更這類特性的設定時,會覆寫該實例的預設密碼策略。但是,複寫不會複製對複本所做的變更。對預設密碼策略所做的變更是實例配置的一部分,而不是目錄資料的一部分。
除了配置預設密碼策略之外,您還可以配置專用密碼策略。專用密碼策略會由目錄樹狀結構中的項目所定義。專用密碼策略項目會有與預設密碼策略相同的物件類別 pwdPolicy(5dsoc),因此會有相同的策略屬性。由於專用密碼策略為標準目錄項目,策略項目會以標準目錄項目相同的方式進行複寫。
使用者項目透過作業屬性 pwdPolicySubentry(5dsat) 的值參照專用密碼策略。使用者項目參照專用密碼策略時,該策略會覆寫實例的預設密碼策略。在許多部署中,您需要指定使用者角色。您可以設定 pwdPolicySubentry 值配置角色與服務類別 (CoS) 搭配使用,以決定套用到使用者帳號的密碼策略。若要覆寫某個角色所設定的密碼策略,請直接變更使用者項目上的 pwdPolicySubentry 值。
總結本節,一開始會套用預設密碼策略。您可以變更預設密碼策略以覆寫預設值。接著,您可以建立專用密碼策略項目以覆寫預設密碼策略。以角色與 CoS 指定密碼策略時,可以指定個別項目的密碼策略以覆寫 CoS 指定的策略。
建立與修改專用密碼策略的方式與建立及修改任何其他目錄項目的方式相同。下列程序示範如何使用文字編輯器在 LDIF 中寫入密碼策略項目。接著,您可以使用 ldapmodify 指令與 -a 選項,將密碼策略項目增加至目錄中。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
除非另外指定,否則此處顯示的資料範例來自於 Example.ldif。
為要建立的密碼策略完成密碼策略工作表。
如需範例,請參閱定義密碼策略的工作表。
在以工作表為基礎的 LDIF 中寫入密碼策略項目。
例如,下列策略項目會指定 Example.com 臨時員工的密碼策略,該員工的子樹狀結構根目錄為 dc=example,dc=com:
dn: cn=TempPolicy,dc=example,dc=com objectClass: top objectClass: pwdPolicy objectClass: sunPwdPolicy objectClass: LDAPsubentry cn: TempPolicy pwdAttribute: userPassword pwdCheckQuality: 2 pwdLockout: TRUE pwdLockoutDuration: 300 pwdMaxFailure: 3 pwdMustChange: TRUE
除了預設密碼策略設定之外,此處顯示的策略還會指定其他運作方式,同時會強制執行密碼品質檢查。帳號會在三次連續連結失敗之後鎖定五分鐘 (300 秒)。重設密碼之後必須變更密碼。指定策略給使用者帳號之後,此處明確指定的設定會覆寫預設密碼策略。
將密碼策略項目增加至目錄中。
例如,下列指令會增加 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 指定密碼策略。
本程序會指定現有的密碼策略給單一使用者帳號。
若要完成此程序,必須有可指定的專用密碼策略。請參閱建立密碼策略。
您可以使用 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。
本程序經由套用角色與服務類別 (CoS),指定現有的專用密碼策略給一組使用者。如需角色與 CoS 的詳細資訊,請參閱第 9 章, 目錄伺服器群組、角色與 CoS。
若要完成此程序,必須有可指定的專用密碼策略。請參閱建立密碼策略。
您可以使用 DSCC 執行此作業。如需相關資訊,請參閱目錄服務控制中心介面與 DSCC 線上說明。
除非另外指定,否則此處顯示的資料範例來自於 Example.ldif。
建立要由密碼策略所決定的項目角色。
例如,下列指令會為 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。
建立服務類別以產生密碼策略項目的 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。
在許多部署中,新帳號所套用的密碼策略會與已建立的帳號所套用的密碼策略不同。本節示範第一次登入密碼策略。該策略提供使用者三天試用新建立的帳號並設定新密碼,之後才會鎖定帳號。該策略執行方式對重設密碼的使用者而言也相同。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
建立新建立帳號的專用密碼策略。
例如,增加設定過期時間為三天 (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 $ |
建立包含所有新建立帳號的角色。
建立此角色會設定一些區分新建立的帳號與已建立的帳號之方式。
將新帳號定義為 pwdReset(5dsat) 屬性設為 TRUE 的帳號。
若是密碼管理員等其他使用者變更使用者密碼時,pwdReset 會設為 TRUE。
建立識別新帳號的角色。
例如,下列指令會建立已重設密碼的帳號角色。
$ 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 $ |
使用服務類別指定新建立帳號的密碼策略。
$ 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 $ |
增加符合已增加的角色之新使用者。增加使用者以驗證新使用者遵循新密碼策略,而現有使用者則不用。
$ 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 時,必須提供舊密碼,才能以新密碼變更密碼。預設密碼策略的指令 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)。因此,若要啟用密碼過期,已超過期限的使用者密碼將在您啟用密碼過期時立即過期。若您覺得此運作方式不合用,請使用警告與寬限登入。
本節包含使用密碼修改延伸作業以重設密碼,以及在密碼過期時允許寬限認證的程序。
本節所述的機制旨在供管理員使用,或供處理實際使用者與目錄互動的應用程式使用。您通常會信任應用程式會確認一般使用者使用機制的方式實際上與您所要的方式相同。
使用者帳號會在密碼過期時鎖定。重設密碼時會解除鎖定帳號。管理員等其他使用者可以重設密碼。重設密碼之後,目錄伺服器會解除鎖定使用者帳號。目錄伺服器支援 RFC 3062「LDAP Password Modify Extended Operation」。延伸作業可讓您允許目錄伺服器管理員或目錄應用程式,透過密碼重設以解除鎖定帳號。
如本程序中所示,允許使用密碼修改延伸作業時請小心。請將存取權僅授予所信任的管理員與應用程式。請勿以純文字格式在網路上傳遞密碼。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
授予使用者密碼管理員或密碼管理應用程式的存取權。
允許密碼管理員存取並使用密碼修改延伸作業。
下列指令設定 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 下的項目可讓您管理對於使用密碼修改延伸作業的存取權。
讓密碼管理員重設使用者密碼。
此步驟會解除鎖定使用者帳號,且可以使用 ldappasswd(1) 指令完成。
(可選擇) 如果使用者必須變更密碼,請讓密碼管理員通知使用者。
如果決定使用者項目的密碼策略包含 pwdMustChange: TRUE,使用者必須在重設密碼之後變更密碼。
本程序說明如何提供使用者寬限認證,讓使用者可以變更過期的密碼。
寬限認證會由處理密碼策略請求與回應控制的應用程式所管理。此程序的簡單範例顯示如何在應用程式中使用控制。
無法使用 DSCC 執行此作業。請依照此程序中的說明使用指令行。
請確定使用者具有使用密碼策略請求與回應控制的應用程式之存取權。
該應用程式應確保使用者可適當地處理寬限認證。
允許應用程式使用密碼策略控制。
下列指令設定 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 下的項目之唯一目的,是讓您管理使用密碼策略請求與回應控制的作業之存取權。
將密碼策略中的 pwdGraceAuthNLimit 設為密碼過期後可允許的認證數目。
請確定應用程式會引導一般使用者在寬限認證無效之前,及時變更過期的密碼。
以下小節說明如何設定帳號的查詢限制、大小限制、時間限制與閒置逾時。
使用 ldapmodify 指令可設定 nsLookThroughLimit 的值。
下列指令可移除 Barbara Jensen 的查詢限制:
$ ldapmodify -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: uid=bjensen,ou=people,dc=example,dc=com changetype: modify add: nsLookThroughLimit nsLookThroughLimit: -1 ^D modifying entry uid=bjensen,ou=people,dc=example,dc=com ^D $ |
使用 ldapmodify 指令可設定 nsSizeLimit 的值。
下列指令可移除 Barbara Jensen 的大小限制:
$ ldapmodify -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: uid=bjensen,ou=people,dc=example,dc=com changetype: modify add: nsSizeLimit nsSizeLimit: -1 ^D modifying entry uid=bjensen,ou=people,dc=example,dc=com ^D $ |
使用 ldapmodify 指令可設定 nsTimeLimit 的值。
下列指令可移除 Barbara Jensen 的時間限制:
$ ldapmodify -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: uid=bjensen,ou=people,dc=example,dc=com changetype: modify add: nsTimeLimit nsTimeLimit: -1 ^D modifying entry uid=bjensen,ou=people,dc=example,dc=com ^D $ |
使用 ldapmodify 指令可設定 nsIdleTimeout 的值。
下列指令將 Barbara Jensen 的閒置逾時設為五分鐘 (300 秒):
$ ldapmodify -D cn=admin,cn=Administrators,cn=config -w - Enter bind password: dn: uid=bjensen,ou=people,dc=example,dc=com changetype: modify add: nsIdleTimeout nsIdleTimeout: 300 ^D modifying entry uid=bjensen,ou=people,dc=example,dc=com ^D $ |
目錄伺服器可讓您配置密碼策略,在達到指定的失敗連結嘗試次數時,強制封鎖帳號。如需詳細資訊,請參閱帳號封鎖策略。本節包含目錄管理員可以使用的手動帳號鎖定與啟用工具。
目錄管理員無須使用封鎖持續時間計時器,便可管理帳號封鎖。鎖定的帳號會在密碼手動重設之前維持在鎖定狀態。目錄管理員也可以無限地停用部分帳號。
本節顯示如何檢查帳號狀態、停用帳號以及重新啟用帳號。
如此處所示檢查帳號狀態。
您必須以目錄管理員身份連結。
無法使用 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) 線上手冊。
如此處所示停用帳號或角色。
您必須以目錄管理員身份連結。
無法使用 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) 線上手冊。
如此處所示解除鎖定帳號或角色。
您必須以目錄管理員身份連結。
無法使用 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) 線上手冊。