OpenLDAP 密码策略

OpenLDAP默认是没有密码检查策略的,123456这也得密码也能接受,这显然是管理员不希望看到的。

参考地址:https://www.yaoge123.com/blog/archives/1276

        导入密码策略schema

  ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/ppolicy.ldif

         假如没有cn=module{0}的话,参考地址:https://www.cnblogs.com/Kevin-1967/p/8931304.html,需要添加:因为需要在OpenLdap中添加组的功能,所以需要添加memberOf功能,步骤如下

在/etc/openldap目录下新建文件memberof_load_configure.ldif。授权:chown -R ldap:ldap memberof_load_configure.ldif

内容如下:

dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulepath: /usr/lib64/openldap
olcModuleload: {0}memberof.la

dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof

说明:上面的参数请根据实际情况修改(比如32的系统的话olcModulepath为/usr/lib/openldap)
dn: cn=module{0},cn=config 如果/etc/openldap/slapd.d/cn=config目录下已经存在cn=module{0}.ldif 文件的话,你就需要修改 module后面的数字了
dn: olcOverlay={0}memberof,olcDatabase={2}bdb,cn=config 这行中 如果上述目录中没有olcDatabase={2}bdb.ldif文件就把 olcDatabase={2}bdb改成olcDatabase={2}hdb
之后执行命令ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_load_configure.ldif。

注:配置双主的则两台都要加载mod_ppolicy.ldif这个以后在执行后面的命令   

加载模块,因为已经添加过syncprov模块了,所以只要追加ppolicy模块就可以了

dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: ppolicy.la
ldapmodify -Y EXTERNAL -H ldapi:/// -f mod_ppolicy.ldif

  指定默认策略dn名

dn: olcOverlay=ppolicy,olcDatabase={2}hdb,cn=config
changeType: add
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=default,ou=Users,dc=hbjc,dc=com
olcPPolicyHashCleartext: TRUE
ldapmodify -Y EXTERNAL -H ldapi:/// -f ppolicy.ldif

参考地址:https://blog.csdn.net/u011607971/article/details/86378361

创建组:cat << EOF | ldapadd -x -D "cn=admin,dc=hbjc,dc=com" -W

dn: ou=Users,dc=hbjc,dc=com
objectClass: top
objectClass: organizationalUnit
ou: Users
EOF


创建默认策略:
注:若设置pwdMaxAge:3600,则一个小时以后就过期了。单独设置在一个用户中设置密码策略是不生效的。

cat << EOF | ldapadd -x -D "cn=admin,dc=hbjc,dc=com" -W

dn: cn=default,ou=Users,dc=hbjc,dc=com
cn: default
objectClass: top
objectClass: device
objectClass: pwdPolicy
objectClass: pwdPolicyChecker
pwdAttribute: userPassword
pwdInHistory: 8
pwdMinLength: 8
pwdMaxFailure: 3
pwdFailureCountInterval: 1800
pwdCheckQuality: 2
pwdMustChange: TRUE
pwdGraceAuthNLimit: 0
pwdMaxAge: 2592000
pwdExpireWarning: 1209600
pwdLockoutDuration: 900
pwdLockout: TRUE
EOF

针对不同用户使用不同的密码策略:

dn: cn=servicesaccounts,ou=Users,dc=hbjc,dc=com
cn: servicesaccounts
objectClass: top
objectClass: device
objectClass: pwdPolicy
pwdAllowUserChange: TRUE
pwdAttribute: userPassword
pwdExpireWarning: 0
pwdFailureCountInterval: 0
pwdGraceAuthNLimit: 5
pwdLockout: FALSE
pwdLockoutDuration: 0
pwdInHistory: 0
pwdMaxAge: 0
pwdMaxFailure: 0
pwdMinAge: 0
pwdMinLength: 15
pwdMustChange: FALSE
pwdSafeModify: FALSE
EOF

查询用户:

ldapsearch -x -LLL -H ldap://localhost:389/ -b dc=hbjc,dc=com -D "cn=admin,dc=hbjc,dc=com" -w 密码 uid=xxx +

解锁账号:只要把用户的pwdAccountLockedTime这个属性删除即可。

cat << EOF | ldapadd -x -D "cn=admin,dc=hbjc,dc=com" -W
dn: uid=xxx,ou=Users,dc=hbjc,dc=com
changetype: modify
delete: pwdAccountLockedTime 
EOF

第一次登录强制修改密码设置:pwdReset 属性设置为TRUE

密码策略属性参考地址:https://wiki.shileizcc.com/confluence/pages/viewpage.action?pageId=40566878

https://www.cnblogs.com/cishi/p/9160520.html

密码策略属性详解

密码策略涉及的属性如下。

pwdAllowUserChange:允许用户修改其密码。

pwdAttribute:pwdPolicy 对象的一个属性,用于识别用户密码。

pwdExpireWarning:密码过期前告警天数。

pwdFailureCountInterval:密码失败后恢复时间。

pwdGraceAuthNLimit:密码过期后不能登入的天数,0 代表禁止登录。

pwdInHistory:开启密码历史记录,用户保证不能和之前设置的密码相同。

pwdLockout:超过定义次数,账号被锁定。

pwdLockoutDuration:密码连接输入错误次数后,账号锁定时间。

pwdMaxAge:密码有效期,到期需要强制修改密码。

pwdMaxFailure:密码最大失效次数,超过后账号被锁定。

pwdMinAge:密码有效期。

pwdMinLength:密码修改密码时最短的密码长度。

pwdMustChange:用户登录系统后提示修改密码。

pwdSafeModify:是否允许用户修改密码,与 pwdMustChange 共同使用。

pwdLockoutDuration:账号锁定后,不能自动解锁,此时需要管理员干涉。

设定用户密码定期修改及过期时间

向条目中添加一个名为shadowAccount的objectClass, 设定如下属性(attributes):
shadowLastChange: 密码从1970年1月1日开始, 到最近一次修改, 一共间隔了多少天. 比如这里指定成16967就表示2016年6月15日. 也可以直接获取当天的日期,方法为:在系统里useradd一个用户,查看/etc/shadow中该用户的第三个值, 即是该值. 该值如果设置成0, 则表示下次登陆将强制修改密码, 用户修改密码成功以后, 该值将发生对应的变化;
shadowMin: 密码从shadowLastChange指定的日期开始, 到多少天以后才能再次修改密码, 防止某些人天天没事就修改密码, 此值设置成0表示不限制;
shadowMax: 密码从shadowLastChange指定的日期开始, 到多少天以后过期(即多少天后必须更改密码);
shadowInactive: 密码过期以后还可以登陆多少天(每次登陆都会要求更改密码), 如果超过此值指定的天数, 下次登陆时会提示Your account has expired; please contact your system administrator;
shadowWarning: 提前多少天开始警告用户密码将会过期;
shadowExpire: 密码从1970年1月1日开始, 多少天以后将会过期, 这里一般用不到;
shadowFlag: 暂时无用

一组建议的值

  • shadowLastChange: 0
  • shadowMin: 0
  • shadowMax: 90 #每隔90天强制更换密码
  • shadowInactive: 7 #过期以后还有7天可以登陆,每次登陆都会提示修改密码
  • shadowWarning: 8 #提前8天开始提示密码即将过期

Openldap密码策略pwdAttribute属性设置OID

参考地址:https://blog.csdn.net/wxb880114/article/details/102408269

http://osask.cn/front/ask/view/472349

pwdAttribute: userPassword
或者
pwdAttribute: 2.5.4.35

原文地址:https://www.cnblogs.com/js1314/p/13162345.html