読者です 読者をやめる 読者になる 読者になる

黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

OpenLDAPでディレクトリサービスってみる(1日目)

Linux ldap

最近転勤になりまして、職場環境ががらっと変わりました。業務上必要ですのでActiveDirectoryのお勉強をちょろちょろしているのですが、Windows Server触っていると謎のフラストレーションがたまってしまったので、ディレクトリサービスのお勉強がてらOpenLDAPの設定とかしてみることにしました。
比重は大きくありませんがLPIC2の範囲でもありますので、いい機会ではないかと思います。

 

ディレクトリサービスldapって何よ

ディレクトリサービスというものは、ネットワーク上の資源とそれらの属性を管理し、検索できるシステムのことだそうです。
例えばネットワークを使用するユーザや、それらが属する組織、ネットワーク上にあるサーバやプリンタなどを管理できます。
どのサイトでもよく例に挙げられているものとしては、ホスト名とIPアドレスを結びつけるDNSがあります。

このディレクトリサービスを利用するためのプロトコルLDAPです。
LDAPサーバをたてておけば、一元管理されたユーザを用いてクライアントにアクセスすることができるため、管理者の負担が軽減されます。

ということで、今回はオープンソースであるOpenLDAPを使ってユーザ管理をやってみたいと思います。

 

細かいことはとりあえずいいから、設定して使ってみる。

環境

ぐあーっとやったこと

1.パッケージを入れる

# yum install openldap-servers openldap-clients

2.LDAPサーバ管理用のパスワードを生成する

# slappasswd
New password: 
Re-enter new password: 
{SSHA}hogehogefizzbuzzhagetenaishi ← 暗号化されたパスワード。控えておきます。

3,DBの設定

# cd /var/lib/ldap
# cp -p /usr/share/openldap-servers/DB_CONFIG.example DB_CONFIG

4./etc/openldap/slapd.dをからっぽに

# cd /etc/openldap
# cp -pR slapd.d slapd.d.org
# rm -rf slapd.d/*

5.slapd.confの作成と編集

# cp -p /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
# vim /etc/openldap/slapd.conf
...

#######################################################################
# database definitions
#######################################################################

database    bdb
suffix      "dc=example,dc=com"  ← 「example.com」の例
checkpoint  1024 15
rootdn      "cn=Manager,dc=example,dc=com"  ← 管理者として`cn`はManagerとなります
rootpw      {SSHA}hogehogefizzbuzzhagetenaishi ← `slappasswd`で生成した暗号化PASS

6.slapd.confの確認

# slaptest -u -f /etc/openldap/slapd.conf -v
config file testing succeeded

私が実施した時はエラー出ませんでしたが、出たらググってみましょう…

7./etc/openldap/slapd.dの更新

# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

私はここでdb_open(/var/db/openldap-data/id2entry.bdb) failed: No such file or directory (2)的なエラーが出ました。
id2entry.bdbというファイルがない?なんのこっちゃかわからなかったので、こちら様の通り、以下のようにしました。

slapadd -l /etc/openldap/schema/core.ldif

適当なldifファイルを生成してあげると、bdbファイルもできるようです。ううむ。

8.ファイル等の所有者変更

# chown -R ldap:ldap /var/lib/ldap
# chown -R ldap:ldap /etc/openldap/slapd.d

9.サーバ起動!

# service slapd start

10.アクセス確認してみる

# ldapsearch -x -D "cn=Manager,dc=example,dc=com" -W
Enter LDAP Password:  ← LDAP管理用のPASS(暗号化する際に入力したPASS)

11.ldifファイルを作成する。

# mkdir /work && cd /work
# vim base.ldif

dn: dc=example,dc=com
objectClass: dcObject
objectClass: organization
dc: example
o: example

dn: cn=Manager,dc=example,dc=com
objectclass: organizationalRole
cn: Manager

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

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

 

# vim group.ldif

dn: cn=group01,ou=group,dc=example,dc=com
objectClass: posixGroup
objectClass: top
cn: group01
gidNumber: 3001

 

# vim user.ldif

dn: uid=user01,ou=People,dc=example,dc=com
uid: user01
cn: Test User 01
objectClass: account
objectClass: posixAccount
objectClass: top
userPassword:  {SSHA}hogehogefizzbuzzhagetenaishi ← slappasswdでry
loginShell: /bin/bash
uidNumber: 5001
gidNumber: 3001
homeDirectory: /work/home/user01

12.作成したldifを元に情報を登録する

# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f ./base.ldif
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f ./group.ldif
# ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f ./user.ldif

13.user01のためにディレクトリを作る

# mkdir -p /work/home/user01

14.クライアント認証のためのpamとかパッケージ導入

# yum install pam_ldap
# yum install nscd nss-pam-ldapd

15.クライアントの設定

# authconfig-tui

上記コマンドを叩くと下のような画面が出ます。びびった。

f:id:ryo14_ana:20140410231938j:plain

LDAPを使用LDAP認証を使用にチェックを入れて次へ。
OKを押下します。

設定が完了すると同時にnslcdが起動するようです。
設定ファイルの編集でもできそう…?

16.telnetで接続確認

$ telnet localhost
無理やでー

telnet-serverを入れないとダメみたいですね…ははは…

# yum -y install telnet-server

telnetはxinetdを経由して起動するようですので、/etc/xinetd.d/telnet内のdisableをnoにしてあげて起動しましょう。

これで再度telnet接続を実施すれば、(諸々の設定に問題がなければ)user01で認証が可能になっているはずです。

本の丸写しならぬ先生方のブログ丸写しな感じですが、明日以降で各設定内容と不足している部分を記載していきたいと思います。

続く…