OpenLDAPでディレクトリサービスってみる(1日目)
最近転勤になりまして、職場環境ががらっと変わりました。業務上必要ですのでActiveDirectoryのお勉強をちょろちょろしているのですが、Windows Server触っていると謎のフラストレーションがたまってしまったので、ディレクトリサービスのお勉強がてらOpenLDAPの設定とかしてみることにしました。
比重は大きくありませんがLPIC2の範囲でもありますので、いい機会ではないかと思います。
ディレクトリサービス、ldapって何よ
ディレクトリサービスというものは、ネットワーク上の資源とそれらの属性を管理し、検索できるシステムのことだそうです。
例えばネットワークを使用するユーザや、それらが属する組織、ネットワーク上にあるサーバやプリンタなどを管理できます。
どのサイトでもよく例に挙げられているものとしては、ホスト名とIPアドレスを結びつけるDNSがあります。
このディレクトリサービスを利用するためのプロトコルがLDAPです。
LDAPサーバをたてておけば、一元管理されたユーザを用いてクライアントにアクセスすることができるため、管理者の負担が軽減されます。
ということで、今回はオープンソースであるOpenLDAPを使ってユーザ管理をやってみたいと思います。
細かいことはとりあえずいいから、設定して使ってみる。
環境
- OS
- CentOS6.4 64bit
- パッケージ
- 前提
ぐあーっとやったこと
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
上記コマンドを叩くと下のような画面が出ます。びびった。
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で認証が可能になっているはずです。
本の丸写しならぬ先生方のブログ丸写しな感じですが、明日以降で各設定内容と不足している部分を記載していきたいと思います。
続く…