今回は、Red Hat Linux 7.3をベースに、必要なソフトウェアをインストールします。ソースファイルはすべて/usr/local/srcにダウンロードし、展開するときもこのディレクトリで作業することを前提としています。
まず、認証を統合するLDAPサーバを構築します。今回は、以下のソフトウェアで検証しました。
入手したソースアーカイブを展開してインストールします。LDAPサーバ用ファイル群がすべて/usr/local/ldapディレクトリ以下に格納されるように、configureスクリプト実行時に「--prefix=/usr/local/ldap」オプションを指定しています。
$ tar zxvf openldap-stable-20020618.tgz |
また、Samba用のLDAPスキーマを設定します。スキーマファイルを以下のURLから入手し、/etc/openldap/schema/samba.schemaとして保存します。
Samba用LDAPスキーマ:ftp://ftp.samba.gr.jp/pub/samba-jp/samba-ldap/samba.schema
# cp samba.schema /usr/local/ldap/etc/openldap/schema |
例に挙げたとおりにインストールすると、OpenLDAPサーバの設定ファイルは/usr/local/ldap/etc/openldap/slapd.confに配置する必要があります。/usr/local/ldap/etc/openldap/slapd.conf.defaultというファイルが生成されるので、これを/usr/local/ldap/etc/openldap/slapd.confとしてコピーし、編集するとよいでしょう。
さまざまな設定項目がありますが、以下のように設定を変更します。
################################################################ |
LDAPサーバは専用ユーザーで扱うことにします。まず、専用ユーザー「ldap」を作成し、ldapのデータベースが格納されるディレクトリのパーミッションを設定しておきます。
# useradd -d /usr/local/ldap/var/openldap-ldbm -s /bin/false
ldap |
準備が完了したら、以下のように起動します。
# /usr/local/ldap/libexec/slapd -u ldap |
各サーバの認証をLDAPで行う場合、LDAPサーバデーモンであるslapdが起動していないと、すべての認証が失敗することになります。システム再起動時にslapdが起動するように上記の1行を/etc/rc.d/rc.localに記述しておきましょう。
構築するすべてのサーバが、LDAPサーバを認証に利用するための設定を行います。
LDAPサーバからユーザー情報を取得するためのnss_ldapと、PAMのLDAP対応モジュールであるpam_ldapをインストールします。これらをインストールする際にLDAP用のヘッダファイルが必要になるので、OpenLDAPのソースも用意します。
nss_ldapとpam_ldapをインストールするために、OpenLDAPに含まれるヘッダファイルやライブラリが必要になります。openldap、openldap-devel、mozilla-mailといったRPMがインストールされていれば問題ありませんが、ここではOpenLDAPをインストールすることで作成されるライブラリやヘッダファイルを使用することにします。
まずは、LDAPサーバと同様の手順でOpenLDAPをインストールします。ただし、LDAPサーバは別に存在するという前提であるため、slapdの設定や起動は行いません。
$ tar zxvf openldap-stable-20020618.tgz |
次に、nss_ldapのアーカイブを展開し、インストールします。configureスクリプトを実行する際に、上記で展開したOpenLDAPのヘッダファイルやライブラリを利用するため、--with-ldap-dir=/usr/local/ldapオプションとLDAP用設定ファイルを明示的に指定する--with-ldap-conf-fileオプションを付加します。
$ tar zxvf nss_ldap.tgz |
上記の作業によって、NSS(Name Service Switch)用のLDAPモジュール/lib/libnss_ldap-2.2.5.soと、NSS設定ファイルのひな型である/etc/nsswitch.ldapが作成されます。
NSSの設定ファイルは/etc/nsswitch.confで、さまざまな「名前解決」に関する情報をどこから得るのかを設定します。例えば、/etc/nsswitch.conf内に以下のような記述があったとします。
passwd: files nisplus |
この場合、passwd(ユーザー情報)はローカルの/etc/passwd(files)→NIS+サーバ (nisplus)の順番で検索されます。
nss_ldapをインストールした際に作成された/etc/nsswitch.ldapは、以下のようにユーザーやグループ情報をローカルファイル→LDAPサーバの順で検索するように設定された/etc/nsswitch.confのひな型です。
passwd: files ldap |
/etc/nsswitch.ldap(一部抜粋) |
このファイルを既存の/etc/nsswitch.confと置き換え、NSSをLDAPに対応させます。
# mv /etc/nsswitch.conf /etc/nsswitch.conf.old |
次はpam_ldapのインストールです。nss_ldapと同様、configureスクリプトを実行する際にOpenLDAPのヘッダファイルやライブラリを利用するための--with-ldap-dir=/usr/local/ldapオプションと、LDAP用設定ファイルを明示的に指定する--with-ldap-conf-file オプションを付加します。
$ tar zxvf pam_ldap.tgz |
PAMの設定ファイルは/etc/pam.dディレクトリ以下にあります(注)。例えば、sshサーバ用であれば/etc/pam.d/sshdのように、PAMに対応したプログラムごとに1つのファイルが用意されています。ただし、今回はシステム全体でPAM認証に利用するファイル/etc/pam.d/system-authをLDAPに対応するように編集し、ほかのプログラムのPAM設定ファイルから、再帰的にこのファイルが読み込まれるようにします。
なお、PAMの設定を変更する場合は、必ず現在の設定ファイルをバックアップしてから行ってください。PAMの設定ファイルを間違って編集すると、ログインすらできなくなってしまう可能性があります。設定を変更する場合は、LDAP認証の動作確認が取れるまで、必ず1つはroot権限でログインした端末を残しておくことをお勧めします。万が一ログインできなくなった場合は、システムをシングルユーザーモードで起動して設定を修正します。
以下がLDAP認証する場合の設定例です。
#%PAM-1.0 |
LDAPに対応させた/etc/pam.d/system-auth |
/etc/pam.d/system-authを用意したら、各プログラム用の設定ファイルでこのファイルを読み込ませるように編集します。各種サーバのPAM設定ファイルはそれぞれサーバ設定を説明する際に触れるとして、ここでは設定の概略を紹介しておきます。
ほかの設定ファイルを参照する動作を実現するには、pam_stack.soモジュールを利用します。例えば、sshサーバの認証設定を/etc/pam.d/system-authに合わせる場合は、/etc/pam.d/sshdを以下のようにします。
#%PAM-1.0 |
/etc/pam.d/sshdの設定 |
この例ではsystem-authに設定したものとまったく同じモジュールを利用していますが、それ以外に利用したいPAMモジュールがあれば設定を追加することも可能です。例えば、/etc/nologinというファイルが存在する場合、一般ユーザーをログインさせないようにするには、以下のようにpam_nologin.soモジュールを使うように設定を追加すればよいでしょう。
#%PAM-1.0 |
/etc/pam.d/sshdの設定(pam_nologinモジュールを追加した例) |
LDAPクライアントとして動作する際に参照される設定ファイルは/etc/ldap.confになります。このファイルで、参照すべきLDAPサーバとLDAPディレクトリの検索範囲(ベースDN)を指定します。
host ldap.itboost.co.jp |
また、/etc/ldap.confでは上記の2項目以外にもさまざまな設定が可能です。詳しくは、pam_ldapのアーカイブを展開したときに作成されるサンプルファイル(注)を参照してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.