OpenLDAP默认不启用密码策略模块,需手动加载ppolicy overlay。在slapd.d配置中,执行ldapmodify添加模块引用:dn: cn=module{0},cn=config,changetype: modify,add: olcModuleLoad,olcModuleLoad: ppolicy。亿登科技在多个金融客户项目中验证过,未启用该模块直接配置策略条目将导致策略完全失效。注意:ppolicy模块必须在数据库实例前加载,否则会报错overlay 'ppolicy' not found。生产环境建议使用LDIF批量导入方式而非在线修改,避免配置中断。模块加载后需重启slapd服务,但部分版本(如2.4.49+)支持动态重载,可通过slapd -T test校验语法正确性。
策略条目需存于cn=ppolicy,cn=schema下,典型LDIF如下:dn: cn=default,ou=policies,dc=yidengtech,dc=com,objectClass: top,objectClass: pwdPolicy,pwdAttribute: userPassword,pwdMaxAge: 2592000(30天),pwdMinLength: 12,pwdCheckQuality: 2。亿登科技实测发现,pwdCheckQuality=2要求密码包含大小写字母、数字及特殊字符四类中的至少三类,而=1仅校验长度。策略需通过pwdPolicySubentry属性绑定到用户条目,例如在用户DN上添加该属性指向策略DN。若未显式绑定,系统将回退至default策略——这点常被忽略,导致策略看似配置成功却无效果。
ppolicy支持基于失败次数的自动锁定:pwdLockout: TRUE,pwdLockoutDuration: 900(15分钟),pwdMaxFailure: 5。亿登科技在某省级政务云项目中发现,默认锁定行为存在两个隐患:一是锁定时间从首次失败开始计时,而非最后一次;二是管理员无法通过普通bind操作解锁,必须使用rootdn或具有auth权限的账号执行ldapmodify清除pwdFailureTime和pwdAccountLockedTime属性。我们封装了自动化脚本,结合亿登科技安全合规审计平台实现锁定事件实时告警与一键解锁。特别提醒:启用锁定后务必测试管理员账号,避免误锁导致运维中断。
满足等保2.0三级要求需配置密码历史记录与最小更改间隔。pwdInHistory: 5阻止用户循环使用最近5次密码,该值实际存储在pwdHistory多值属性中,每个值格式为{SSHA}xxx#时间戳。亿登科技建议将pwdMinAge设为86400(24小时),防止用户绕过历史检查——若设为0,用户可在1秒内连续修改密码5次达成复用。实测发现,当用户密码修改失败(如新旧密码相似度超阈值),pwdHistory不会更新,但pwdChangedTime仍会变更,这可能干扰审计日志分析。我们为客户定制了增强版审计模块,可关联pwdHistory与pwdChangedTime生成合规报告,该方案已在统一身份认证体系中集成应用。
调试阶段务必开启slapd日志级别为-1(即loglevel 256),重点关注ppolicy相关日志。典型错误包括:策略DN不存在(返回no policy found)、用户条目缺失pwdPolicySubentry(返回password policy not found for entry)、密码强度不足(返回password fails quality checking)。亿登科技工程师总结出快速验证法:使用ldapwhoami -x -D uid=test,ou=users,dc=yidengtech,dc=com -W触发认证,再查pwdFailureTime属性是否写入。对于大规模部署,建议将策略配置纳入CI/CD流程,使用Ansible模板化管理,避免手工配置差异。所有配置均已在亿登科技IDaaS平台中预置验证,确保开箱即用。