そろそろLDAPにしてみないか?

第12回Fedora Directory Serverを使ってみよう

前回のテーマがSSL/TLSによる暗号化通信でしたので、今回はSASLを使った認証部分の暗号化についてお話ししようと考えていたのですが、あまりおもしろくなさそうなので(笑⁠⁠、今回はまったく別のお話です。また機会があればSASLについても紹介したいと思います。

FDSとは?

これまで本連載では「OpenLDAP+ソフトウェア」といった形で、OpenLDAPを前提とした構築例などを紹介してきましたが、LDAPサービスを提供できるソフトウェアはなにもOpenLDAPだけではありません。その1つが皆さん一度は耳にしたことがあるであろうFedora Directory Server(FDS)です。

Fedoraという言葉から思い出されるのは、Linuxディストリビューションの1つであるFedora Coreでしょう。Red Hat Enterprise Linuxは商用版、Fedora Coreは非商用版、という区分けができるとすれば、ディレクトリサーバに関してもRed Hat Directory Server(RHDS)が商用版、FDSが非商用版、という考え方をすることができます。

ちなみに、RHDSやFDSの前身となっていたのはNetscape Directory Server(NDS)という商用のシステムです。NDSは2000年ごろまで主流で使用されていましたが、Red Hatが買収することでRHDSやFDSの誕生に至っています。

また、NDSから進化したディレクトリサーバとして、Sun Java System Directory Server(SJSDS)も存在します。こちらは最近のSolaris 10にバンドルされているため、Solarisを使用されている方であれば簡単に試すことができます。SJSDSは以前iPlanet Directory ServerやSunONE Directory Serverと呼ばれていましたが、名称の変更に関しては、CTCテクノロジーさんのサイトにわかりやすい説明がありましたので紹介しておきます。

さて、FDSやRHDS、SJSDSなどたくさんの用語が出てきましたが、これらはすべてNDSから派生しているため、細部は異なれど、基本的な構造に違いはありません。したがって、筆者がFDSを紹介する際には「FDSの設定が理解できればRHDSやSJSDSの運用も簡単」といった操作の親和性をポイントに挙げています。

なぜFDS?

いくつかのディレクトリサーバが存在する中、FDSやSJSDSを選択する理由は何でしょうか?

OpenLDAPは近年もさまざまな改良が加えられてきており、日々発展しているディレクトリサーバですが、オープンソース文化の元で誕生しているため、たとえばユーザインターフェースなどはまだそれほど洗練されていません。一方FDSの前身は商用製品ですから、Webブラウザによる管理画面など、ユーザインターフェースはOpenLDAPと比較すると格段に優れています。

RHDSやSJSDSとOpenLDAPを比較した場合に大きな差別化となるのが商用サポートの有無です。LDAPユーザ会でも活躍されているオープンソース・ソリューション・テクノロジ⁠株⁠など、OpenLDAPを正式サポートする会社はいくつかあるのですが、RHDSやSJSDSと比較すると、まだまだその実績が一般に認められているわけではありません。OpenLDAPが高速で安定しているとしても、実績やサポートが重視される環境でなかなか使用されない理由はここにあります。

もちろん商用サポートに該当するのはRHDSやSJSDSであるため、FDSを使えば商用サポートが得られるわけではないのですが、基本的なオペレーションや概念がRHDS/SJSDSと変わらないことから、FDSを練習台としておけば、将来的に商用サポートが必要になった際に、RHDSやSJSDSに簡単に乗り換えることができるのがメリットのひとつではないでしょうか。

もちろんサポート以外でも「OpenLDAPには機能がないのでFDSを使う⁠⁠、またはその逆という考え方もあります。

FDSのダウンロードとインストール

FDSの最新バージョンやインストール方法が書かれたドキュメントはFedora Projectのダウンロードページより入手することができます。今回はRed Hat Enterprise Linux 5.0クローンであるCentOS-5.xにインストールを行ってみます。導入方法はFDSのバージョンによって異なる可能性がありますので、オフィシャルサイトの最新情報を常に確認するようにしてください。

今回の環境では、FDSをyumリポジトリから入手するため、追加リポジトリの設定を行っておきます。

図1 FDSリポジトリの追加
# cd /etc/yum.repos.d 
# wget http://directory.fedoraproject.org/sources/idmcommon.repo 
# wget http://directory.fedoraproject.org/sources/dirsrv.repo 

ここで、idmcommon.repodirsrv.repoを編集し、$releaseverという文字列を6に置き換えます。次に、fedora-dsの依存パッケージをインストールしておきます。

図2 FDS依存パッケージのインストール
# yum install svrcore mozldap perl-Mozilla-LDAP libicu
# rpm --import http://download.fedora.redhat.com/pub/fedora/linux/core/6/i386/os/RPM-GPG-KEY-fedora 
# rpm --import http://download.fedora.redhat.com/pub/fedora/linux/extras/RPM-GPG-KEY-Fedora-Extras
# rpm -ivh http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386/adminutil-1.1.5-1.fc6.i386.rpm
# rpm -ivh http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386/jss-4.2.5-1.fc6.i386.rpm

これでやっとFDSをインストールする準備が整いました。次のようにして依存パッケージなどを含め、すべてがインストールできれば完了です。

図3 FDSのインストール
# yum install fedora-ds

FDSの基本設定

OpenLDAPの導入後にslapd.confを設定したように、ディレクトリサーバを動作させるためには管理者DNやパスワード、検索ベースやインデックスなどさまざまな設定を行っておく必要があります。FDSやSJSDSでは専用の管理ツール(管理コンソール)を使って各種設定を行うことができます。冒頭でも述べましたが、これらの存在がOpenLDAPよりも優れている点と言って良いでしょう。

さて、管理コンソールを使用するためには管理サーバへのログインが必要です。そのため、ディレクトリサーバ自体ではなく管理サーバの設定なども必要になりますので追って解説します。参考までに、表1が今回のサーバの基本情報となります。

表1 基本情報
ホスト名 cos5a
ドメイン名 bluecoara.net
FQDN cos5a.bluecoara.net

まずは設定を間違っても後で簡単に修正できるよう、念のため初期設定ファイルのバックアップを行っておいたほうが良いでしょう。

図4 初期設定ファイルのバックアップ
# cp -a /etc/dirsrv /etc/dirsrv.orig

次に対話式の設定ツールを起動します。基本的にはデフォルトで設定された値をそのまま使用しています。

図5 FDSの初期設定
# setup-ds-admin.pl

コマンドを実行すると、早速次のようなエラーが表示されてしまいます。

図6 メモリやファイルディスクリプタ関連の警告
==============================================================================
Your system has been scanned for potential problems, missing patches, 
etc.  The following output is a report of the items found that need to 
be addressed before running this software in a production 
environment. 

Fedora Directory Server system tuning analysis version 10-AUGUST-2007. 

NOTICE : System is i686-unknown-linux2.6.18-53.1.21.el5 (1 processor). 

ERROR  : Only 122MB of physical memory is available on the system. 256MB is the 
recommended minimum. 1024MB is recommended for best performance on large production system. 

NOTICE : The net.ipv4.tcp_keepalive_time is set to 7200000 milliseconds 
(120 minutes).  This may cause temporary server congestion from lost 
client connections. 

WARNING: There are only 1024 file descriptors (hard limit) available, which 
limit the number of simultaneous connections.  

WARNING: There are only 1024 file descriptors (soft limit) available, which 
limit the number of simultaneous connections.  

ERROR  : The above errors MUST be corrected before proceeding. 

Would you like to continue? [no]: yes 

メモリに関しては、今回VMWareを用いているため、これ以上割り当てることができません。もし余裕があるのであれば、1024Mバイト以上の割り当てを行うようにしてください。

次に、NOTICEという形でtcp_keepalive_timeの情報が表示されていますが、今回の用途では長時間のディレクトリ接続を想定していないため、とくに気にしないものとします。同様にファイルディスクリプタの警告についても、今回はそれほどの接続数を想定しないため無視します。もし気になるようであれば、/etc/sysctl.confや/etc/security/limits.confなどを設定し、警告を回避するようにしてください。

次はインストールタイプの選択です。

図7 インストールタイプの選択
==============================================================================
Choose a setup type: 

   1. Express 
       Allows you to quickly set up the servers using the most 
       common options and pre-defined defaults. Useful for quick 
       evaluation of the products. 

   2. Typical 
       Allows you to specify common defaults and options. 

   3. Custom 
       Allows you to specify more advanced options. This is 
       recommended for experienced server administrators only. 

To accept the default shown in brackets, press the Enter key. 

Choose a setup type [2]: 

上記の通り、デフォルトの状態で先に進みます。

図8 コンピュータ名の設定
==============================================================================
Enter the fully qualified domain name of the computer 
on which you're setting up server software. Using the form 
. 
Example: eros.example.com. 

To accept the default shown in brackets, press the Enter key. 

Computer name [cos5a.bluecoara.net]: 

上記の通り、デフォルトの状態(FQDN)で先に進みます。この値は後々サフィックスなどとして使用されます。

図9 ユーザ、グループ設定
==============================================================================
The servers must run as a specific user in a specific group. 
It is strongly recommended that this user should have no privileges 
on the computer (i.e. a non-root user).  The setup procedure 
will give this user/group some permissions in specific paths/files 
to perform server-specific operations. 

If you have not yet created a user and group for the servers, 
create this user and group using your native operating 
system utilities. 

System User [nobody]: 
System Group [nobody]: 

ディレクトリサーバの実行用UID/GIDを設定します。デフォルト値はnobodyですが、セキュリティを重視して専用のユーザ、グループを作成、指定しても良いでしょう。

図10 既存設定の確認
==============================================================================
Server information is stored in the configuration directory server. 
This information is used by the console and administration server to 
configure and manage your servers.  If you have already set up a 
configuration directory server, you should register any servers you 
set up or create with the configuration server.  To do so, the 
following information about the configuration server is required: the 
fully qualified host name of the form 
.(e.g. hostname.example.com), the port number 
(default 389), the suffix, the DN and password of a user having 
permission to write the configuration information, usually the 
configuration directory administrator, and if you are using security 
(TLS/SSL).  If you are using TLS/SSL, specify the TLS/SSL (LDAPS) port 
number (default 636) instead of the regular LDAP port number, and 
provide the CA certificate (in PEM/ASCII format). 

If you do not yet have a configuration directory server, enter 'No' to 
be prompted to set up one. 

Do you want to register this software with an existing 
configuration directory server? [no]: 

今回は最初のセットアップですので、既存の設定は存在しません。デフォルトのまま先に進みます。

図11 管理サーバ設定
==============================================================================
Please enter the administrator ID for the configuration directory 
server.  This is the ID typically used to log in to the console.  You 
will also be prompted for the password. 

Configuration directory server 
administrator ID [admin]: 
Password: 
Password (confirm): 

ここで指定するユーザ名パスワードは、ディレクトリサーバそのものではなく、ディレクトリサーバを管理するための管理サーバ(管理コンソール)に使用される値です。今回パスワードにはsecretという値を設定しました。

図12 管理ドメイン設定
============================================================================== 
The information stored in the configuration directory server can be 
separated into different Administration Domains.  If you are managing 
multiple software releases at the same time, or managing information 
about multiple domains, you may use the Administration Domain to keep 
them separate. 

If you are not using administrative domains, press Enter to select the 
default.  Otherwise, enter some descriptive, unique name for the 
administration domain, such as the name of the organization 
responsible for managing the domain. 

Administration Domain [bluecoara.net]: 

管理サーバのためのドメイン名を設定します。

図13 ディレクトリサーバのポート番号
============================================================================== 
The standard directory server network port number is 389.  However, if 
you are not logged as the superuser, or port 389 is in use, the 
default value will be a random unused port number greater than 1024. 
If you want to use port 389, make sure that you are logged in as the 
superuser, that port 389 is not in use. 

Directory server network port [389]: 

ディレクトリサーバが動作するポート番号です。すでに389/tcpが別のアプリケーションから使用されていた場合は389ではない値がデフォルトとして表示されます。

図14 ディレクトリサーバのユニークな識別子
============================================================================== 
Each instance of a directory server requires a unique identifier. 
This identifier is used to name the various 
instance specific files and directories in the file system, 
as well as for other uses as a server instance identifier. 

Directory server identifier [cos5a]: 

ディレクトリサーバの設定ファイルは「slapd-ホスト名」のような形のディレクトリに保存されますので、そのための識別子を設定します。

図15 ディレクトリサーバのサフィックス
============================================================================== 
The suffix is the root of your directory tree.  The suffix must be a valid DN. 
It is recommended that you use the dc=domaincomponent suffix convention. 
For example, if your domain is example.com, 
you should use dc=example,dc=com for your suffix. 
Setup will create this initial suffix for you, 
but you may have more than one suffix. 
Use the directory server utilities to create additional suffixes. 

Suffix [dc=bluecoara, dc=net]: 

ディレクトリサーバのトップツリーとなるサフィックスを設定します。OpenLDAPではsuffixという設定パラメータで設定していました。

図16 ディレクトリ管理者設定
============================================================================== 
Certain directory server operations require an administrative user. 
This user is referred to as the Directory Manager and typically has a 
bind Distinguished Name (DN) of cn=Directory Manager. 
You will also be prompted for the password for this user.  The password must 
be at least 8 characters long, and contain no spaces. 

Directory Manager DN [cn=Directory Manager]: 
Password: 
Password (confirm): 

ディレクトリサーバ管理者のDNとパスワードを設定します。今回パスワードにはdssecretという値を設定しました。

図17 管理サーバポート番号
============================================================================== 
The Administration Server is separate from any of your web or application 
servers since it listens to a different port and access to it is 
restricted. 

Pick a port number between 1024 and 65535 to run your Administration 
Server on. You should NOT use a port number which you plan to 
run a web or application server on, rather, select a number which you 
will remember and which will not be used for anything else. 

Administration port [9830]: 

ディレクトリサーバを管理するための管理サーバが動作するポート番号を設定します。この値は/etc/dirsrv/adminsrvディレクトリの中のconsole.conf、local.confに保存されます。値はランダムに割り当てられるため、固定の値を使用したい場合は手動で設定してください。

図18 設定完了
============================================================================== 
The interactive phase is complete.  The script will now set up your 
servers.  Enter No or go Back if you want to change something. 

Are you ready to set up your servers? [yes]: 
Creating directory server . . . 
Your new DS instance 'cos5a' was successfully created. 
Creating the configuration directory server . . . 
Beginning Admin Server creation . . . 
Creating Admin Server files and directories . . . 
Updating adm.conf . . . 
Updating admpw . . . 
Registering admin server with the configuration directory server . . . 
Updating adm.conf with information from configuration directory server . . . 
Updating the configuration for the httpd engine . . . 
Starting admin server . . . 
output: httpd.worker: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName 
The admin server was successfully started. 
Admin server was successfully created, configured, and started. 
Exiting . . . 
Log file is '/tmp/setupdqCaHW.log' 

このように、設定が完了すると自動的にディレクトリサーバと管理サーバが起動します。

FDSの構成

とりあえず初期設定が完了したばかりですが、各プロセスやファイルの構成に関して簡単に説明しておきます(表2⁠⁠。

プロセス
  • ns-slapd
    :ディレクトリサービス
  • httpd.worker -k start -f /etc/dirsrv/admin-serv/httpd.conf
    :管理サーバ

プロセス名から想像がつくと思いますが、管理サーバを提供するために、Apacheが使用されています。

表2 ファイル
ファイル/ディレクトリ 役割
/etc/init.d/dirsrv ディレクトリサービスのスタートアップスクリプト
/etc/init.d/dirsrv-admin 管理サーバスタートアップスクリプト
/etc/dirsrv/admin-serv 管理サーバ設定ファイル
/etc/dirsrv/slapd-ホスト名 ディレクトリサーバ設定ファイル
/etc/dirsrv/config 設定やスキーマのテンプレート
/etc/dirsrv/schema

最後に

今回はページの都合上、インストールと構成だけの簡単な説明に終わってしまいましたが、次回からはFDSとアプリケーションを連携させることでFDSの核心に迫っていくことにしましょう。

おすすめ記事

記事・ニュース一覧