原文:北京移动openldap增加密码策略.docx

Redhat6下OpenLDAP密码策略

1:修改配置文件vi /etc/openldap/slapd.conf
在前面打开注释
moduleload ppolicy.la
modulepath /usr/lib/openldap
modulepath /usr/lib64/openldap
在database config前面加上这两段
access to attrs=userPassword
by self write
by anonymous auth
by dn=”cn=root,dc=asiainfo,dc=com” write
by * none
access to *
by self write
by dn=”cn=root,dc=asiainfo,dc=com” write
by * read
在文件的末尾添加:
overlay ppolicy
ppolicy_default cn=root,ou=pwpolicies,dc=asiainfo,dc=com
ppolicy_hash_cleartext
ppolicy_use_lockout
// 解释
overlay ppolicy 必须添加
ppolicy_default cn=root,ou=pwpolicies,dc=asiainfo,dc=com 指定默认的密码规则条目ppolicy_hash_cleartext 密码加密存储, 默认支持明文存储不安全
ppolicy_use_lockout 超过最多失败次数后,锁定账号时的提示
2:重新生成配置文件数据库:
[root@lele openldap]# vim /etc/openldap/slapd.conf
[root@lele openldap]# rm -rf /etc/openldap/slapd.d/
[root@lele openldap]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
[root@lele openldap]# chown -R ldap.ldap /etc/openldap/slapd.d/
[root@lele openldap]# /etc/init.d/slapd restart
Stopping slapd: [ OK ]
Starting slapd: [ OK ]


可以通过配置文件的数据信息看到ppolicy模块已经加进来了
*cat /etc/openldap/slapd.d/cn\=config/cn\=module{0}.ldif

openldap增加密码策略 - 图1
查看属性是否定义
cat /etc/openldap/slapd.d/cn\=config/olcDatabase\={2}bdb/olcOverlay\={0}ppolicy.ldif
openldap增加密码策略 - 图2
3:添加ou条目
cat 1.ldif
dn: ou=pwpolicies,dc=asiainfo,dc=com
objectClass: organizationalUnit
ou: pwpolicies

4:ldapadd -x -D “cn=root,dc=asiainfo,dc=com” -w123456 -f 1.ldif

5:添加cn=root,ou=pwpolicies,dc=asiainfo,dc=com默认密码规则,这里需要添加哪些规则参考附录里面的密码策略属性项,这里是添加默认的密码规则,添加后所有的用户都是统一的用这个规格

[root@ll ~]# cat 2.ldif
dn: cn=root,ou=pwpolicies,dc=asiainfo,dc=com
cn: root
objectClass: pwdPolicy
objectClass: person
pwdAllowUserChange: TRUE
pwdAttribute: userPassword
pwdExpireWarning: 259200
pwdFailureCountInterval: 0
pwdGraceAuthNLimit: 5
pwdInHistory: 5
pwdLockout: TRUE
pwdLockoutDuration: 300
pwdMaxAge: 2592000
pwdMaxFailure: 5
pwdMinAge: 0
pwdMinLength: 8
pwdMustChange: TRUE
sn: dummy value
把属性值添加进去
ldapadd -x -D “cn=root,dc=asiainfo,dc=com” -w123456 -f 2.ldif

6:客户端在vim /etc/pam_ldap.conf中的末尾添加:使得客户端能识别服务端的密码策略
pam_password md5
bind_policy soft
pam_lookup_policy yes
pam_password clear_remove_old
echo “bind_policy soft” >> /etc/pam_ldap.conf
echo “pam_password md5” >> /etc/pam_ldap.conf
echo “pam_lookup_policy yes” >> /etc/pam_ldap.conf
echo “pam_password clear_remove_old” >> /etc/pam_ldap.conf

7:重启nslcd
/etc/init.d/nslcd restart

Redhat7下OpenLDAP密码策略

1、查看ppolicy的schema是否添加
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=schema,cn=config dn | grep ppolicy
如果没有添加进行添加
ldapadd -Y EXTERNAL -H ldapi:/// -D “cn=config” -f /etc/openldap/schema/ppolicy.ldif
2、修改olcAccess规则
cat << EOF | ldapmodify -c -Y EXTERNAL -Q -H ldapi:///
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by dn=”cn=root,dc=asiainfo,dc=com” write by anonymous auth by none
olcAccess: {1}to dn.base=”” by
read
olcAccess: {2}to by self write by dn=”cn=root,dc=asiainfo,dc=com” write by read
EOF
3、加载 PPolicy 模块
定义 olcModuleList 对象:
cat << EOF | ldapadd -Y EXTERNAL -H ldapi:///
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModuleLoad: ppolicy.la
EOF
添加olcModulePath
cat << EOF | ldapadd -Y EXTERNAL -H ldapi:///
dn: cn=module{0},cn=config
changetype: modify
add: olcModulePath
olcModulePath: /usr/lib64/openldap/
EOF
查看
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=module{0},cn=config
openldap增加密码策略 - 图3
4、添加默认密码规则
cat << EOF | ldapadd -Y EXTERNAL -H ldapi:///
dn: olcOverlay=ppolicy,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=root,ou=pwpolicies,dc=asiainfo,dc=com
olcPPolicyHashCleartext: TRUE
olcPPolicyUseLockout: TRUE
EOF
查看
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b olcDatabase={2}hdb,cn=config
openldap增加密码策略 - 图4
5、添加pwpolicies条目
cat << EOF | ldapadd -x -D “cn=root,dc=asiainfo,dc=com” -w123456
dn: ou=pwpolicies,dc=asiainfo,dc=com
objectClass: organizationalUnit
ou: pwpolicies
EOF
6、添加默认密码策略:(pwdLockoutDuration:密码连续输入错误次数后,账号锁定时间 pwdMaxFailure:密码最大失效次数,超过后账号被锁定)
cat << EOF | ldapadd -x -D cn=root,dc=asiainfo,dc=com -w123456
dn: cn=root,ou=pwpolicies,dc=asiainfo,dc=com
objectClass: pwdPolicy
objectClass: person
cn: root
pwdAllowUserChange: TRUE
pwdAttribute: userPassword
pwdFailureCountInterval: 0
pwdLockout: TRUE
pwdLockoutDuration: 300
pwdMaxFailure: 3
sn: dummy value
EOF
7、客户端配置:
安装nslcd服务 yum install -y nss-pam-ldap openldap-clients
执行setup进入界面修改(无setup命令执行yum install setuptool -y安装)
openldap增加密码策略 - 图5
openldap增加密码策略 - 图6
openldap增加密码策略 - 图7

附录:

查询信息:

ldapsearch -x -b ‘dc=asiainfo,dc=com’
ldapsearch -x -b ‘uid=raoyi,ou=People,dc=asiainfo,dc=com’
ldapsearch -x -b ‘ou=pwpolicies,dc=asiainfo,dc=com’
ldapsearch -x -b ‘ou=People,dc=asiainfo,dc=com’
ldapsearch -x -b ‘ou=People,dc=asiainfo,dc=com’ “(&objectClass=posixAccount)(cn=)(memberof=cn=grouptest,ou=Group,dc=asiainfo,dc=com)”
ldapsearch -x -b ‘ou=Group,dc=asiainfo,dc=com’ “(&objectClass=posixGroup)(cn=
)(memberUid=uid=raoyi,ou=People,dc=asiainfo,dc=com)”

Ldap添加用户

useradd raoyi12
passwd raoyi12
cat /etc/passwd |grep -w raoyi > /tmp/testpwd.in
/usr/share/migrationtools/migrate_passwd.pl /tmp/testpwd.in > /tmp/testpwd.ldif
组:
cat /etc/group |grep -w raoyi > /tmp/group.in
/usr/share/migrationtools/migrate_group.pl /tmp/group.in > /tmp/group.ldif

ldapadd -x -D “cn=root,dc=asiainfo,dc=com” -w123456 -f /tmp/testpwd.ldif
ldapadd -x -D “cn=root,dc=asiainfo,dc=com” -w123456 -f /tmp/ group.ldif


service slapd restart

查询密码策略:

查看用户策略信息
ldapwhoami -x -D “uid=raoyi12,ou=People,dc=asiainfo,dc=com” -w123456 -e ppolicy -v
查询定义的策略属性
ldapsearch -x -b ‘ou=pwpolicies,dc=asiainfo,dc=com’
ldapsearch -H ldap://192.168.1.225:389 -x -D cn=root,dc=asiainfo,dc=com -w 123456 -LLL -s one -b ou=pwpolicies,dc=asiainfo,dc=com
查看定义用户的策略信息
ldapsearch -x -LLL -D “cn=root,dc=asiainfo,dc=com” -H ldap://192.168.1.225 -w 123456 uid=raoyi +
ldapsearch -x -LLL uid=root +

修改单个策略属性项:

cat << EOF | ldapmodify -x -D “cn=root,dc=asiainfo,dc=com” -w 123456 -H ldap://192.168.1.225
dn: cn=root,ou=pwpolicies,dc=asiainfo,dc=com
changetype: modify
replace: pwdMinLength
pwdMinLength: 3
EOF

密码策略属性:

pwdAllowUserChange:允许用户修改其密码。
pwdAttribute:pwdPolicy 对象的一个属性,用于识别用户密码。
pwdExpireWarning:密码过期前告警天数。
pwdFailureCountInterval:密码失败后恢复时间。
pwdGraceAuthNLimit:密码过期后不能登入的天数,0 代表禁止登录。
pwdInHistory:开启密码历史记录,用户保证不能和之前设置的密码相同。
pwdLockout:超过定义次数,账号被锁定。
pwdLockoutDuration:密码连接输入错误次数后,账号锁定时间。
pwdMaxAge:密码有效期,到期需要强制修改密码。
pwdMaxFaliure:密码最大失效次数,超过后账号被锁定。
pwdMinAge:密码有效期。
pwdMinLength:密码修改密码时最短的密码长度。
pwdMustChange:用户登录系统后提示修改密码。
pwdSafeModify:是否允许用户修改密码,与 pwdMustChange 共同使用。控制用户在密码修改操作期间是否必须发送当前密码。如果属性值为FALSE(缺省值),则用户不必发送其当前密码。如果属性值为TRUE,那么修改密码值时用户必须发送当前密码
pwdLockoutDuration:账号锁定后,不能自动解锁,此时需要管理员干涉。

用户被锁定解决:

查看是否被锁定
ldapwhoami -x -D “uid=raoyi9,ou=People,dc=asiainfo,dc=com” -w123456 -e ppolicy -v
ldapsearch -x -LLL uid=raoyi9 +
删除pwdAccountLockedTime属性解锁
cat << EOF | ldapadd -x -D “cn=root,dc=asiainfo,dc=com” -w123456
dn: uid=raoyi1,ou=people,dc=asiainfo,dc=com
changetype: modify
delete: pwdAccountLockedTime
EOF

密码过期、修改用户密码

cat << EOF | ldapmodify -x -D “cn=root,dc=asiainfo,dc=com” -w 123456 -H ldap://192.168.1.225
dn: uid=raoyi12,ou=People,dc=asiainfo,dc=com
changetype: modify
replace: userpassword
userpassword: 123456
EOF

添加及修改用户的密码策略归属组

新添加的用户默认走默认密码策略,如果要让用户走非默认密码策略,则需要添加新的密码策略,并改变用户的密码策略
添加:
cat << EOF | ldapmodify -x -D “cn=root,dc=asiainfo,dc=com” -w 123456 -H ldap://192.168.1.225
dn: uid=raoyi12,ou=People,dc=asiainfo,dc=com
changetype: modify
add: pwdPolicySubentry
pwdPolicySubentry: cn=default,ou=pwpolicies,dc=asiainfo,dc=com
EOF
修改:
cat << EOF | ldapmodify -x -D “cn=root,dc=asiainfo,dc=com” -w 123456 -H ldap://192.168.1.225
dn: uid=raoyi1,ou=People,dc=asiainfo,dc=com
changetype: modify
replace: pwdPolicySubentry
pwdPolicySubentry: cn=last,ou=pwpolicies,dc=asiainfo,dc=com
EOF

修改后可看到:
openldap增加密码策略 - 图8