arinux

Linux サーバー設定備忘録
<< OpnePNE 構築(2) | main | openLDAP 構築(43) - パスワードポリシー(ppolicy) (2) >>
openLDAP 構築(42) - パスワードポリシー(ppolicy) (1)


この記事は、LDAP Super Expert の 「LDAP パスワードポリシーの利用法」 を参考にしています。


パスワードポリシー(ppolicy)は、openldap 2.3 以降で追加された機能です。パスワードの文字数や履歴回数、有効期限などを、アカウント全体に default 値として適用したり、各アカウントに対して個別に適用することができます。


メモ モジュールまたはオーバーレイ


パスワードポリシー(ppolicy)を利用するためには、ソースのコンパイル前に、以下のようにコンフィグしておかなければいけません。

●モジュールを使用する場合
[root]# ./configure --enable-ldap=yes --enable-debug=yes --with-tls --enable-crypt=yes --with-cyrus-sasl ¥
--enable-overlays=yes --enable-modules=yes --enable-ppolicy=mod

●オーバーレイを使用する場合
[root]# ./configure --enable-ldap=yes --enable-debug=yes --with-tls --enable-crypt=yes --with-cyrus-sasl ¥
--enable-overlays=yes --enable-ppolicy=yes


モジュールの場合は、以下の場所に置かれます。

[root]# ls -l /usr/local/libexec/openldap
lrwxrwxrwx 1 root root     21 Dec  6 12:54 ppolicy-2.3.so.0 -> ppolicy-2.3.so.0.2.25
-rwxr-xr-x 1 root root 113484 Dec  6 12:54 ppolicy-2.3.so.0.2.25
-rwxr-xr-x 1 root root    868 Dec  6 12:54 ppolicy.la
lrwxrwxrwx 1 root root     21 Dec  6 12:54 ppolicy.so -> ppolicy-2.3.so.0.2.25



メモ slapd.conf 設定


  1. slapd.conf を編集します。
    # schema 追加
    include         /usr/local/etc/openldap/schema/ppolicy.schema
    
    # モジュールの場合は、以下を追加
    # Load dynamic backend modules:    # この行はもともと書かれてます。
    moduleload      ppolicy.la
    
    # アクセス制御は変更しません。
    
    # 以下を index の行よりも下に追加します。
    # Password Policy
    overlay ppolicy                    # この行はモジュール使用の際も書きます。
    ppolicy_default "cn=Standard Policy,ou=Policies,dc=examples,dc=com"
    ppolicy_use_lockout
    
    # 続いて、以下を追加します。
    password-hash {MD5}
    
    虫眼鏡 ppolicy ディレクティブの意味


    ディレクティブ意味
    overlay利用するオーバーレイを指定
    ppolicy_defaultDefault のパスワードポリシーを設定したエントリーの DN
    policy_use_lockoutアカウントがロックされている場合に、ロックしていることを知らせるエラーを返す


    虫眼鏡 password-hash


    ldappasswd コマンドでパスワードを設定・変更した際に、「userPassword」 に格納するパスワードのハッシュ方式を設定します。引数は {SSHA}, {SHA}, {SMD5}, {MD5}, {CRYPT}, {CLEARTEXT} のいずれかでなければなりません。デフォルトは {SSHA} です。


  2. slapd を再起動します。
    [root]# /etc/rc.d/init.d/slapd restart
    Stopping slapd
    Starting slapd
    



メモ Default パスワードポリシーのエントリー追加


全ユーザーに適用する Default のパスワードポリシーを設定します。


  1. 以下のように ou(organization unit) を追加します。
    [root]# vi ppolicy_ou.ldif
    dn: ou=Policies,dc=examples,dc=com
    objectClass: top
    objectClass: organizationalUnit
    ou: Policies
    
    [root]# ldapadd -x -W -D "cn=Manager,dc=examples,dc=com" -f ./ppolicy_ou.ldif
    Enter LDAP Password:(openLDAP 構築(6) で生成したパスワードを入力)
    adding new entry "ou=Policies,dc=examples,dc=com"
    


  2. 以下のように Default ポリシーの DN を追加します。
    [root]# vi ppolicy_default.ldif
    
    dn: cn=Standard Policy,ou=Policies,dc=examples,dc=com
    objectClass: top
    objectClass: device
    objectClass: pwdPolicy
    cn: Standard Policy
    pwdAttribute: userPassword
    pwdMustChange: TRUE
    pwdCheckQuality: 1
    pwdInHistory: 2
    pwdMinLength: 8
    pwdReset: TRUE
    
    [root]# ldapadd -x -W -D "cn=Manager,dc=examples,dc=com" -f ./ppolicy_default.ldif
    Enter LDAP Password:(openLDAP 構築(6) で生成したパスワードを入力)
    adding new entry "cn=Standard Policy,ou=Policies,dc=examples,dc=com"
    


    虫眼鏡 pwdPolicy オブジェクトクラスの属性


    属性意味
    pwdAttributeパスワードポリシーを適用する属性 「userPassword」 を指定。
    pwdMustChange「TRUE」 の場合は、最初のバインドの直後にパスワードを変更しなければならない。「FALSE」 の場合には、パスワードの変更を要求されない。Default は 「FALSE」。
    pwdCheckQualityパスワードの構文を検査するかを指定する。「0」 の場合は検査しない。「1」 の場合には検査するがパスワードをクライアント側でハッシュ化した場合など、 サーバー側での検査が不可能である場合には、検査せずに受け入れる。「2」 の場合には検査を行い、サーバー側での検査が不可能な場合にはエラーを返す。
    pwdInHistory古いパスワードを履歴に何個まで記録するかを指定する。履歴に記録されているパスワードは再利用できない。「0」の場合には、古いパスワードを履歴に記録しない。
    pwdMinLengthパスワードの最少の文字数で指定する。Defaultでは文字数に制限はない。
    pwdReset「TRUE」 の場合、管理者によってパスワードが変更された後の最初のログインの際、パスワードを変更しなければいけない。「FALSE」 の場合は変更する必要はない。
    pwdMinAgeパスワードの変更禁止期間を秒数で指定。一度パスワードを変更したら、一定期間パスワードを変更させないためのもの。「0」を指定すると、制限がなくなる。Default は 「0」。
    pwdMaxAgeパスワードの有効期限を秒数で指定。「0」を指定すると、制限がなくなる。Default は 「0」。
    pwdExpireWarningパスワード期限満了警告日数。パスワードがもうすぐ期限切れになる、と警告を何日前に出すかを秒数で指定する。Default は 「0」。



メモ パスワードの文字数(pwdMinLength)


  1. passwd コマンドでパスワードを変更してみます。例として、「frontale」 ユーザーでログインします。「pwdMinLength: 8」 引っかかるかを確認します。
    [frontale]$ mkpasswd -l 7
    PK8qt8%
    
    [frontale]$ passwd
    Changing password for user frontale.
    Enter login(LDAP) password: <現在のパスワード>
    New password: PK8qt8%
    Retype new password:PK8qt8%
    LDAP password information changed for frontale
    passwd: all authentication tokens updated successfully.
    

    passwd コマンドの場合は、ポリシーが適用されません。


  2. ldappasswd コマンドで、同様にパスワードを変更してみます。
    [frontale]$ mkpasswd -l 7
    79TjyB!
    
    [frontale]$ ldappasswd -x -D 'cn=kawasaki frontale,ou=people,dc=examples,dc=com' -W -S
    New password: 79TjyB!
    Re-enter new password:79TjyB!
    Enter LDAP Password:PK8qt8%
    Result: Constraint violation (19)
    Additional info: Password fails quality checking policy
    

    今度は、ポリシーに違反しパスワード変更が行えませんでした。


  3. ldappasswd コマンドで、「pwdMinLength: 8」 をクリアするパスワードに変更してみます。
    [frontale]$ mkpasswd -l 8
    2JI#jfc9
    
    [frontale]$ ldappasswd -x -D 'cn=kawasaki frontale,ou=people,dc=examples,dc=com' -W -S
    New password: 2JI#jfc9
    Re-enter new password: 2JI#jfc9
    Enter LDAP Password: PK8qt8%
    Result: Success (0)
    
    今度はうまくパスワードを変更できました。


    虫眼鏡 パスワードポリシー(ppolicy)の適用範囲


    パスワードポリシー(ppolicy)は、passwd コマンドによるパスワード変更には適用されません。ldappasswd コマンドに対して適用されます。


つづく

| arinux | openldap | 17:38 | comments(0) | trackbacks(0) | pookmark |









http://arinux.net/trackback/48
  12345
6789101112
13141516171819
20212223242526
2728293031  
<< May 2018 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ 掲載予定のタイトル
  • Wordpress
  • Pukiwiki
  • SMTPs/POPs/IMAPs
  • fml
  • Tips
+ CSS Nite
+ MOBILE
qrcode
+ LINKS
+ RECOMMEND
+ PROFILE