Search

openldap ppolicyをユーザ単位に適応する

2015年10月19日

前回は、全体に適応するデフォルトパスワードポリシーを記述した。

今回は、パスワードポリシーをユーザ単位に適応する方法を記述する。

まず、変化がわかりやすいようにデフォルトパスワードポリシーのpwdMaxAgeを100など短い値に変更しておく。

検証に使用するユーザ

uid=test,ou=system,dc=example,dc=com
uid=test2,ou=system,dc=example,dc=com

下記のようにパスワードの有効期限が切れている状態にする。
個別にパスワードポリシーを適応した際にわかりやすくするため。

# ldapsearch -x -D "uid=test,ou=system,dc=example,dc=com" -W -b "uid=test,ou=system,dc=example,dc=com" -s base -e ppolicy
Enter LDAP Password:
ldap_bind: Invalid credentials (49); Password expired

# ldapsearch -x -D "uid=test2,ou=system,dc=example,dc=com" -W -b "uid=test2,ou=system,dc=example,dc=com" -s base -e ppolicy
Enter LDAP Password:
ldap_bind: Invalid credentials (49); Password expired

*ppolicy設定方法

modifyようのファイルを作る。
今回は対象ユーザ「uid=test,ou=system,dc=example,dc=com」が、”パスワード期限切れしない”・”パスワードロックしない”ように変更を行う。

# vi test_modify.ldif
dn: uid=test,ou=system,dc=example,dc=com
changetype: modify
add: objectClass
objectClass: pwdPolicy
-
add: pwdPolicySubentry
pwdPolicySubentry: uid=test,ou=system,dc=example,dc=com
-
add: pwdAttribute
pwdAttribute: userPassword
-
add: pwdlockout
pwdlockout: FALSE
-
add: PwdInHistory
PwdInHistory: 1
-
add: pwdCheckQuality
pwdCheckQuality: 1
-
add: pwdMaxAge
pwdMaxAge: 0
-
add: pwdMinAge
pwdMinAge: 0

※pwdPolicySubentryが大事。これがないと認識しない。
他は、pwdPolicyのattributeを使用する。

*ppolicy適応

# ldapmodify -x -D "cn=Manager,dc=example,dc=com" -W -f test_delete.ldif
modifying entry "uid=test,ou=system,dc=example,dc=com"

*ppolicy確認

# ldapsearch -x -D "uid=test,ou=system,dc=example,dc=com" -W -b "uid=test,ou=system,dc=example,dc=com" -s base -e ppolicy
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <uid=test,ou=system,dc=example,dc=com> with scope baseObject
# filter: (objectclass=*)
# requesting: ALL
#

# test, system, example.com
dn: uid=test,ou=system,dc=example,dc=com
cn: test
sn: test
uid: test
mail: ****@aaa.com
description: web
description: ldap
description: web_admin
description: svn
gidNumber: 0
homeDirectory: -
uidNumber: 0
userPassword:: sdfasdfsa
objectClass: inetOrgPerson
objectClass: person
objectClass: posixAccount
objectClass: top
objectClass: pwdPolicy
pwdAttribute: userPassword
pwdLockout: FALSE
pwdInHistory: 1
pwdCheckQuality: 1
pwdMaxAge: 0
pwdMinAge: 0

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

# ldapsearch -x -D "uid=test2,ou=system,dc=example,dc=com" -W -b "uid=test2,ou=system,dc=example,dc=com" -s base -e ppolicy
Enter LDAP Password:
ldap_bind: Invalid credentials (49); Password expired

デフォルトパスワードポリシのmaxage:100を越えてもパスワードの有効期限が切れないこと、パスワードを指定回数間違えてもロックされないことので、これでOK

以上。