改變弱口令威脅,從意識開始
密碼策略和工作單
本部分介紹密碼策略設置,並提供一個工作單,以幫助您定義符合要求的密碼策略。
註 –
要使用默認的密碼策略,請參見管理默認密碼策略。
密碼策略設置
在目錄服務器中指定密碼策略時,需要修改或創建包含對象類 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) 來強制密碼至少包含指定數目的字符。此外,啟用嚴格密碼檢查插件時,目錄服務器還會檢查密碼是否不包含該插件所使用的字典文件中的字符串。服務器也會檢查密碼是否包含不同類型字符的正確組合。
可以使用 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 功能。您必須明確打開此功能才能在部署中使用。
用於定義密碼策略的工作單
此工作單旨在幫助您通過命令行界面或使用目錄服務控制中心 (Directory Service Control Center, 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 時,服務器可以執行其他檢查。如果還啟用了密碼檢查插件,則該插件的設置將影響對新密碼值執行哪些檢查。
管理默認密碼策略
默認密碼策略將應用於目錄實例中未定義專用策略的所有用戶。但是,默認密碼策略不會應用於目錄管理員。有關策略範圍的詳細信息,請參見應用哪個密碼策略。
默認密碼策略是可以使用 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 相關的屬性可用於配置密碼檢查插件。因此,這五種屬性適用於整個服務器實例,從而也適用於包含 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) 條目中定義的。可以在目錄樹中的任意位置定義策略,通常在使用策略所管理的帳戶復制的子樹中定義。策略的 DN 采用 cn=policy name,subtree 格式。
定義密碼策略之後,可以通過在所需的用戶條目中設置 pwdPolicySubentry(5dsat) 屬性來指定該密碼策略。
本部分包含以下主題:
-
應用哪個密碼策略
-
創建密碼策略
-
為單個帳戶指定密碼策略
-
使用角色和 CoS 指定密碼策略
-
設置首次登錄密碼策略
應用哪個密碼策略
目錄服務器允許您配置多個密碼策略。本部分介紹默認密碼策略和專用密碼策略。本部分還介紹當多個密碼策略可應用於給定帳戶時應執行哪個策略。
首次創建目錄服務器實例時,該實例有一個默認密碼策略。默認密碼策略在配置條目 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 值,可以將角色配置為與服務類 (Class of Service, CoS) 一起使用,以確定應用於用戶帳戶的密碼策略。要覆蓋由角色設置的密碼策略,請直接在該用戶的條目上更改 pwdPolicySubentry 值。
下面對本部分內容進行一下總結:最初將應用默認密碼策略。 您可以更改默認密碼策略以覆蓋默認值。然後,您可以創建專用密碼策略條目以覆蓋默認密碼策略。使用角色和 CoS 指定密碼策略時,可以通過為單個條目指定密碼策略來覆蓋 CoS 指定的策略。
創建密碼策略
可以使用與創建和修改其他目錄條目相同的方式來創建和修改專用密碼策略。以下過程說明如何使用文本編輯器在 LDIF 中編寫密碼策略條目。接下來,可以在 ldapmodify 命令中使用 -a 選項將該密碼策略條目添加到目錄。
可使用 DSCC 執行此任務。有關信息,請參見目錄服務控制中心界面和 DSCC 聯機幫助。
開始之前
如果沒有特殊說明,此處顯示的示例數據均來自 Example.ldif。
-
完成要創建的策略的密碼策略工作單。
用於定義密碼策略的工作單中提供了樣例。
-
根據工作單,在 LDIF 中編寫密碼策略條目。
例如,以下策略條目將為 Example.com 的臨時員工指定密碼策略,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 屬性值。
例如,以下命令將創建密碼策略中定義的密碼策略指定給 David Miller 條目(其 DN 為 uid=dmiller,ou=people,dc=example,dc=com):
$ 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 指定密碼策略
此過程通過應用角色和服務類 (Class of Service, 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 $
示例 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: [email protected] 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)。因此,如果您準備啟用密碼過期,則已超過存留期限的用戶密碼會在您啟用密碼過期後立即過期。如果您不希望發生這種情況,請使用警告和寬限登錄。
本部分包含使用密碼修改擴展操作重置密碼以及在密碼過期時允許寬限驗證的過程。
本部分介紹的機制可供管理員使用,或者供處理用戶與目錄之間實際交互的應用程序使用。通常,您需要依賴於應用程序來確保最終用戶使用機制的方式實際上與預期相同。
使用密碼修改擴展操作重置密碼
密碼過期時用戶帳戶將被鎖定。重置密碼時,將對帳戶解除鎖定。其他用戶(如管理員)可以重置密碼。重置密碼後,目錄服務器將對用戶帳戶解除鎖定。目錄服務器提供 RFC 3062(LDAP Password Modify Extended Operation)支持。可以使用擴展操作允許目錄管理者或目錄應用程序通過密碼重置對帳戶解除鎖定。
允許使用密碼修改擴展操作時應特別謹慎,如以下過程所示。請僅為您所信任的管理員和應用程序授予訪問權限。請勿以明文形式在網絡中傳送密碼。
無法使用 DSCC 執行此任務。請使用命令行,如以下過程所述。
-
為用戶授予對密碼管理員或密碼管理應用程序的訪問權限。
-
允許密碼管理員使用密碼修改擴展操作。
以下命令將設置一個 ACI,以允許密碼管理員角色的成員在通過 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,以允許密碼管理員角色的成員使用密碼策略控制:
$ 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. $
改變弱口令威脅,從意識開始