1,加載 ppolicy schema
$ sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif
加完了再查看下 schema 列表,已經加上了:
$ sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn
如下是加前後的對比圖:
2,加載 ppolicy module
$ vi ppolicy_module.ldif
dn:cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: ppolicy
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ppolicy_module.ldif
查看 module 是否加載好了:
$ sudo ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=module{0},cn=config
3,加載 ppolicy overlay
$ vi ppolicy_overlay.ldif
dn: olcOverlay=ppolicy,olcDatabase={1}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=ppolicy,ou=policies,dc=xxx,dc=com
olcPPolicyHashCleartext: TRUE
olcPPolicyUseLockout: TRUE
部分配置說明:
UseLockout:超過最多失敗次數後,鎖定賬號時的提示
HashCleartest:密碼明文在保存的數據庫中必須進行hash加密
$ sudo ldapadd -YEXTERNAL -H ldapi:/// -f ./ppolicy_overlay.ldif
4,配置 default PPolicy 和規則
這個就可以在 phpldapadmin 等 UI 上增刪改了,命令行方式修改如下:
邏輯:密碼三個月到期,過期後再使用五次後將自動鎖定,必須找管理員解鎖;不能修改最近5次使用過的密碼;連續5次輸入錯誤密碼,自動鎖定賬號5分鐘
$ vi default_ppolicy.ldif
dn: ou=policies,dc=xxx,dc=com
objectClass: organizationalUnit
objectClass: top
ou: policies
dn: cn=default,ou=policies,dc=xxx,dc=com
cn: default
objectClass: pwdPolicy
objectClass: person
objectClass: top
pwdAttribute: userPassword
pwdMinAge: 0
pwdMaxAge: 7776000
pwdInHistory: 5
pwdCheckQuality: 0
pwdMinLength: 5
pwdExpireWarning: 6480000
pwdGraceAuthNLimit: 5
pwdLockout: TRUE
pwdLockoutDuration: 300
pwdMaxFailure: 5
pwdFailureCountInterval: 30
pwdMustChange: FALSE
pwdAllowUserChange: TRUE
pwdSafeModify: FALSE
sn: dummy value
$ sudo ldapadd -x -D'cn=admin,dc=uhome-app,dc=haier' -W -H ldapi:/// -f default_ppolicy.ldif