SSブログ

openldapサーバを構築しよう [No.7 パスワードポリシーの確認] [openldap]

前回はSSLの確認を行いました。
今回はパスワードポリシーの確認したいと思います。

動作環境等は以下の通りです。
OS:CentOS 6.4 x84_64(Minimal Desktop)
hostname:ldap1.local.localdomain.com
IP:192.168.0.81/255.255.255.0/192.168.0.1
LDAP:openldap 2.4.23
SSL:OpenSSL 0.9.8y
PORT:LDAP(389)/LDAPS(636)

DIT(Directory Information Tree)は以下の通りです。
ldap-dit.png

さっそく、やってみましょう。

1.アカウントロック
pwdMaxFailure: 3に設定したので、3回間違うとロックします。
# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "uid=user01,ou=People,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy +
Enter LDAP Password:
ldap_bind: Invalid credentials (49)

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "cn=Manager,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy pwdFailureTime
Enter LDAP Password:
# user01, People, example.com
dn: uid=user01,ou=People,dc=example,dc=com
pwdFailureTime: 20130809221406Z

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "uid=user01,ou=People,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy +
Enter LDAP Password:
ldap_bind: Invalid credentials (49)

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "cn=Manager,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy pwdFailureTime
Enter LDAP Password:
# user01, People, example.com
dn: uid=user01,ou=People,dc=example,dc=com
pwdFailureTime: 20130809221406Z
pwdFailureTime: 20130809221612Z

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "uid=user01,ou=People,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy +
Enter LDAP Password:
ldap_bind: Invalid credentials (49)

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "cn=Manager,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy pwdFailureTime
Enter LDAP Password:
# user01, People, example.com
dn: uid=user01,ou=People,dc=example,dc=com
pwdFailureTime: 20130809221406Z
pwdFailureTime: 20130809221612Z
pwdFailureTime: 20130809221651Z

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "uid=user01,ou=People,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy +
Enter LDAP Password:
ldap_bind: Invalid credentials (49); Account locked


2.パスワード履歴
pwdInHistory: 3に設定したので、3つの履歴を保持する
# ldappasswd -x -D "cn=Manager,dc=example,dc=com" -S -W "uid=user01,ou=People,dc=example,dc=com"
New password:
Re-enter new password:
Enter LDAP Password:

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "cn=Manager,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy pwdHistory
Enter LDAP Password:
# user01, People, example.com
dn: uid=user01,ou=People,dc=example,dc=com
pwdHistory: 20130809222157Z#1.3.6.1.4.1.1466.115.121.1.40#11#P@ssword123

何回かパスワード変更を実施

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "cn=Manager,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy pwdHistory
Enter LDAP Password:
# user01, People, example.com
dn: uid=user01,ou=People,dc=example,dc=com
pwdHistory: 20130809223829Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}hviJ/k45I83
 YFrRU10Gsj8tSnmPCi94/
pwdHistory: 20130809224808Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}TOtyUo1TkS0
 cpgI2k+HBAl28f8xBR4Cq
pwdHistory: 20130809224924Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}7UZSKetH+f6
 mf1UUuok7YOzmILf4iEN/


3.ユーザー自身のパスワード変更
pwdAllowUserChange: TRUEに設定したので、ユーザー自身でパスワードが変更できます。
# ldappasswd -x -D "uid=user01,ou=People,dc=example,dc=com" -S -W
New password:
Re-enter new password:
Enter LDAP Password:

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "cn=Manager,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy pwdHistory
Enter LDAP Password:
# user01, People, example.com
dn: uid=user01,ou=People,dc=example,dc=com
pwdHistory: 20130809222157Z#1.3.6.1.4.1.1466.115.121.1.40#11#P@ssword123
pwdHistory: 20130809222833Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}TXOFppv+Cim
 EiSV0KIwpRV6op/u+pt3G


4.過去のパスワードは利用できない
# ldappasswd -x -D "uid=user01,ou=People,dc=example,dc=com" -S -W
New password:
Re-enter new password:
Enter LDAP Password:
Result: Constraint violation (19)
Additional info: Password is in history of old passwords

5.パスワード文字数のチェック
pwdMinLength: 6に設定したので、6文字未満はポリシー違反
(お詫び)No.5のDIT構築でpwdCheckQuality: 2を書き漏らしました。
# ldappasswd -x -D "uid=user01,ou=People,dc=example,dc=com" -S -W
New password:
Re-enter new password:
Enter LDAP Password:
Result: Constraint violation (19)
Additional info: Password fails quality checking policy

6.初回パスワード変更
pwdMustChange: TRUEに設定していますが、
PwdResetが自動的にユーザーエントリに設定されません。
バグなんでしょうか・・・
仕方ないので、Managerで設定します。

# vi pwdreset.ldif

以下のように編集します。

dn: uid=user01,ou=People,dc=example,dc=com
changetype: modify
replace: pwdReset
pwdReset: TRUE

# ldapmodify -x -H "ldap://ldap1.local.localdomain.com/" -D "cn=Manager,dc=example,dc=com" -W -f pwdreset.ldif
Enter LDAP Password:
modifying entry "uid=user01,ou=People,dc=example,dc=com"

# ldapsearch -x -H "ldap://ldap1.local.localdomain.com/" -D "uid=user01,ou=People,dc=example,dc=com" -W -b uid=user01,ou=People,dc=example,dc=com -s sub objectclass=* -e ppolicy
Enter LDAP Password:
ldap_bind: Success (0); Password must be changed
# search result
search: 2
result: 50 Insufficient access
text: Operations are restricted to bind/unbind/abandon/StartTLS/modify passwo
 rd

ちなみにですが、pwdMustChange: FALSEの場合は、
pwdReset: TRUEをユーザーエントリに追加しても
初回パスワード変更は強制されません。


パスワード有効期限は時間がかかるので省略します。ご自身で確認してください。
これでパスワードポリシーの確認は完了です。
最後にLDAP用のGUIツールを紹介します。

次回もお楽しみに!!

nice!(58)  コメント(6)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 58

コメント 6

暁烏 英(あけがらす ひで)

ご訪問いただきありがとうございます。
残念ながら、爺さんには英語交じりのIT用語はちんぷんかんぷん。わかりません。niceを付けた人たちみんな本当に理解しているのでしょうか?
歳の差を感じるなあ。
by 暁烏 英(あけがらす ひで) (2013-08-11 13:50) 

assimane

暁烏 英(あけがらす ひで)さん、nice!&コメントありがとうございます。
nice!は訪問したしるし程度で気軽にしていただいていいと思います。
これからもよろしくお願いします。

by assimane (2013-08-11 15:20) 

hiro

Ldapの設定はやったことないですけど、パスワードポリシー等も結構細かく設定できるんですね。
文字数、履歴、パスワードロックなどはできるのがわかったのですが、文字種別(英大文字、小文字、数字、記号)などの縛りは入れられるのですか?
たとえば、文字種としてすべてを含めている必要があるなど。
by hiro (2013-08-11 15:47) 

assimane

hiroさん、いつもnice!&コメントありがとうございます。
文字種に関するパスワードポリシーはありませんね。
一般的に製品化されているものであれば、文字種や辞書、特定文字の禁止などきめ細かい設定が可能ですが、OSSなんでそういうところはまだまだって感じですね。
ただ、オーバレイで実現されているので、ppolicy.cに簡単に実装できると思いますよ。

by assimane (2013-08-11 16:55) 

のぶ

はじめまして。
LPICレベル3の勉強をしていたらこちらのサイトにたどり着きました。
参考にさせていただきます。ありがとうございます。
by のぶ (2013-10-09 15:39) 

assimane

のぶさん、コメントありがとうございます。
LPICレベル3にこのサイトがどれだけ役に立つかわかりませんが、参考になれば幸いです。
ただ、僕のサイトが完璧でもありませんから、違っていても文句、クレームはなしでお願いしますね。

by assimane (2013-10-09 20:32) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。