OpenLDAPでのLinux統合認証

ここでは、LinuxアカウントをOpenLDAPに統合する場合を例に、実際の利用方法を説明します。

なお、OpenLDAPの導入や基本設定は完了している物として進みます。

まだの方は、こちらを参照ください。

 

 

OpenLDAPでのLinuxユーザの統合認証

旧来はNISがこの機能を行ってきましたが、近年ではOpenLDAPを使った統合認証が多いと思います。

ここでは、複数台にまたがるLinuxユーザを、OpenLDAPで一元管理する例を記載します。

なお、ユーザのホームディレクトリを共有するには、NIS利用時同様、NFSを利用してください。

NFSサーバの設定は、こちらを参照ください。

 

 

OpenLDAPの設定

CentOS-6(RHEL6)のOpenLDAPでは、/etc/openldap/slapd.d/以下の設定ファイルを読み込み動作しますが、これらのファイルは、以前のように、slapd.confを作成したあとにコマンドで変換し作成します。

なお、slapd.confは以下の設定になってる事とします。

利用するスキーマを指定
include		/etc/openldap/schema/corba.schema
include		/etc/openldap/schema/core.schema
include		/etc/openldap/schema/cosine.schema
include		/etc/openldap/schema/duaconf.schema
include		/etc/openldap/schema/dyngroup.schema
include		/etc/openldap/schema/inetorgperson.schema
include		/etc/openldap/schema/java.schema
include		/etc/openldap/schema/misc.schema
include		/etc/openldap/schema/nis.schema
include		/etc/openldap/schema/openldap.schema
include		/etc/openldap/schema/ppolicy.schema
include		/etc/openldap/schema/collective.schema

# Allow LDAPv2 client connections.  This is NOT the default.
allow bind_v2

pidfile		/var/run/openldap/slapd.pid
argsfile	/var/run/openldap/slapd.args

TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt
TLSCertificateFile /etc/pki/tls/certs/slapd.pem
TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

database	bdb <---バックエンドDBの種類を指定

suffix	"dc=unixlife,dc=local" <---rootサフィックスを設定
rootdn	"cn=Manager,dc=unixlife,dc=local" <---rootdnの設定
rootpw	{SSHA}skbdekcj9sk0-2ksc-- <---rootdnのパスワードを設定

directory	"/var/lib/ldap" <---DBファイルの保管場所を指定

インデックスの設定
# Indices to maintain for this database
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

# enable monitoring
database monitor

access to attrs=userPassword <---アクセス制限の設定
	by self write
	by anonymous auth
	by * none
access to *
	by self write
	by * read

 

 

/etc/openldap/slapd.conf の作成が終わったら、slaptest コマンドで、/etc/openldap/slapd.d/以下に設定ファイルを変換・作成します。

 

・デフォルトの設定を削除

rm -rf /etc/openldap/slapd.d/*

 

・設定ファイルの作成

slaptest -f slapd.conf -F /etc/openldap/slapd.d/
chown -R ldap.ldap /etc/openldap/slapd.d

 

・OpenLDAPを起動

/etc/init.d/slapd start

 

 

ユーザ、グループのldifファイルの準備

OpenLDAPに登録する為のldifファイルを作成していきます。

TOP用ldifファイル

top.ldif

dn: dc=unixlife,dc=local <---TOPDN
dc: unixlife
objectClass: dcObject
objectClass: organization
o: unixlife

dn: ou=User,dc=unixlife,dc=local <---ユーザDN
objectClass: organizationalUnit
ou: User

dn: ou=Group,dc=unixlife,dc=local <---グループDN
objectClass: organizationalUnit
ou: Group

 

Group用ldifファイル

group.ldif

dn: cn=lduser,ou=Group,dc=unixlife,dc=local
gidNumber: 1000
objectClass: top
objectClass: posixGroup
cn: lduser

 

User用ldifファイル

user.ldif

dn: uid=sakurai,ou=User,dc=unixlife,dc=local
objectClass: top
objectClass: posixAccount
objectClass: account
gecos: ldap system users
cn: sakurai
uid: sakurai
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/sakurai
loginShell: /bin/bash
userPassword: {MD5}EDhIG.WZrHRbw=

 

User用ldifファイル(shadowを利用する場合)

user.ldif

dn: uid=sakurai,ou=User,dc=unixlife,dc=local
objectClass: top
objectClass: posixAccount
objectClass: account
objectClass: shadowAccount
shadowLastChange: 0
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
gecos: ldap system users
cn: sakurai
uid: sakurai
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/sakurai
loginShell: /bin/bash
userPassword: {MD5}EDhIG.WZrHRbw=

 

ldaifデータの登録

データファイルの作成が終了しましたので、これをLDAPに登録して行きます。

TOP用ldifの登録

ldapadd -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w パスワード -f top.ldif

ドメイン用ldifの登録

ldapadd -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w パスワード -f group.ldif

ユーザ用ldifの登録

ldapadd -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w パスワード -f user.ldif

これで必要なデータはLDAPに登録されました。

登録データの検索や更新などの実験をアクセス権限の確認も含めやってみてください。

 

 

Linuxの認証設定

RedHatやCentOSでは、authconfig-tuiコマンドでOpenLDAPにアクセスし認証するように設定できます。

CentOS-5までは、設定ファイルを手動で編集して設定することも可能でしたが、CentOS-6からは、SSSD認証抽象化レイヤーなどが加わり複雑化するため、authconfig-tuiコマンドで設定されることをお勧めします。

 

PAM+LDAP認証に必要なパッケージを追加

yum install pam_ldap nss-pam-ldapd sssd

 

 

authconfig-tui での設定

authconfig-tuiコマンド実行後、以下の追加設定を行います。

User Infomation
[x] Cache Information
[x]Use LDAP

 

Authentication
[x]Use LDAP Authentication

 

LDAP Settings
Server:ldap://127.0.0.1/
dc=unixlife,dc=local

 

 

TLSの設定

CentOS-6のOpenLDAPからは、TLSの設定が必須のため、証明書を準備します。

cp /etc/pki/tls/certs/ca-bundle.crt /etc/openldap/cacerts/

 

 

認証の追加設定

authconfig-tui コマンドで、以下の設定を追加します。

 

・ログイン時に自動でホームディレクトリを作成する。

authconfig --enablemkhomedir --update

 

・SSSD認証抽象化レイヤを有効にする。

authconfig --enablesssd --enablesssdauth --update

 

 

SSSDの設定

/etc/sssd.conf の [domain/default] セクションの最下行に以下を追加します。

auth_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
・
・
dap_tls_cacertdir = /etc/openldap/cacerts
ldap_tls_reqcert = never 
enumerate = True

 

 

PAMの設定変更

この中の、/etc/pam.d/system-authを、さらに編集します。

authconfig-tuiコマンドで編集されたsystem-authのままでは、認証実行時にOpenLDAPが何らかの障害で応答しない場合、例えシングルモードでの認証ですら、応答を待ち続け認証作業が行われません。

そのため、以下の行に、authinfo_unavail=ignoreを追加し、応答が無い時は/etc/shadowによるローカル認証をするようにしてします。

/etc/pam.d/system-auth

account	[default=bad success=ok user_unknown=ignore authinfo_unavail=ignore] pam_ldap.so

 

 

参照LDAPが複数ある場合の設定

また、参照先のLDAPサーバは2台ある場合は、/etc/openldap/ldap.confでの指定は、それぞれ以下のようになります。

 

/etc/openldap/ldap.conf

URI ldap://192.168.1.1/ ldap://192.168.1.2/

 

 

起動デーモンの設定

chkconfig sssd on
chkconfig slapd on
chkconfig nslcd on
chkconfig nscd on

 

 

デーモンの起動

/etc/init.d/slapd start
/etc/init.d/sssd start
/etc/init.d/nslcd start
/etc/init.d/nscd start

 

 

 

ユーザ用ディレクトリと初期ファイルの準備

ユーザーのホームディレクトリは、authconfig-tuiで自動作成するように設定していますが、手動で準備する場合は、以下のようにホームディレクトリを作成し、初期ファイルを配置します。

ホームディレクトリの作成

mkdir /home/sakurai

 

初期ファイルの配置

cp /etc/skel/* /home/sakurai/

これで、OpenLDAPでの認証の設定は終了です。

なお、shadowを利用した場合には、初回ログイン時にパスワードの変更が必要です。

 

 

認証クライアントの設定

ここまでは、OpenLDAPサーバで認証サーバを作成してきました。

ここからは、認証サーバに接続するクライアント(と言ってもLinuxサーバですが・・・)を設定します。

 

認証設定

CentOS-6からは、SSSD認証抽象化レイヤーなどが加わり複雑化するため、authconfig-tuiコマンドで設定されることをお勧めします。

 

PAM+LDAP認証に必要なパッケージを追加

yum install pam_ldap nss-pam-ldapd sssd

 

 

authconfig-tui での設定

authconfig-tuiコマンド実行後、以下の追加設定を行います。

User Infomation
[x] Cache Information
[x]Use LDAP

 

Authentication
[x]Use LDAP Authentication

 

LDAP Settings
Server:ldap://192.168.1.100/
dc=unixlife,dc=local

 

 

TLSの設定

CentOS-6のOpenLDAPからは、TLSの設定が必須のため、証明書を準備します。

cp /etc/pki/tls/certs/ca-bundle.crt /etc/openldap/cacerts/

 

 

認証の追加設定

authconfig-tui コマンドで、以下の設定を追加します。

 

・ログイン時に自動でホームディレクトリを作成する。

authconfig --enablemkhomedir --update

 

・SSSD認証抽象化レイヤを有効にする。

authconfig --enablesssd --enablesssdauth --update

 

 

SSSDの設定

/etc/sssd.conf の [domain/default] セクションの最下行に以下を追加します。

auth_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
・
・
dap_tls_cacertdir = /etc/openldap/cacerts
ldap_tls_reqcert = never 
enumerate = True

 

 

PAMの設定変更

この中の、/etc/pam.d/system-authを編集します。

 

/etc/pam.d/system-auth

account	[default=bad success=ok user_unknown=ignore authinfo_unavail=ignore] pam_ldap.so

 

 

参照LDAPが複数ある場合の設定

また、参照先のLDAPサーバは2台ある場合は、/etc/openldap/ldap.confでの指定は、それぞれ以下のようになります。

 

/etc/openldap/ldap.conf

URI ldap://192.168.1.1/ ldap://192.168.1.2/

 

 

起動デーモンの設定

chkconfig sssd on
chkconfig nslcd on
chkconfig nscd on

 

 

デーモンの起動

/etc/init.d/sssd start
/etc/init.d/nslcd start
/etc/init.d/nscd start

 

 

 

OpenLDAPのデータ操作

OpenLDAPのデータ登録や検索、削除、変更のコマンドをご紹介します。

また、GUIツールの紹介もします。

 

コマンドでのデータ操作

データ操作には、いくつか利用できるコマンドがありますが、今回はldap***というコマンドを紹介します。

このコマンドは、OpenLDAPを起動した状態で利用できます。

なお、環境は、suffix=’dc=unixlife,dc=local’、rootdn=’cn=Manager,dc=unixlife,dc=local’、rootpw=’secret’とします。

データの登録

user.ldifファイルを登録します。

ldapadd -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w secret -f user.ldif

 

データの検索

uidの末尾が’01’のデータを検索します。

ldapsearch -x -h localhost -b "dc=unixlife,dc=local" -s sub "(uid=*01)"

 

データの削除

‘dn : uid=ito,dc=unixlife,dc=local’のデータを削除します。

ldapdelete -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w secret "uid=ito,dc=unixlife,dc=local"

 

データの変更

データの変更には更新用ldifファイルを作成し行います。

ldapmodify -x -h localhost -D "cn=Manager,dc=unixlife,dc=local" -w secret < modify.ldif

modify.ldifの書式

1.dn:を指定します。

2.ldifのタイプをmodifyで指定します。

3.属性値を置き換える場合は”replace”、追加する場合は”add”、を指定し、属性と値を記入します。

4.削除する場合は”delete”で削除する属性を指定します。

dn: uid=ito,ou=User,dc=unixlife,dc=local
changetype: modifty
replace: sn
sn: shimizu
-
add: homeDirectory
homeDirectory: /home/shimizu
-
delete: telephoneNumber

 

 

OpenLDAPのGUIクライアントソフト

コマンドから、登録、検索、変更、削除が可能ですが、GUIのツールもいくつか手入できます。

GUIツールをいくつかあげておきます。

Apache LDAP Studio (個人的にお勧め)

LAT LDAP Administration Tool

LDAP Admin

JXplorer

phpLDAPadmin

  1. OpenLDAPでのLinux統合認証 | UNIXLife | yeees.in - pingback on 2014/10/20 at 9:57 PM

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <img localsrc="" alt="">

Trackbacks and Pingbacks: