![]() | |
Sun Java(TM) System Directory Server 5.2 2005Q1 管理指南 |
第 7 章
管理使用者帳戶和密碼使用者連線至 Directory Server 時,系統會驗證該使用者,目錄會根據驗證期間所建立的身份,授與使用者存取權利和資源限制。
本章描述使用者帳戶管理的工作,包括配置目錄的密碼和帳戶鎖定策略,停用帳戶或使用者群組使其無法存取目錄,以及根據使用者的連結 DN 限制使用者可用的系統資源。
Directory Server 支援個別密碼策略。可以定義不同的密碼策略,策略數量不限,並將其中任一個策略套用在指定使用者或使用者群組。這樣可以更容易控制不同類型的使用者存取目錄的方式。
本章包含下列章節:
密碼策略概述安全的密碼策略能透過強制執行下列各項,讓與容易被猜測的密碼關聯的風險降至最低:
Directory Server 支援個別和全域密碼策略。個別密碼策略由樹狀目錄中的次要項目定義,該次要項目再供具有該策略的使用者項目參考。如果使用者項目不參考個別策略,就將 cn=PasswordPolicy,cn=config 中的全域密碼策略套用至該使用者項目上。
密碼策略僅套用於 userPassword 屬性 (如果存在於使用者項目中),並根據此屬性進行驗證時強制實施。他們無法套用在例如 SASL GSSAPI 或 SSL 驗證等其他驗證。
下一節說明如何執行密碼策略,以及如何將這些策略指派給使用者和群組。如需詳細資訊,請參閱 Directory Server Deployment Planning Guide。
配置全域密碼策略全域密碼策略適用於目錄中未定義個別策略的所有使用者。但是全域密碼不適用於目錄管理員。
使用主控台配置密碼策略
若要設定或修改 Directory Server 的全域密碼策略:
- 在 Directory Server Console 最上層的 [配置] 標籤上,選取 [資料] 節點,然後選取右面板上的 [密碼] 標籤。
- 在 [密碼] 標籤上,設定策略的下列部分:
- 選取 [重設後使用者必須變更密碼] 核取方塊,指定使用者必須在第一次登入後變更他們的密碼。
如果選取這個核取方塊,則只授權目錄管理員可以重設使用者的密碼。一般具管理權限的使用者無法強迫使用者更新他們的密碼。
- 若要允許使用者變更自己的密碼,請選取 [使用者可以變更密碼] 核取方塊。
- 若要限制使用者變更密碼的頻率,請在 [允許在 X 天內變更] 文字方塊中輸入天數。若要允許使用者視需要任意變更自己的密碼,請選取 [無限制] 核取方塊。
- 若要防止使用者一再重複使用同一個密碼,請選取 [保留密碼記錄] 核取方塊,並指定伺服器為 [記位 X 密碼] 文字方塊中的每個使用者保留的密碼數量。只要密碼仍存在清單中,使用者就無法設定該密碼。為有效起見,您也應該限制使用者變更密碼的頻率。
- 如果不希望使用者密碼過期,請選取 [密碼永久有效] 選項按鈕。
- 否則,請選取 [密碼在 X 日後到期] 選項按鈕,強迫使用者定期變更密碼,然後輸入使用者密碼保持有效的天數。
- 如果選擇讓密碼會到期,則可以在 [在密碼到期前 X 天傳送警告] 欄位中,指定在密碼到期前多久須傳送警告給使用者。
- 使用者收到警告時,密碼將在原日期到期。取消選取 [無論是否傳送警告,允許到期] 核取方塊,可延長到期時間,讓傳送警告後能有一段完整的警告期間。警告和延期將只會各發生一次。如果使用者在密碼到期後連結,則不寬限登入。
- 如果您希望伺服器檢查使用者密碼的語法,以確定該密碼符合密碼策略所設定的最小需求,請選取 [檢查密碼語法] 核取方塊。然後,在 [密碼最小長度] 文字方塊中指定密碼可接受的最短長度。
- 依預設值,目錄管理員無法重設違反密碼策略的密碼,例如重複使用記錄中的密碼。選取 [允許目錄管理員略過密碼策略] 核取方塊則可允許此作法。
- 從 [密碼加密] 下拉式功能表中,指定您希望伺服器儲存密碼時所使用的加密方法。
- 按一下 [帳戶鎖定] 標籤,並選取 [帳戶必須鎖定] 核取方塊以定義帳戶鎖定策略:
- 完成密碼策略的變更後,請按一下 [儲存]。將立即強制執行新的全域密碼策略。
從指令行配置密碼策略
全域密碼策略由 cn=Password Policy,cn=config 項目的屬性定義。請使用 ldapmodify 公用程式變更此項目中的全域策略。
關於密碼策略中所有可能屬性的定義,請參閱 Directory Server Administration Reference。
例如,預設狀況下會關閉密碼語法和長度檢查,並停用帳戶鎖定。使用下列指令可開啟語法檢查,將最短長度設成 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 執行臨時員工的密碼策略。
使用主控台定義策略
- 在 Directory Server Console 最上層的 [目錄] 標籤上,顯示要定義個別密碼策略次要項目的項目。
- 以滑鼠右鍵按一下項目,並選取 [新增] > [密碼策略]。或者,以滑鼠左鍵按一下項目以選取該項目,再從 [物件] 功能表中選擇 [新增] > [密碼策略]。
顯示 [密碼策略] 項目的自訂編輯器。
- 在 [一般] 欄位中,輸入此策略的名稱和選用描述。這個名稱將成為定義策略的次要項目的 cn 命名屬性值。
- 按一下 [密碼] 標籤以設定策略的下列部分:
- 選取 [重設後使用者必須變更密碼] 核取方塊,指定使用者必須在第一次登入後變更他們的密碼。如果選取這個核取方塊,則只授權目錄管理員可以重設使用者的密碼。一般具管理權限的使用者無法強迫使用者更新他們的密碼。
- 若要允許使用者變更自己的密碼,請選取 [使用者可以變更密碼] 核取方塊。
- 若要限制使用者變更密碼的頻率,請在 [允許在 X 天內變更] 文字方塊中輸入天數。若要允許使用者視喜好任意變更自己的密碼,請選取 [無限制] 核取方塊。
- 若要防止使用者一再重複使用同一個密碼,請選取 [保留密碼記錄] 核取方塊,並指定伺服器為每個使用者保留的密碼數量。只要密碼仍存在清單中,使用者就無法設定該密碼。為有效起見,您也應該限制使用者變更密碼的頻率。
- 如果不希望使用者密碼過期,請選取 [密碼永久有效] 選項按鈕。
- 否則,請選取 [密碼在 X 日後到期] 選項按鈕,強迫使用者定期變更密碼,然後輸入使用者密碼保持有效的天數。
- 如果選擇讓密碼會到期,則可以指定應在密碼到期前多久須傳送警告給使用者。請在 [在密碼到期前 X 天傳送警告] 文字中,輸入要在密碼到期前應傳送警告的天數。
使用者收到警告時,密碼將在原日期到期。取消選取 [無論是否傳送警告,允許到期] 核取方塊,可延長到期時間,讓傳送警告後能有一段完整的警告期間。警告和延期將只會各發生一次。如果使用者在密碼到期後連結,則不寬限登入。
- 如果您希望伺服器檢查使用者密碼的語法,以確定該密碼符合密碼策略所設定的最小需求,請選取 [檢查密碼語法] 核取方塊。然後,在 [密碼最小長度] 文字方塊中指定密碼可接受的最短長度。
- 依預設值,目錄管理員無法重設違反密碼策略的密碼,例如重複使用記錄中的密碼。選取 [允許目錄管理員略過密碼策略] 核取方塊則可允許此作法。
- 從 [密碼加密] 下拉式功能表中,指定您希望伺服器儲存密碼時所使用的加密方法。
- 按一下 [鎖定] 標籤,並選取 [帳戶必須鎖定] 核取方塊以定義帳戶鎖定策略:
- 在自訂編輯器中按一下 [確定] 以儲存策略,並建立其次要項目。
從指令行定義策略
對於此密碼策略,想像您希望臨時員工的密碼在 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。
備註
與之前版本的 Directory Server 相比,passwordExpirationTime 操作屬性是單值屬性。當您透過指令行來加入使用者項目時,請勿為此屬性指定值,因為作業會被拒絕。如果在之前版本的 Directory Server 中建立的項目的此屬性具有多重值,則該項目會被拒絕。
指定密碼策略
指派個別密碼策略包括指向適當的策略次要項目。可以將策略加入單一項目中作為 passwordPolicySubentry 的值,或者可用 CoS 和角色來管理策略。您也必須設定存取控制,以防止使用者修改套用在使用者上的密碼策略。
使用主控台
Directory Server Console 提供了介面,可用於管理指派給使用者或群組的密碼策略:
- 在 Directory Server Console 最上層的 [目錄] 標籤上,顯示要指派或修改個別密碼策略的使用者項目或群組項目。
- 以滑鼠右鍵按一下項目,並選取快顯功能表中的 [設定密碼策略]。或者,在項目上按一下滑鼠左鍵以選取項目,然後選擇 [物件] 功能表中的 [設定密碼策略]。
- [密碼策略] 對話方塊告訴您此項目適用哪個密碼策略:
- 如果適用全域策略,請按一下 [指派] 選擇樹狀目錄中任何位置的密碼策略次要項目。
- 如果已定義個別策略,則可取代、移除或編輯該策略。按一下 [編輯策略] 將呼叫指名的策略次要項目的自訂編輯器。
指派或取代密碼策略將呼叫目錄瀏覽器對話方塊,在此處可以找到顯示小鑰匙圖示的密碼策略次要項目。
- 如果已變更策略,請在 [密碼策略] 對話方塊中按一下 [確定]。新策略將立即生效。
從指令行
若要將密碼策略指派給使用者項目或群組項目,請將密碼策略的 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。
如果發生永久的帳戶鎖定 (在密碼策略中,使用者操作屬性 accountUnlockTime 為 0,且 passwordUnlock 為 off),則可將密碼重設為目錄管理員以解除使用者帳戶的鎖定。例如,假設 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 章「管理身份和角色」。
使用主控台設定使用者與角色啟用
可以從 [主控台] 的 [檢視] > [顯示] 功能表中選取 [停用狀態],即可檢視任何目錄物件的啟用狀態。然後,所有停用項目的圖示就會顯示有紅色長條穿過。不論使用者項目是直接停用,或是透過角色成員關係停用,都會顯示使用者項目正確的啟用狀態。
從指令行設定使用者與角色啟用
若要停用使用者帳戶或角色的成員,請使用 directoryserver account-inactivate 指令。若要啟動或停止使用者或角色,請使用 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 Man Page Reference。
設定個別資源限制可以使用與目錄連結之用戶端應用程式上的特殊操作屬性值,控制搜尋作業的伺服器限制。可以設定下列搜尋作業限制:
您對特定使用者設定的資源限制,其優先順序高於您在全域伺服器配置中所設定的預設資源限制。您應該確認儲存個別資源限制的屬性受到保護,不會被包含使用者項目的尾碼上的下列 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";)
使用主控台設定資源限制
從指令行設定資源限制
使用 ldapmodify 指令可以在使用者項目上設定下列屬性,以限制該使用者的資源使用情形:
例如,可以依下列方式執行 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: 500ldapmodify 敘述將 nsSizeLimit 屬性加入 Barbara Jensen 的項目中,並將其搜尋傳回的大小限制為 500 個項目。