操作性に優れたFedora Directory Serverを用いたディレクトリサービスの導入法
FDSの起源は、Netscape Directory Serverとして誕生した1999年にまで遡ることができる。そして2004年、オープンソース化するという条件の下、Netscape Directory ServerはRed Hatによって買収された。こうしてFDSは現在の姿に生まれ変わったのである。ところでRed Hatは、サポート付バージョンとしてRed Hat Directory Serverも提供しているが、この場合のビジネスモデルとしてRed Hat Directory ServerとFDSの関係は、Red Hat Enterprise LinuxとFedora Coreの関係になぞらえることができるだろう。つまりFDSについては、正式なサポートオプションは何も用意されていないと思えばよい。
今回私がFDSを試用してみた動機は、Linuxマシン群のネットワークにシングルサインオン機能を実装してみたかったからである。その際の選択基準は、オープンソース系のソフトウェアであること、そしてセットアップおよび管理作業が簡単なこと、というだけであった。FDSを選んだ理由は後者の要件によるものだが、装備されている機能の多さに惹かれたのも事実である。実際FDSプロジェクトのホームページを見ると、主要な機能として下記の項目その他が一覧されている。
- 耐障害性を確保し書き込み速度を向上させる、4ウェイ・マルチマスタ・レプリケーション機能
- 数千単位の命令実行回数、数万単位の同時利用者、数千万単位のエントリ、数百ギガバイト単位のデータ量に対応したスケーラビリティ
- セキュアな認証および転送機能(SSLv3、TLSv1、SASL)
- Active Directoryによるユーザおよびグループ同期機能
基本的にFDSのインストール先としては、コミュニティベースでサポートされているRed Hat系Linuxディストリビューションの1つであるFedoraのみが想定されている。その他のLinuxディストリビューション上にインストールできるか否かは、運を天に任せるしかない。今回のテスト環境では、旧式化したPC上にFedora Core 5(FC5)をインストールしたマシンを用いている。FC5のインストールについてはデフォルトのままで必要なものの大方はそろうが、Javaについてだけはユーザが別途インストールしなければならない。とは言うものの、そのための手順は単純なものであり、その後に行うFDSのインストールも簡単に実行できる。まず最初に、すべてのセキュリティアップデートを施しておく。次にJavaをインストールする。その後でFDSをインストールすればよい。
yum update
chmod + x jre-1_5_0_09-linux-i586-rpm.bin; ./jre-1_5_0_09-linux-i586-rpm.bin
rpm -ivh fedora-ds-1.0.4-1.FC5.i386.opt.rpm
インストールについては、これだけである。FDSのインストール先は/opt/fedora-dsとなっているはずだ。
次に、Fedora CoreのポイントするJavaを適切なものに設定し直す必要がある。デフォルトの状態では、/etc/alternativesにあるGNU版のJava Runtime Environment(JRE)に対してシンボリックリンクが張られているはずである。ところがこのバージョンのJavaは、FDSコンソール上からは実行できないのだ。Sun版のJREをインストールする必要があるのは、こうした理由からである。具体的な操作としては/etc/alternatives/javaを削除し、下記のコマンドを用いてSun JREへのリンクを作成すればよい。
ln -s /usr/java/jre1.5.0_09/bin/java /etc/alternatives/
次に、各自の環境に応じてFDSを設定するが、それには/opt/fedora-dsディレクトリに移動してから下記のコマンドを実行する。
./setup/setup
これによりインタラクティブ形式のセットアップスクリプトが起動し、環境設定に必要ないくつかの質問がユーザに提示される。インストールモードとしては、Express、Typical、Customが選べるので、私の場合はTypicalを選択した。インストーラは、質問で得られた情報を基に適切なデフォルト設定を判定してゆくが、その際には個々のステップが何をしているかを示す説明も表示される。最終的にサーバのセットアップ完了までに要する時間は、5分もかからないはずだ。このプロセスの終了時には、下記のようなメッセージが表示される。
./startconsole -u admin -a http://localhost.localdomain:43131/
ここで上記のlocalhost.localdomainは、セットアップ中にユーザの指定したホスト名およびドメイン名で置き換えられるはずである。またポート番号はランダムに選択されるようなので、ユーザが別途メモを取っておく方がよいだろう。このコマンド自体は、Javaベースの管理用GUIを起動するためのものである。ユーザが指定さえすれば、FDSの管理作業をすべてGUI画面で行うことも可能だ。
コンソールが起動すると、Servers and ApplicationsおよびUsers and Groupsと言う名前の2つのタブが表示される。前者のタブには、AdministrativeおよびDirectory Serverの管理機能がまとめられている。これらのうちで特に優れているのは、Directory Serverで用いるバックアップ機能だ。バックアップの実行ボタンをクリックしてディレクトリを指定すると、わずか数秒の処理でFDSに格納されたLDAP情報がすべてバックアップされるのである。同じくレストアについても、レストアの実行ボタンをクリックして、バックアップの保存先ディレクトリを指定するだけだ。バックアップをリモートサーバにコピーしておいた場合でも、データをコピーし戻してレストアするだけで、すべてを復元することができる。
その他の処理の大部分は、後者のUsers and Groupsタブで行うことになる。まず最初に行うべきはユーザの追加だが、そのためのFDSでの操作は非常に直感的だ。注意すべき点があるとすれば、NT User
およびPosix User
の属性についてだけだろう。これは、WindowsとUnixの混在環境におけるセントラルログインサーバとしてFDSを用いる場合の設定である。
ここでは、本名が「Bob Smith」であるユーザを登録する場合について説明することにしよう。この名前(first name)と名字(last name)を入力すると、ユーザ名(username)として「BSmith」が自動入力される。
ユーザの登録後は、Posix User
属性を設定する。ここで登録するユーザ情報は、ユーザID、グループID、ホームディレクトリ、ログインシェルである。この設定例の場合はそれぞれ、2222、2222、/home/BSmith、/bin/bashと入力しておくことにする。なおユーザIDについては、既に使用中のものと重複しないよう注意しなければならない。グループIDの2222はあくまでサンプル値だが、グループについては後で追加することも可能だ。以上の情報を指定し終われば、このユーザに関してはFDSがセントラルログインサーバとして機能するはずである。
次のステップは、このサーバにアクセスするクライアント側の設定である。クライアントについては、下記の4つの操作を実行する必要がある。
- nss_ldapおよびpam_ldapモジュールのインストール
- LDAPの使用に必要なネームサービスのスイッチ設定ファイル/etc/nsswitch.confの変更
- 各自の環境に応じた/etc/ldap.confの変更
- LDAP認証に必要なSSH用のPAM設定の変更
多くの場合、nssおよびpamモジュールは事前にインストールされているはずである。通常これらのファイルの格納先としては、/lib/libnss_ldap.so.2および/lib/security/pam_ldap.soが割り当てられている。これらのディレクトリにモジュールが存在しない場合は、各自のディストリビューションに用意されているパッケージマネージャを介してインストールすればよい。
/etc/nsswitch.confについては、LDAPの使用オプションを組み込むための変更を施しておく必要がある。それには、password、group、shadowの各ディレクティブを下記のように変更すればよい。
passwd: files ldap
group: files ldap
shadow: files ldap
次に/etc/ldap.confファイルに対して、下記の項目を追加する。
base dc=localhost, dc=localdomain
ここでlocalhostはFDSサーバのホスト名、localdomainはセットアップ時に選択したLDAPドメインを指定する。同じくhostディレクティブには、FDSサーバのIPアドレスを指定する。
host IP of host
最後に行うのは、LDAPソースからの認証に必要なSSH用の設定を施すことである。それには下記の3行を/etc/pam.d/sshdファイルに追加すればよい。
auth sufficient /lib/security/pam_ldap.so
account sufficient /lib/security/pam_ldap.so
password sufficient /lib/security/pam_ldap.so
FDSの基本設定に必要な作業は、これだけである。
以上の設定により、BSmithというユーザ名およびFDSに登録したパスワードを使って、クライアントマシンにSSH接続できるようになっているはずである。ただし、ここでのFDSが行っているのはパスワード情報のセントラル管理だけなので、このBSmithについてはローカルのホームディレクトリが存在していない可能性もあり、その点は注意が必要だ。そのような場合、このユーザに対して適用されるのは/
であり、実質的にほとんど何の操作も行えなくなってしまう。対策としては、BSmithでログインするすべてのマシンにBSmithのホームディレクトリを作成するか、これらのホームディレクトリを特定のNFSマウントに格納しておくかになるだろう。
これは使ってみて初めて気づいたことだが、FDSにはブート時に同サービスを起動するためのスタートアップおよびシャットダウン用のスクリプトが付属していないのだ。もっともそうした操作については、別途用意されているスクリプトを使えば、問題なく実行できる。
ここではFDSを用いて具体的に何ができるかについては、少しも紹介できなかった。もっとも、上述したFDSを動作させるための基本設定の手順からだけでも、FDSの運用が非常に簡単であろうことは推測できるだろう。その他の機能を追加するのであれば、必要なドキュメントを参照して頂きたい。