前回のテーマが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.repo とdirsrv.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の核心に迫っていくことにしましょう。