事情是這樣子的............. (如同往常,又離題了XD)
正當我興高采烈地安裝好openLDAP並且準備開心的使用時,在大量寫入資料時發生錯誤。
根據錯誤訊息才知道原來是mapsize limit reached的問題,還好這個小插曲不算太難解決,調整大小之後就順利解決了。
vim increaseDbSize.ldif
dn: olcDatabase={2}mdb,cn=config
changetype: modify
add: olcDbMaxSize
olcDbMaxSize: 1000000000
ldapmodify -Y EXTERNAL -H ldapi:/// -f increaseDbSize.ldif
就當以為一切都順利搞定時,才發現原來預設是沒有密碼政策的,什麼密碼複雜度、輸入失敗錯誤鎖定..等是需要額外套用,嗯,這一切看起來真的是非常合理呢,接著便拼命的上網爬文,無論是網路上各路大神、或是鄉民的單一心法照抄都是失敗(可能看得不夠多),所幸皇天不負苦心人,混合使用之後終於僥倖的套用成功,記錄下來提供給可能照抄單一大神步驟失敗的朋友們試試看看。
第一步:啟用policy Overlay
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
第二步:建立一個放置規則的位置(請把cn=admin,dc=yourdomain,dc=yourcom替換成您的位置)
vim policies_1.ldif
dn:ou=Policies,cn=admin,dc=yourdomain,dc=yourcom
objectClass: top
objectClass: organizationalUnit
ou: Policies
description: Password policy config files
ldapadd -D cn=admin,dc=yourdomain,dc=yourcom -W -f policies_1.ldif
第三步: 讀取Modules
vim policy_module.ldif
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModuleLoad: ppolicy.la
ldapadd -Y EXTERNAL -H ldapi:/// -f policy_module.ldif
第四步:讓資料夾知道讀取政策位置(mdb請自行替換成你的openLDAP的模式)
vim policy_overlay.ldif
dn: olcOverlay={1}ppolicy,olcDatabase={2}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: {1}ppolicy
olcPPolicyDefault: cn=DefaultPPolicy,ou=Policies,cn=admin,dc=yourdomain,dc=yourcom
ldapadd -Y EXTERNAL -H ldapi:/// -f policy_overlay.ldif
第五步:建立密碼政策(可以參考slapo-ppolicy)
vim Default_Policies.ldif
dn: cn=DefaultPPolicy,ou=Policies,cn=admin,dc=yourdomain,dc=yourcom
cn: DefaultPPolicy
objectClass: pwdPolicy
objectClass: device
objectClass: top
pwdAttribute: userPassword
pwdMaxAge: 2592000
pwdExpireWarning: 2160000
pwdInHistory: 3
pwdCheckQuality: 1
pwdMinLength: 8
pwdMaxFailure: 3
pwdLockout: TRUE
pwdLockoutDuration: 30
pwdGraceAuthNLimit: 0
pwdFailureCountInterval: 0
pwdMustChange: TRUE
pwdAllowUserChange: TRUE
pwdSafeModify: FALSE
ldapadd -D cn=admin,dc=yourdomain,dc=yourcom
-W -f Default_Policies.ldif
接下來就可以快樂的使用這些密碼政策了
參考文章
How to increase size of OpenLDAP MDB database? (MDB_MAP_FULL Error Code)
OPENLDAP: password policy overlap, how to assign to a specific OU
OpenLDAP Password Policy overlay (ppolicy)
slapo-ppolicy