OpenLDAPサーバーを構築する

Pocket

Eye catch image by RRZEicons (Own work) [CC-BY-SA-3.0], via Wikimedia Commons

お久しぶりです。システム開発担当の齊藤です。

LDAP、皆さん利用しているでしょうか。

何となく地味な印象のLDAPですが、ApacheのBasic認証やRedmineと連携して社内のID/パスワードを一元管理したり、運用中のサーバーのメタ情報を管理したりと、あると何かと便利なサービスです。

今回は CentOS 6.5 と OpenLDAP (マスコットが巨大あおむし…キモイ…)でLDAPサーバーを構築します。

インストール

CentOS 6.5では openldap-servers パッケージでLDAPサービスを構築することができます。例によって  yum install でインストールします。ついでにクライアントもインストールします。

# yum install openldap-servers openldap-clients
# service slapd start
# chkconfig splapd on

設定

CentOS 6.x では OpenLDAP の設定は /etc/openldap にあります。

# ls -F /etc/openldap
certs/ ldap.conf schema/ slapd.d/

ldap.conf はLDAPクライアントのため設定ファイルです。紛らわしいですが、サーバーの設定は slapd.d/ ディレクトリです。slapd.d/ ディレクトリには OpenLDAP サーバーの設定が LDIF (Ldap Data Interchange Format) で格納されています。LDIFはLDAPのディレクトリ情報をテキスト形式で表現したものですから、サーバーの設定もLDAP上で管理しているということになります。古いバージョンの CentOS では slapd.confという設定ファイルを使っていましたが、現在は obsolute となっています。

さて、これから OpenLDAP の設定を行っていきますが、OpenLDAPでは先に出てきたLDIFファイルを使って追加・修正・削除を行います。最初はLDIFの書き方に面くらいますが、一度設定してしまえば LDAP AdminApache Directory Studio といったリッチなGUIクライアントを使用して管理できるようになるので、頑張って設定してみてはいかがでしょうか。

準備

まず、バックエンドのデータベース (Berkeley DB) の設定ファイルを設置します。 サンプルファイルがあるので、これをそのまま使用します。

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

次に、LDAPサーバールートパスワードを設定します。/etc/openldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif に以下の一行を追記します。{SSHA}で始まるハッシュは slappasswd コマンドで生成します。

olcRootPW: {SSHA}9E9ebYLyJxeDMHg8p0Pe4kvl5/XfqE8i

ルートパスワードを設定したら、この時点でサーバーを再起動します。

# service slapd restart

特権アカウントの追加

次に、ディレクトリの管理を行うための特権アカウントを設定します。

bdb-init.ldif

dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=System Administrator,dc=unicast,dc=ne,dc=jp
-
replace: olcSuffix
olcSuffix: dc=unicast,dc=ne,dc=jp
-
add: olcRootPW
olcRootPW: {SSHA}5w4xUIhsXxwn6qK19p45LyviMJbMR6iQ

LDIFファイルを作成したら、次のコマンドでLDAPディレクトリに反映します。

# ldapmodify -x -D cn=config -f bdb-init.ldif -W

ルートディレクトリの作成

次に、ディレクトリのルートを作成します。今回は unicast.ne.jp というドメインをルートにします。LDAPではドメインの各要素を dc (domain component) と呼び、 dc=unicast,dc=ne,dc=jp と表現します。このルートを作成するLDIFファイルが以下です。特権アカウントとして System Administrator というエントリを作成しています。

init.ldif

dn: dc=unicast,dc=ne,dc=jp
objectclass: dcObject
objectclass: organization
o: Unicast, Inc.
dc: unicast

dn: cn=System Administrator,dc=unicast,dc=ne,dc=jp
objectclass: organizationalRole
cn: System Administrator

bdb-init.ldif で設定したアカウントを使用して認証をして、LDIFファイルを適用します。

# ldapadd -x -W -D "cn=System Administrator,dc=unicast,dc=ne,dc=jp" -f init.ldif

以降は特権アカウントを使用してGUIクライアント等から自由にエントリを作成することができます。個人的には LDAP Admin が使いやすいと感じました。

以上、CentOS 6.5 + OpenLDAP によるLDAPサーバーの構築でした。

投稿者紹介

齊藤 潤
サーバ運用もできるプログラマと化した、2013年入社の元新人エンジニアです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください