OpenLDAP環境構築(前編)
はじめに
前回はLDAPとは何かを知るためにも、ディレクトリサービスの概要とディレクトリサービスのデータベースともいうべきLDIFファイルについて説明しました。
今回は前回の内容を踏まえたうえで、オープンソースのLDAPサーバであるOpenLDAPの特徴を説明し、OpenLDAPのインストールから認証や暗号化をする際に使用するソフトウェアのインストールについて説明していきます。
OpenLDAPの特徴
まずはOpenLDAPの特徴を見ていきましょう。OpenLDAPの代表的な特徴を以下にあげます。
OpenLDAPの特徴
- GPLと同等のOpenLDAP Public Licenseというライセンスを有しており、改変や再配布は誰でも自由に行える
- SASLを利用した認証機構やSSL/TLSによるセキュリティ向上、Unicodeによる国際化対応などを盛り込んだLDAP v3に対応
- LinuxやSolarisをはじめ、MacintoshやWindowsなどの様々なプラットフォームで利用することができるため、データや環境の移行などがスムーズに実施できる
前バージョンであるLDAP v2は簡易バインドとkerberos4という2つの認証機構しかサポートしていませんでした。しかし現在の時代背景からいうと、簡易バインドやkerberos4ではセキュリティを考慮しているとはいえなくなってきています。OpenLDAPで扱う情報には個人情報も多いことから、SASL(Simple Authentication and Security Layer)の使用は必須とした方がよいでしょう。またLDAP v3に完全に準拠するためには、SASLによる認証が欠かせません。
インストール
本連載で使用するOSは、Red Hat Enterprise Linux 4で公開されているGPLに基づくコードを再編集・再コンパイルしたパッケージである「CentOS4.1」です。既に他のディストリビューションを使用している場合は、適宜置き替えて読み進めて下さい。
インストール作業は以下の通りに進めていきます。
インストール手順
- CentOSインストール(詳細は割愛)
- OpenSSLインストール
- Cyrus SASLインストール
- OpenLDAPインストール
OSのインストール
CentOS 4.1は下記のFTPサーバなどからISOイメージファイルを入手し、インストールして下さい。
ftp://ftp.riken.jp/Linux/centos/4.1/isos/i386/
ここでは、OSのインストールの詳細は割愛しますが、インストール時のファイアーウォールとSELinuxの設定については、なしと無効に設定して下さい(図1)。
インストールの種類については「カスタム」を選択し、パッケージグループの選択の際に「開発 → 開発ツール」にチェックを入れて下さい。これは、ソースファイルからコンパイルするために必要になります。
以降はインストール作業が正常に終了したという前提で話を進めていきます。
OpenSSLインストール
通信内容を暗号化するためにOpenSSLをインストールしますが、OSに同梱されているパッケージとは別に、ソースからコンパイルを行ってインストールします。今回インストールするバージョンは0.9.7gです。
OpenSSLのインストール手順
- 1. ソースをダウンロードする
- OpenSSLのサイト(http://www.openssl.org/source/)からtarファイルを作業ディレクトリへダウンロードする
- 2. ダウンロードしたtarファイルを展開する
-
$ cd <em>作業ディレクトリ</em> $ tar zxvf openssl-0.9.7g.tar.gz
- 3. 展開されたディレクトリへ移動してconfigスクリプトを実行する
-
$ cd openssl-0.9.7g $ ./config shared
- 4. OpenSSLをコンパイルする
-
$ make
- 5. 4で作成されたモジュール群をインストールする
-
$ /bin/su -c "make install"
- 6. 共有ライブラリをライブラリ検索パスに追加する
-
$ /bin/su -c "echo /usr/local/ssl/lib >> /etc/ld.so.conf" $ /bin/su -c "/sbin/ldconfig"
上記の作業によって"/usr/local/ssl"以下に、OpenSSLがインストールされました。
Cyrus SASL概要
OpenLDAPのユーザ認証部分にはCyrus SASLを使用します。このCyrus SASLというのは、カーネギーメロン大学のCyrusプロジェクトで開発された、SASLのCyrus実装を含んだパッケージです。
コネクションベースのプロトコルに認証サポートを追加するための手法。RFC2222に定義されている。
Cyrus SASLが提供する認証機構については表1を参照して下さい。
表1:Cyrus SASLが提供する認証機構一覧
ANONYMOUS | |
---|---|
PLAIN | |
LOGIN | |
NTLM | NT LanMan |
SRP | Secure Remote Password |
OTP | One-Time Password |
EXTERNAL | |
CRAM-MD5 | Challenge-Response Authentication Mechanism |
DIGEST-MD5 | |
KERBEROS_V4 | |
GSSAPI | Generic Security Service Application Programming Interface |
表1のように様々な認証機構を含んでいるSASLの主な役目は、サーバにクライアントを認証させることです。SASLの最大の特徴は認証機構を簡単に取り替えることができることで、サーバとクライアント間で認証方式さえ一致させれば、後はSASLがその認証方式によってサーバとクライアント間の認証情報を制御してくれます(図2)。

Cyrus SASLインストール
では、下記の手順に従ってOSインストール時に導入されているCyrus SASL関連パッケージの削除及びインストールをします。インストールするバージョンは、2.1.19です。
- 1. 現在インストールされているCyrus SASL関連パッケージを調べる
-
$ rpm -qa | grep sasl cyrus-sasl-md5-2.1.19-5.EL4 cyrus-sasl-2.1.19-5.EL4 cyrus-sasl-devel-2.1.19-5.EL4 cyrus-sasl-plain-2.1.19-5.EL4
- 2. 1で標準出力に表示されたパッケージを削除する
-
$ /bin/su -c "rpm -e --nodeps パッケージ名"
- 3. パッケージが削除されているかを確認する
-
$ rpm -qa | grep sasl
- 4. ソースをダウンロードする
- FTPサーバ(ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/)からtarファイルを作業ディレクトリへダウンロードする
- 5. ダウンロードしたtarファイルを展開する
-
$ cd <em>作業ディレクトリ</em> $ tar zxvf cyrus-sasl-2.1.19.tar.gz
- 6. 展開されたディレクトリへ移動してconfigureスクリプトを実行する
-
$ cd cyrus-sasl-2.1.19 $ ./configure --enable-login --with-openssl=/usr/local/ssl/lib
- 7. Cyrus SASLをコンパイルする
-
$ make
- 8. 7で作成されたモジュール群をインストールする
-
$ /bin/su -c "make install"
- 9. ディレクトリにリンクを張る
- 8でモジュールがインストールされたディレクトリは"/usr/local/lib/sasl2/"になりますが、SASLライブラリは"/usr/lib/sasl2/"にインストールされている機構を探すので、シンボリックリンクを作成する必要があります。また、シンボリックリンクを作成する前に既存の"/usr/lib/sasl2/"ディレクトリを削除して下さい。
$ /bin/su -c "rm -rf /usr/lib/sasl2" $ /bin/su -c "ln -s /usr/local/lib/sasl2 /usr/lib/sasl2"
- 10. 共有ライブラリをライブラリ検索パスに追加する
-
$ /bin/su -c "echo /usr/local/lib >> /etc/ld.so.conf" $ /bin/su -c "/sbin/ldconfig"
OpenLDAPインストール
OSをインストールした段階でOpenLDAPはインストールされているのですが、今回はそれとは別にソースからインストールしていきます。インストールするバージョンは、2.2.26(stable)です。下記の手順に従って、インストール作業を行ってください。
OpenLDAPのインストール手順
- 1. ソースをダウンロードする
- OpenLDAPのサイト(http://www.openldap.org/software/download/)からtarファイルを作業ディレクトリへダウンロードする
- 2. ダウンロードしたtarファイルを展開する
-
$ cd <em>作業ディレクトリ</em> $ tar zxvf openldap-stable-20050429.tgz
- 3. 展開されたディレクトリへ移動してconfigureスクリプトを実行する
-
$ cd openldap-2.2.26 $ ./configure --with-cyrus-sasl --with-tls
SASL及びTLSに関しては、configureが自動で検出してくれるので省略できます - 4. メッセージが表示されていることを確認する
-
Please "make depend" to build dependencies
- 5. 依存関係を作成する
-
$ make depend
- 6. OpenLDAPをコンパイルする
-
$ make
- 7. 6で該当モジュールが作成されているかを確認する
-
$ make test
- 8. 6で作成されたモジュール群をインストールする
-
$ /bin/su -c "make install"
OpenLDAPをソースからインストールすると、デフォルトで下記ディレクトリにファイルがインストールされますので確認して下さい(表2)。
表2:OpenLDAPのディレクトリ構造
ディレクトリ | ファイル | 説明 | ||||
---|---|---|---|---|---|---|
usr | local | include | ldap*.h | ヘッダーファイル | ||
lber*.h | ||||||
etc | openldap | slapd.conf | slapdデーモン用設定ファイル | |||
ldap.conf | ldapクライアント用設定ファイル | |||||
schema | *.schema | 各種スキーマファイル | ||||
lib | liblber* | ライブラリファイル | ||||
libldap* | ||||||
libexec | slapd | LDAPデーモン | ||||
slurpd | LDAP更新複製デーモン | |||||
sbin | slapadd | バックエンドデータベースへのエントリ追加コマンド | ||||
slapcat | バックエンドデータベースからLDIFを生成するコマンド | |||||
slapdn | スキーマ定義を基にしてDNの適合性を検査するコマンド | |||||
slapindex | バックエンドデータベースのインデックスを再生成するコマンド | |||||
slappasswd | slapd.confのuserPasswordのパスワードハッシュ値を生成するコマンド | |||||
slaptest | slapd.confの適合性を検査するコマンド | |||||
bin | ldapadd | エントリ更新/追加コマンド | ||||
ldapcompare | 比較コマンド | |||||
ldapdelete | エントリ削除コマンド | |||||
ldapmodify | エントリ更新/追加コマンド | |||||
ldapmodrdn | エントリのRDN変更コマンド | |||||
ldappasswd | エントリのパスワード変更コマンド | |||||
ldapsearch | 検索コマンド | |||||
ldapwhoami | 診断情報を出力するコマンド | |||||
var | openldap-data | バックエンドデータベース格納用 | ||||
openldap-slurp | slurpd用作業ディレクトリ | |||||
run | pidファイル格納用 |
次回予告
次回は、Cyrus SASLによる認証機構であるGSSAPIを使って、OpenLDAPとKerberosを連携させるための認証設定とOpenLDAPの設定ファイルであるslapd.confの設定について説明していきます。