1. 加载 ppolicy schema
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
加完了再查看下 schema 列表,已经加上了:
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn

2. 加载 ppolicy module
vim ppolicy_module.ldif----------------------------------------------------------------dn:cn=module{0},cn=configchangetype: modifyadd: olcModuleLoadolcModuleLoad: ppolicy
ldapadd -Y EXTERNAL -H ldapi:/// -f ppolicy_module.ldif
查看 module 是否加载好了:
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=module{0},cn=config

3. 加载 ppolicy overlay
vim ppolicy_overlay.ldif----------------------------------------------------------------dn: olcOverlay=ppolicy,olcDatabase={2}hdb,cn=configchangetype: addobjectClass: olcOverlayConfigobjectClass: olcPPolicyConfigolcOverlay: ppolicyolcPPolicyDefault: cn=ppolicy,ou=policies,dc=demo,dc=comolcPPolicyHashCleartext: TRUEolcPPolicyUseLockout: TRUE
ldapadd -YEXTERNAL -H ldapi:/// -f ./ppolicy_overlay.ldif
查看是否添加成功
vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb/olcOverlay\=\{1\}ppolicy.ldif

4. 配置 default PPolicy 和规则
vi default_ppolicy.ldif----------------------------------------------------------------dn: ou=policies,dc=demo,dc=comobjectClass: organizationalUnitobjectClass: topou: policiesdn: cn=default,ou=policies,dc=demo,dc=comcn: defaultobjectClass: pwdPolicyobjectClass: personobjectClass: toppwdAttribute: userPasswordpwdMinAge: 0pwdMaxAge: 7776000pwdInHistory: 5pwdCheckQuality: 0pwdMinLength: 5pwdExpireWarning: 6480000pwdGraceAuthNLimit: 5pwdLockout: TRUEpwdLockoutDuration: 300000pwdMaxFailure: 5pwdFailureCountInterval: 30pwdMustChange: FALSEpwdAllowUserChange: TRUEpwdSafeModify: FALSEsn: dummy value

可以使用ldapwhoami命令来输入错误密码,制造登陆失败
ldapwhoami -H ldap://192.168.141.136 -x -D "uid=chenxin,ou=People,dc=demo,dn=com" -w shay2000
ldapsearch -H ldap://192.168.141.136 -x -LLL uid=chenxin +

https://www.openldap.org/lists/openldap-technical/201111/msg00165.html
filter=(&(objectClass=inetOrgPerson)(!(organizationalStatus=0)))
(&(objectClass=*)(!(organizationalStatus=0)))
(&(objectClass=*)(!(pwdAccountLockedTime=000001010000Z)))
https://www.openldap.org/lists/openldap-technical/201504/msg00139.html
