arinux

Linux サーバー設定備忘録
<< openLDAP 構築(14) - ログ管理 | main | openLDAP 構築(16) - pam_ldap と nss_ldap >>
openLDAP 構築(15) - PAM認証設定


この認証設定は、マスターサーバー及びクライアントの両方で実施します。


1 system-auth で全ての PAM認証を行う場合


以下のように 「/etc/pam.d/system-auth」 へ 「pam_ldap.so」 モジュールを追加することによって、LDAPユーザーのパスワードによるログイン認証ができるようになります。「pam_ldap.so」 は LDAP からユーザー情報を取得するモジュールです。


メモ/etc/pam.d/system-auth

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      /lib/security/pam_env.so
auth        sufficient    /lib/security/pam_unix.so likeauth
auth        sufficient    /lib/security/pam_ldap.so use_first_pass
auth        required      /lib/security/pam_deny.so

account     required      /lib/security/pam_unix.so
account     [default=bad success=ok user_unknown=ignore service_err=ignore ¥
 system_err=ignore authinfo_unavail=ignore] /lib/security/pam_ldap.so

password    required      /lib/security/pam_cracklib.so retry=3 type=
password    sufficient    /lib/security/pam_unix.so use_authtok md5 shadow
password    sufficient    /lib/security/pam_ldap.so use_authtok
password    required      /lib/security/pam_deny.so

session     required      /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022}
session     required      /lib/security/pam_limits.so
session     required      /lib/security/pam_unix.so
session     optional      /lib/security/pam_ldap.so


  • 「authinfo_unavail=ignore」 を記述しないと、「slapd」 が停止しているときに、/etc/passwd にエントリーされているユーザーがログインできなくなります(もちろん root も)。
  • 「session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022}」 を記述すると、ログインしたユーザーのホームディレクトリがない場合に作成してくれます。


2 個別に PAM認証を行う場合


  • 例えば、ssh ログイン時にのみ LDAP に問い合わせさせたい、という時に個別に設定します。
  • 以下の例は、pam_unix.so よりも pam_ldap.so が先に 読まれるようにしています、これは、ユーザーID はローカルの /etc/passwd を見て、パスワードだけを LDAP に問い合わせさせたい、という場合にこのようにします。

メモ/etc/pam.d/sshd(ssh ログイン時の認証)
#%PAM-1.0
auth       required     /lib/security/pam_nologin.so
auth       sufficient   /lib/security/pam_ldap.so try_first_pass
auth       sufficient   /lib/security/pam_unix.so
auth       required     /lib/security/pam_deny.so

account    [default=bad success=ok user_unknown=ignore service_err=ignore ¥
 system_err=ignore authinfo_unavail=ignore] /lib/security/pam_ldap.so
account    required     /lib/security/pam_unix.so

password   required     /lib/security/pam_cracklib.so retry=3 type=
password   sufficient   /lib/security/pam_ldap.so use_authtok
password   sufficient   /lib/security/pam_unix.so use_authtok md5 shadow
password   required     /lib/security/pam_deny.so

session    required     /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022
session    optional     /lib/security/pam_ldap.so
session    required     /lib/security/pam_unix.so


メモ/etc/pam.d/passwd(passwd コマンド実行時の認証)

#%PAM-1.0
auth        sufficient    /lib/security/pam_ldap.so use_first_pass
auth        sufficient    /lib/security/pam_unix.so use_first_pass
auth        required      /lib/security/pam_deny.so

account     sufficient    /lib/security/pam_ldap.so
account     required      /lib/security/pam_unix.so

password    required      /lib/security/pam_cracklib.so minlen=8 dcredit=-1 ¥
 ucredit=0 lcredit=0 ocredit=0 retry=3 type=
password    sufficient    /lib/security/pam_ldap.so use_authtok
password    sufficient    /lib/security/pam_unix.so use_authtok md5 shadow remember=1
password    required      /lib/security/pam_deny.so


  • この例では、pam_cracklib.so でパスワードの文字列をチェックしています。


    minlen最低文字数
    dcredit最低含めなければいけない数字の個数
    ucredit最低含めなければいけない大文字の個数
    lcredit最低含めなければいけない小文字の個数
    ocredit最低含めなければいけないその他の文字の個数
    retryリトライの回数
    typeプロンプトに使われる文字列


  • minlen=8 として、8文字の中に最低 1文字の数字を含める、という場合は、「dcredit=-1」 のように、「-n」 で指定します。
  • Default で dcredit=1, ucredit=1, lcredit=1, ocredit=1 になっています。これらは minlen の値から差し引かれてしまいますので、明示的に ucredit=0 といった指定をします。
  • もし 「minlen=8 dcredit=1」 とすると、1個の数字を含む場合は最低 7文字、数字を含まない場合は最低 8文字、という意味になってしまいます。

メモ pam_ldap.so のオプション


try_first_passユーザーの初期パスワード設定されていない場合に、パスワード入力を求めるプロンプトを表示します。
use_first_passこれがないと パスワード・プロンプトが pam_ldap のものと pam_unix のものと2回出ます(それぞれ 1回ずつです)。
use_authtokこれがないと、パスワード変更した直後に、新パスワードの認証のため、さらに 2回新パスワードを入力しないといけません。


3 「/etc/sysconfig/authconfig」の以下の個所を変更します。


USELDAP=yes             # もともとは no です。
USELDAPAUTH=yes         # もともとは no です。



4 LDAP ユーザーのパスワードの変更


  1. 以下のように、LDAPユーザー自身のパスワードを変更します。
    [gamba]$ passwd
    Changing password for user gamba.
    Enter login(LDAP) password:
    New password:
    Retype new password:
    LDAP password information changed for gamba
    passwd: all authentication tokens updated successfully.
    


  2. LDAP管理者によるパスワード変更は、以下のようにします。
    [root]# ldappasswd -x -D "cn=Manager,dc=examples,dc=com" -W -S ¥
     "uid=gamba,ou=people,dc=examples,dc=com"
    New password:
    Re-enter new password:
    Enter LDAP Password:(openLDAP 構築(6) で生成したパスワードを入力)
    Result: Success (0)
    


    メモ ldappasswd コマンドのオプション


    -xSASL(Simple Authentication and Security Layer)ではなく、シンプルな認証を使用する。
    -DLDAPサーバ接続時のdnを指定する。
    -WLDAPサーバ接続時のパスワードを入力するためのプロンプトを出す。
    -S新パスワードを入力するためのプロンプトを出す。


ここまで

| arinux | openldap | 10:35 | comments(2) | trackbacks(0) | pookmark |
管理者の承認待ちコメントです。
| - | 2018/05/07 4:32 PM |
管理者の承認待ちコメントです。
| - | 2018/06/05 5:57 PM |









http://arinux.net/trackback/19
     12
3456789
10111213141516
17181920212223
24252627282930
<< June 2018 >>
+ SELECTED ENTRIES
+ RECENT COMMENTS
+ RECENT TRACKBACK
+ CATEGORIES
+ ARCHIVES
+ 掲載予定のタイトル
  • Wordpress
  • Pukiwiki
  • SMTPs/POPs/IMAPs
  • fml
  • Tips
+ CSS Nite
+ MOBILE
qrcode
+ LINKS
+ RECOMMEND
+ PROFILE