Sun Java logo     上一章      目錄      索引      下一章     

Sun logo
Sun Java(TM) System Directory Server 5 2004Q2 管理指南 

第 7 章
管理使用者帳戶和密碼

使用者連線至 Directory Server 時,系統會驗證該使用者,目錄會根據驗證期間所建立的身份,授與使用者存取權利和資源限制。

本章描述使用者帳戶管理的工作,包括配置目錄的密碼和帳戶鎖定策略,停用帳戶或使用者群組使其無法存取目錄,以及根據使用者的連結 DN 限制使用者可用的系統資源。

Directory Server 支援個別密碼策略。可以定義不同的密碼策略,策略數量不限,並將其中任一個策略套用在指定使用者或使用者群組。這樣可以更容易控制不同類型的使用者存取目錄的方式。

本章包含下列章節:


密碼策略概論

安全的密碼策略能透過強制執行下列各項,讓與容易被猜測的密碼關聯的風險降至最低:

Directory Server 支援個別和全域密碼策略。個別密碼策略由樹狀目錄中的次要項目定義,該次要項目再供具有該策略的使用者項目參考。如果使用者項目不參考個別策略,就將 cn=PasswordPolicy,cn=config 中的全域密碼策略套用至該使用者項目上。

密碼策略僅套用於 userPassword 屬性 (如果存在於使用者項目中),並根據此屬性進行驗證時強制實施。他們無法套用在例如 SASL GSSAPI 或 SSL 驗證等其他驗證。

下一節說明如何執行密碼策略,以及如何將這些策略指派給使用者和群組。如需詳細資訊,請參閱《Directory Server Deployment Planning Guide》 Chapter 7 的 "Designing Password Policies"


配置全域密碼策略

全域密碼策略適用於目錄中未定義個別策略的所有使用者。但是全域密碼不適用於目錄管理員。

使用主控台配置密碼策略

若要設定或修改 Directory Server 的全域密碼策略:

  1. 在 Directory Server Console 最上層的 [組態] 標籤上,選取 [資料] 節點,然後選取右面板上的 [密碼] 標籤。
  2. 在 [密碼] 標籤上,設定策略的下列部份:
  3. 選取 [重設後使用者必須變更密碼] 核取方塊,指定使用者必須在第一次登入後變更他們的密碼。
  4. 如果選取這個核取方塊,則只授權目錄管理員可以重設使用者的密碼。一般具管理權限的使用者無法強迫使用者更新他們的密碼。

  5. 若要允許使用者變更自己的密碼,請選取 [使用者可以變更密碼] 核取方塊。
  6. 若要限制使用者變更密碼的頻率,請在 [允許在 X 天內變更] 文字方塊中輸入天數。若要允許使用者視需要任意變更自己的密碼,請選取 [無限制] 核取方塊。
  7. 若要防止使用者一再重複使用同一個密碼,請選取 [保留密碼記錄] 核取方塊,並指定伺服器為 [記位 X 密碼] 文字方塊中的每個使用者保留的密碼數量。只要密碼仍存在清單中,使用者就無法設定該密碼。為有效起見,您也應該限制使用者變更密碼的頻率。
  8. 如果不希望使用者密碼過期,請選取 [密碼永久有效] 單選按鈕。
  9. 否則,請選取 [密碼在 X 日後到期] 單選按鈕,強迫使用者定期變更密碼,然後輸入使用者密碼保持有效的天數。
  10. 如果選擇讓密碼會到期,則可以在 [在密碼到期前 X 天傳送警告] 欄位中,指定在密碼到期前多久須傳送警告給使用者。
  11. 使用者收到警告時,密碼將在原日期到期。取消選取 [無論是否傳送警告,允許到期] 核取方塊,可延長到期時間,讓傳送警告後能有一段完整的警告期間。警告和延期將只會各發生一次。如果使用者在密碼到期後連結,則不寬限登入。

  12. 如果您希望伺服器檢查使用者密碼的語法,以確定該密碼符合密碼策略所設定的最小需求,請選取 [檢查密碼語法] 核取方塊。然後,在 [密碼最小長度] 文字方塊中指定密碼可接受的最短長度。
  13. 依預設值,目錄管理員無法重設違反密碼策略的密碼,例如重複使用記錄中的密碼。選取 [允許目錄管理員略過密碼策略] 核取方塊則可允許此作法。
  14. 從 [密碼加密] 下拉式功能表中,指定您希望伺服器儲存密碼時所使用的加密方法。
  15. 按一下 [帳戶鎖定] 標籤,並選取 [帳戶必須鎖定] 核取方塊以定義帳戶鎖定策略:
  16. 輸入登入失敗次數和登入失敗期間,失敗必須在這段期間發生該次數後才會觸動鎖定。
  17. 選取 [永遠鎖定] 單選按鈕,讓鎖定成為永久性,直到目錄管理員重設使用者密碼為止。
  18. 否則,選取 [鎖定持續期間] 單選按鈕,並輸入使用者帳戶將暫時鎖定的分鐘數。
  19. 完成密碼策略的變更後,請按一下 [儲存]。將立即強制執行新的全域密碼策略。

從指令行設定密碼策略

全域密碼策略由 cn=Password Policy,cn=config 項目的屬性定義。請使用 ldapmodify 公用程式變更此項目中的全域策略。

有關密碼策略中所有可能屬性的定義,請參閱《Directory Server Administration Reference》Chapter 2 的 "cn=Password Policy"

例如,預設狀況下會關閉密碼語法和長度檢查,並停用帳戶鎖定。使用下列指令可開啟語法檢查,將最短長度設成 8,並啟用 5 分鐘的暫時性鎖定,在連續 5 次錯誤的密碼嘗試後將帳戶鎖定:

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:cn=Password Policy,cn=config
changetype:modify
replace:passwordCheckSyntax
passwordCheckSyntax:on
-
replace:passwordMinLength
passwordMinLength: 8
-
replace:passwordLockout
passwordLockout:on
-
replace:passwordMaxFailure
passwordMaxFailure: 5
-
replace:passwordLockoutDuration
passwordLockoutDuration: 300
-
replace:passwordUnlock
passwordUnlock:on


管理個別密碼策略

個別密碼策略定義於含 passwordPolicy 物件類別的次要項目中。策略可定義在樹狀目錄的任何位置,但是其 DN 的格式必須是 cn=policy name,subtree。使用 Directory Server Console 或指令行公用程式定義密碼策略後,在所要的使用者項目中設定 passwordPolicySubentry 屬性即可指派密碼策略。

在這一節中,我們舉例說明為樹狀子目錄根部位在 dc=example,dc=com 的 Example.com 執行臨時員工的密碼策略。

使用主控台定義策略

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,顯示要定義個別密碼策略次要項目的項目。
  2. 以滑鼠右鍵按一下項目,並選取 [新增] > [密碼策略]。或者,以滑鼠左鍵按一下項目以選取該項目,再從 [物件] 功能表中選擇 [新增] > [密碼策略]。
  3. 顯示 [密碼策略] 項目的自訂編輯器。

  4. 在 [一般] 欄位中,輸入此策略的名稱和選用描述。這個名稱將成為定義策略的次要項目的 cn 命名屬性值。
  5. 按一下 [密碼] 標籤以設定策略的下列部分:
  6. 選取 [重設後使用者必須變更密碼] 核取方塊,指定使用者必須在第一次登入後變更他們的密碼。如果選取這個核取方塊,則只授權目錄管理員可以重設使用者的密碼。一般具管理權限的使用者無法強迫使用者更新他們的密碼。
  7. 若要允許使用者變更自己的密碼,請選取 [使用者可以變更密碼] 核取方塊。
  8. 若要限制使用者變更密碼的頻率,請在 [允許在 X 天內變更] 文字方塊中輸入天數。若要允許使用者視喜好任意變更自己的密碼,請選取 [無限制] 核取方塊。
  9. 若要防止使用者一再重複使用同一個密碼,請選取 [保留密碼記錄] 核取方塊,並指定伺服器為每個使用者保留的密碼數量。只要密碼仍存在清單中,使用者就無法設定該密碼。為有效起見,您也應該限制使用者變更密碼的頻率。
  10. 如果不希望使用者密碼過期,請選取 [密碼永久有效] 單選按鈕。
  11. 否則,請選取 [密碼在 X 日後到期] 單選按鈕,強迫使用者定期變更密碼,然後輸入使用者密碼保持有效的天數。
  12. 如果選擇讓密碼會到期,則可以指定應在密碼到期前多久須傳送警告給使用者。請在 [在密碼到期前 X 天傳送警告] 文字中,輸入要在密碼到期前應傳送警告的天數。
  13. 使用者收到警告時,密碼將在原日期到期。取消選取 [無論是否傳送警告,允許到期] 核取方塊,可延長到期時間,讓傳送警告後能有一段完整的警告期間。警告和延期將只會各發生一次。如果使用者在密碼到期後連結,則不寬限登入。

  14. 如果您希望伺服器檢查使用者密碼的語法,以確定該密碼符合密碼策略所設定的最小需求,請選取 [檢查密碼語法] 核取方塊。然後,在 [密碼最小長度] 文字方塊中指定密碼可接受的最短長度。
  15. 依預設值,目錄管理員無法重設違反密碼策略的密碼,例如重複使用記錄中的密碼。選取 [允許目錄管理員略過密碼策略] 核取方塊則可允許此作法。
  16. 從 [密碼加密] 下拉式功能表中,指定您希望伺服器儲存密碼時所使用的加密方法。
  17. 按一下 [鎖定] 標籤,並選取 [帳戶必須鎖定] 核取方塊以定義帳戶鎖定策略:
  18. 輸入登入失敗次數和登入失敗期間,失敗必須在這段期間發生該次數後才會觸動鎖定。
  19. 選取 [永遠鎖定] 單選按鈕,讓鎖定成為永久性,直到目錄管理員重設使用者密碼為止。
  20. 否則,選取 [鎖定持續期間] 單選按鈕,並輸入使用者帳戶將暫時鎖定的分鐘數。
  21. 在自訂編輯器中按一下 [確定] 以儲存策略,並建立其次要項目。

從指令行定義策略

對於此密碼策略,想像您希望臨時員工的密碼在 100 天 (8,640,000 秒) 後到期,而且從密碼到期前 3 天 (259,200 秒) 起,會在使用者連結時傳回到期警告。開啟語法檢查以強制對密碼安全性進行最基本的檢查,並強制鎖定以防止入侵者企圖透過字典式攻擊破解密碼。至於策略的其他部份,則套用預設值。

dc=example,dc=com 下加入下列次要項目,藉以在 example.com 樹狀子目錄中定義此密碼策略:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
dn:cn=TempPolicy,dc=example,dc=com
objectClass:top
objectClass:passwordPolicy
objectClass:LDAPsubentry
cn:TempPolicy
passwordStorageScheme:SSHA
passwordChange:on
passwordMustChange:on
passwordCheckSyntax:on
passwordExp:on
passwordMinLength: 6
passwordMaxAge: 8640000
passwordMinAge: 0
passwordWarning: 259200
passwordInHistory: 6
passwordLockout:on
passwordMaxFailure: 3
passwordUnlock:on
passwordLockoutDuration: 3600
passwordResetFailureCount: 600

有關密碼策略中所有可能屬性的定義,請參閱《Directory Server Administration Reference》Chapter 2 的 "cn=Password Policy"

指定密碼策略

指派個別密碼策略包括指向適當的策略次要項目。可以將策略加入單一項目中作為 passwordPolicySubentry 的值,或者可用 CoS 和角色來管理策略。您也必須設定存取控制,以防止使用者修改套用在使用者上的密碼策略。

使用主控台

Directory Server 主控台提供了介面,可用於管理指派給使用者或群組的密碼策略:

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,顯示要指派或修改個別密碼策略的使用者項目或群組項目。
  2. 以滑鼠右鍵按一下項目,並選取快顯功能表中的 [設定密碼策略]。或者,在項目上按一下滑鼠左鍵以選取項目,然後選擇 [物件] 功能表中的 [設定密碼策略]。
  3. [密碼策略] 對話方塊告訴您此項目適用哪個密碼策略:
  4. 如果適用全域策略,請按一下 [指派] 選擇樹狀目錄中任何位置的密碼策略次要項目。
  5. 如果已定義個別策略,則可取代、移除或編輯該策略。按一下 [編輯策略] 將啟動指名的策略次要項目的自訂編輯器。
  6. 指派或取代密碼策略將啟動目錄瀏覽器對話方塊,在此處可以找到顯示小鑰匙圖示的密碼策略次要項目。

  7. 如果已變更策略,請在 [密碼策略] 對話方塊中按一下 [確定]。新策略將立即生效。

從指令行

若要將密碼策略指派給使用者項目或群組項目,請將密碼策略的 DN 加入成為 passwordPolicySubentry 屬性的值。例如,下列指令將指派 cn=TempPolicy,dc=example,dc=com 給 Barbara Jensen:

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:uid=bjensen,ou=People,dc=example,dc=com
changetype:modify
add:passwordPolicySubentry
passwordPolicySubentry:cn=TempPolicy,dc=example,dc=com

使用角色和 CoS

將使用者依角色分組時,可以使用 CoS 以指向適當的策略次要項目。如需使用角色和 CoS 的詳細資訊,請參閱第 5 章「管理身份和角色」

舉例來說,下列指令會為 Example.com 的臨時員工建立篩選的角色,並指派 cn=TempPolicy,dc=example,dc=com 給擁有該角色的員工:

ldapmodify -a -h host -p port -D "cn=Directory Manager" -w password
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

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
passwordPolicySubentry: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:passwordPolicySubentry operational

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

保護個別密碼策略

若要防止使用者修改所套用的密碼策略,您也必須在根項目加入類似以下的 ACI:

ldapmodify -h host-p port -D "cn=Directory Manager" -w password
dn:dc=example,dc=com
changetype:modify
add:aci
aci:(targetattr != "passwordPolicySubentry")(version 3.0; acl
 "Allow self modification except for passwordPolicySubentry";
 allow (write) (userdn ="ldap:///self");)


重設使用者密碼

目錄將密碼值儲存在使用者項目的 userPassword 屬性中。根據伺服器的帳戶控制設定值,使用者可以依照您指定的密碼策略,使用標準工具來設定 userPassword,例如 ldapmodify

如果發生永久的帳戶鎖定 (在密碼策略中,使用者操作屬性 accountUnlockTime0,且 passwordUnlockoff),則可將密碼重設為目錄管理員以解除使用者帳戶的鎖定。例如,假設 Example.com 目錄的使用者 Barbara Jensen 因為忘記又一再猜錯密碼,而被永久鎖定:

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:uid=bjensen,ou=People,dc=example,dc=com
changetype:modify
replace:userPassword
userPassword:ChAnGeMe

如果密碼策略中的 passwordMustChange 為 on,Barbara 在下一次連結後必須變更密碼。記得告訴她,您已經將密碼改成 ChAnGeMe (最好是透過安全的管道)。


停用與啟用使用者與角色

可以暫時地停用單一使用者帳戶或一組帳戶。一旦停用後,該使用者便無法連結至目錄。驗證作業將會失敗。

本節中的程序可用來以相同方式停用使用者和角色。然而當您停用角色時,停用的是角色的成員,而不是角色項目本身。如需關於角色的一般資訊,以及角色如何與存取控制互動的特殊資訊,請參閱第 5 章「管理身份和角色」

使用主控台設定使用者與角色啟用

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,瀏覽樹狀目錄,以顯示要停用或重新啟用的使用者項目或角色項目。
  2. 連按兩下項目以顯示自訂編輯器,再按一下左欄中的 [帳戶] 標籤。
  3. 右面板中顯示項目的啟用狀態。

  4. 按一下按鈕以停用或啟用與此項目對應的使用者或角色。編輯器中使用者或角色圖示上會顯示一個紅色方塊,並有一長條穿過,表示項目即將停用。
  5. 按一下 [確定] 關閉對話方塊,儲存項目新的啟用狀態。
  6. 開啟自訂編輯器有一個捷徑,只要選取項目,再從 [物件] 功能表中選擇 [啟用] 或 [停用] 即可。

可以從 [主控台] 的 [檢視] > [顯示] 功能表中選取 [停用狀態],即可檢視任何目錄物件的啟用狀態。然後,所有停用項目的圖示就會顯示有紅色長條穿過。不論使用者項目是直接停用,或是透過角色成員關係停用,都會顯示使用者項目正確的啟用狀態。

從指令行設定使用者與角色啟用

若要停用使用者帳戶或角色的成員,請使用 directoryserver account-inactivate 指令。若要啟動或停止使用者或角色,請使用 directoryserver account-activate 指令:

 

# /usr/sbin/directoryserver account-inactivate
# /usr/sbin/directoryserver account-activate

下列指令顯示如何使用這些指令停用再重新啟用 Barbara Jensen 的使用者帳戶:

/usr/sbin/directoryserver account-inactivate -h host -p port -D "cn=Directory\
        Manager" -w password -I "uid=bjensen,ou=People,dc=example,dc=com"

/usr/sbin/directoryserver account-activate -h host -p port -D "cn=Directory\
        Manager" -w password -I "uid=bjensen,ou=People,dc=example,dc=com"

在這兩組指令中,-I  選項指定要設定啟用狀態的使用者或角色的 DN。

如需詳細資訊,請參閱《Directory Server Administration Reference》Chapter 1 "account-activate""account-inactivate"


設定個別資源限制

可以使用與目錄連結之用戶端應用程式上的特殊操作屬性值,控制搜尋作業的伺服器限制。可以設定下列搜尋作業限制:

您對特定使用者設定的資源限制,其優先順序高於您在全域伺服器組態中所設定的預設資源限制。您應該確認儲存個別資源限制的屬性受到保護,不會被包含使用者項目的尾碼上的下列 ACI 自我修改:

(targetattr != "nsroledn || aci || nsLookThroughLimit || nsSizeLimit || nsTimeLimit || nsIdleTimeout || passwordPolicySubentry || passwordExpirationTime || passwordExpWarned || passwordRetryCount || retryCountResetTime || accountUnlockTime || passwordHistory || passwordAllowChangeTime")(version 3.0; acl "Allow self entry modification except for nsroledn, aci, resource limit attributes, passwordPolicySubentry and password policy state attributes"; allow (write)userdn ="ldap:///self";)

使用主控台設定資源限制

  1. 在 Directory Server Console 最上層的 [目錄] 標籤上,瀏覽樹狀目錄,以顯示要設定資源限制的使用者。
  2. 連按兩下項目以顯示自訂編輯器,並在左欄中按一下 [帳戶] 標籤。右面板中顯示目前在項目上設定的限制。
  3. 在四個文字欄位中為上述的資源限制輸入值。輸入值 -1 表示該資源沒有限制。
  4. 完成時按一下 [確定],以儲存新限制。

從指令行設定資源限制

使用 ldapmodify 指令可以在使用者項目上設定下列屬性,以限制該使用者的資源使用情形:

屬性

描述

nsLookThroughLimit

指定搜尋作業檢查的項目數。指定為項目數目。指定此屬性 -1 值代表沒有限制。

nsSizeLimit

指定伺服器在回應搜尋作業時,傳回用戶端應用程式的最大項目數。指定此屬性 -1 值代表沒有限制。

nsTimeLimit

指定伺服器處理搜尋作業所耗費時間的最大值。將這個屬性值設定為 -1 代表沒有時間限制。

nsIdleTimeout

指定在中斷連線之前,伺服器連線能夠閒置的時間。此值以秒為單位。指定此屬性 -1 值代表沒有限制。

例如,可以依下列方式執行 ldapmodify 以設定項目的大小限制:

ldapmodify -h host -p port -D "cn=Directory Manager" -w password
dn:uid=bjensen,ou=People,dc=example,dc=com
changetype:modify
add:nsSizeLimit
nsSizeLimit: 500

ldapmodify 陳述式將 nsSizeLimit 屬性加入 Barbara Jensen 的項目中,並將其搜尋傳回的大小限制為 500 個項目。



上一章      目錄      索引      下一章     


Copyright 2004 Sun Microsystems, Inc. All rights reserved.