OpenLDAPでのLinux統合認証

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

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

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

 

 

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

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

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

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

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

 

 

OpenLDAPの設定

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

include	/etc/ldap/schema/core.schema <---利用するスキーマを指定
include	/etc/ldap/schema/cosine.schema
include	/etc/ldap/schema/inetorgperson.schema

pidfile	/var/run/slapd/slapd.pid

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

suffix	"dc=unixlife,dc=local" <---rootサフィックスを設定
rootdn	"cn=Manager,dc=unixlife,dc=local" <---rootdnの設定

rootpw	secret <---rootdnのパスワードを設定

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

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

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

 

 

ユーザ、グループの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にアクセスし認証するように設定できます。

authconfig-tuiコマンド実行後、「Use LDAP」と「Use LDAP Authentication」を選択し、接続先サーバを指定します。

ここで実際に変更されるファイルは以下の通りです。

/etc/ldap.conf

/etc/openldap/ldap.conf

/etc/nsswitch.conf

/etc/pam.d/system-auth

/etc/sysconfig/authconfig

この中の、/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サーバは2台ある場合は、/etc/ldap.conf/etc/openldap/ldap.confでの指定は、それぞれ以下のようになります。

/etc/ldap.conf

uri ldap://192.168.1.1/ ldap://192.168.1.2/

 

/etc/openldap/ldap.conf

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

 

 

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

ユーザのホームディレクトリを作成し、初期ファイルを配置します。

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

mkdir /home/sakurai

 

初期ファイルの配置

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

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

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

 

 

nscdの利用

nscdとは、ネームキャッシュデーモンで、/etc.nsswitch.confに記載してある物をキャッシュする事により効率化を測ります。

nscdは起動しておくだけで非常に大きな効果があります。

nscdはインストールされていると思いますので、起動設定だけご紹介します。

/etc/init.d/nscd start
chkconifg nscd on

nscdでキャッシュする内容を調整したい場合は、/etc/nscd.confで調整してください。

 

 

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

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="">