openldap ssh linuxuser連携

環境

▼LDAPサーバ
centos 6.4
openldap-2.4.23-32

▼LDAPクライアント
centos 6.4

LDAPサーバ側作業

データイメージ

example.com
 |_ cm=Manager
 |_ ou=a
    |_ ou=a_1
       |_ cn=test
       |_ uid=test

ディレクトリを作成

vi /etc/openldap/base.ldif

dn: ou=a,dc=example,dc=com
objectClass: organizationalUnit
ou: a

dn: ou=a_1,ou=a,dc=example,dc=com
objectClass: organizationalUnit
ou: a_1

適応

ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret -f base.ldif

グループを作成

vi /etc/openldap/group.ldif

dn: cn=test,ou=a_1,ou=a,dc=example,dc=com
objectClass: top
objectClass: posixGroup
cn: test
gidNumber: 501

適応

ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret -f group.ldif

ユーザを作成

vi /etc/openldap/user.ldif

dn: uid=test,ou=a_1,ou=a,dc=example,dc=com
uid: test
cn: test
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword: test
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
homeDirectory: /home/test

適応

ldapadd -x -D "cn=Manager,dc=example,dc=com" -w secret -f user.ldif

LDAPクライアント側作業

LDAPで名前解決(認証)ができるよう設定を行う。

モジュールをインストール

yum install nss-pam-ldapd

nslcdの設定

これはLDAPに問い合わせを行うデーモンプログラムです。

vi /etc/nslcd.conf
・
・
・
#uri ldap://127.0.0.1/
uri ldap://192.168.**.**/
base dc=example,dc=com

base   group  ou=a_1,ou=a,dc=example,dc=com
base   passwd  ou=a_1,ou=a,dc=example,dc=com
base   shadow  ou=a_1,ou=a,dc=example,dc=com

起動

chkconfig nslcd on
/etc/init.d/nslcd start

NSS(nsswitch.conf)がLDAPを利用するように設定

vi /etc/nsswitch.conf
・
・
・
passwd:     files ldap  ← ldapを追加
shadow:     files ldap  ←
group:      files ldap  ←
・
・
・

PAMの設定

PAM(Pluggable Authentication Module)とは、個々のサービスに必要な認証機能を提供してくれます。

/etc/pam_ldap.conf 設定

vi /etc/pam_ldap.conf
・
・
・
#host 127.0.0.1
host 192.168.**.**
base dc=example,dc=com
・
・
・

/etc/pam.d/system-auth 設定

vi /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      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        sufficient    pam_ldap.so use_first_pass                   ←追加
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so  ←追加
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok                      ←追加
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so                                  ←追加
session     optional      pam_mkhomedir.so skel=/etc/skel umask=077

ssh 設定

/etc/pam.d/password-auth 設定

vi /etc/pam.d/password-auth

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        sufficient    pam_ldap.so use_first_pass                  ←追加
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     [default=bad success=ok user_unknown=ignore authinfo_unavail=ignore] pam_ldap.so   ←追加
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_ldap.so use_authtok                     ←追加
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_ldap.so                                 ←追加
session     sufficient   pam_mkhomedir.so skel=/etc/skel/ umask=0022

これでssh ログインできるようになります。
sshログインするとディレクトリが作成されます。

おすすめの記事