LDAPによるパスワードの一元管理:Linux管理者への道(2)(3/3 ページ)
パスワードの運用にはさまざまな方法が考えられるが、今回はLDAPを使って各種サービスのパスワードを一元的に統合管理する方法を紹介する。各種サービスをLDAPに対応させることが環境構築のポイントである。(編集局)
Sambaの構築
Sambaの認証をLDAP対応させるように構築します。今回は、以下のソフトウェアを利用して検証しました。
- samba-2.2.4-ja-1.0.tar.gz
http://www.samba.gr.jp/ - smbldap-tools-0.7
http://www.samba.gr.jp/
Sambaのインストールと設定
SambaをLDAPに対応させるように、ソースからインストールします。そのためには、configureスクリプト実行時に--with-ldapsamオプションを指定します。検証に際しては、以下のオプションを指定してインストールしました。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Sambaアカウントの認証をLDAPに対応させるため、以下の設定を行う必要があります。
- LDAPサーバのIPアドレス
- LDAPサーバのポート番号
- LDAPディレクトリの検索範囲
- LDAP管理者の識別名
- SSL対応(今回は対応させていません)
/usr/local/samba/lib/smb.confの具体的な記述は、以下のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
また、WindowsからSambaアカウントのパスワードを変更した場合に、Linuxのシステムアカウントと同期するように以下の項目を設定しておきます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
もちろん、上記以外の項目についても必要に応じて適宜編集しなければなりません(編注)。
もう1つ、LDAP管理者のパスワードをsmbpasswdコマンドで設定しておく必要があります。以下のように-wオプションと引数にLDAP管理者に設定したパスワードを平文で入力します。ここで設定するパスワードは、必ずLDAPサーバで設定したものと同じものを使用してください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
設定が完了したら、Sambaを起動します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
smbldap-toolsのインストールと設定
LinuxのユーザーとSambaユーザーを同時にLDAPサーバへ登録するためのsmbldap-toolsをインストールします。smbldap-toolsはldapaddやldapmodifyなど、LDAPクライアント用ツールを呼び出して利用するPerlスクリプトです。まずは、LDAPサーバと同様にOpenLDAPをインストールします。ただし、LDAPサーバは別のホストであるという前提のため、slapdは起動しないようにします。
アーカイブファイル展開後にできるディレクトリ以下のファイルを/usr/local/sbinディレクトリ以下にコピーします。また、これらのファイル群のうち、Perlモジュールに当たるsmbldap_conf.pmとsmbldap_tools.pmは/usr/lib/perl5/5.6.1以下から参照できるようにシンボリックリンクを張っておきます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
次に、smbldap-toolsを正常に動作させるためにsmbldap_conf.pmを編集します。Windowsドメイン構築のための情報も多数ありますが、必要に応じて設定を変更すればよいでしょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
設定ファイルを修正したら、LDAPサーバにユーザーを格納するためのディレクトリ構造を作ります。smbldap-toolsに含まれているsmbldap-populate.plスクリプトを一度実行すれば、以下のようなディレクトリ構造ができあがります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これで、smbldap-toolsが利用できるようになります。例えば、Linuxにおけるユーザーだけを作成する場合は以下のように実行します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここで指定した-mオプションは、ユーザー作成の際にそのユーザーのホームディレクトリが存在しなければ作成するためのものです。
ユーザーにSambaを利用させる場合は、以下のように-aオプション付きで実行します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
そのほかのsmbldap-toolsについても、以下のように実行することでどのようなオプションが使えるかなどを確認できます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
LDAPサーバへの接続はSambaの機能で実現しますが、SWATを利用している場合はPAM経由でLDAPパスワードを利用するようにする必要があります。具体的には、以下のようなファイルを/etc/pam.d/sambaとして作成します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
メールサーバの構築
メールサーバは、内部ネットワークからメールを受信する場合はPOP/SSLでの接続、外部からメールを見たい場合はUsermin/SSLを利用させ、平文でパスワードが流れることがないようにします。また、Userminでユーザーへパスワード変更のインターフェイスを提供させるように設定します(Userminについては後述)。
今回は以下のソフトウェアを利用して構築しました(SMTPサーバについては特別な作業は必要ありません)。
- qpopper4.0.4.tar.gz
http://www.eudora.com/qpopper/
Qpopperのインストール
QpopperをSSL対応およびPAM経由でLDAP認証できるようにインストールします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
POP関連の各種設定
- SSLの設定
まず、SSLを利用するために必要な秘密鍵と証明書を作成します。ここでは特に外部の認証局を使用せず、自己証明書を作成します。また、SSLの秘密鍵と証明書は/usr/local/qpopper/etc/に作成することとします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
上記の作業で作成された秘密鍵(cert.key)と自己証明書(cert.pem)が、一般ユーザーから参照できないようにパーミッションを設定します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
作成したSSL用のファイルを使用するように、Qpopperの設定ファイルを作成します。QpopperのSSL用設定ファイルとして/usr/local/etc/qpopper/qpopper.confを作成し、このファイルにSSLに関する以下の設定を書き込みます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
- PAMの設定
Qpopperが、PAM経由でLDAPパスワードを参照するように設定します。具体的には、以下のようなファイルを/etc/pam.d/qpopperとして作成します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
- xinetdの設定
Qpopperをxinetd経由で起動するために、/etc/xinetd.d/qpopperというファイルを作成し、以下の設定を記述します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
設定を変更したら、それを反映させるためにxinetdにHUPシグナルを送ります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Userminの導入
ユーザーにシステムを利用させるときのインターフェイスとして、Userminを設定します。Userminを利用すれば、ユーザーのパスワード変更やメール受信などさまざまな操作をWebブラウザで行えるようになります。これには以下のソフトウェアを利用しました。
- usermin-0.940.tar.gz
http://www.webmin.com/ - Net_SSLeay.pm-1.17.tar.gz
http://symlabs.com/Net_SSLeay/ - Authen-PAM-0.13.tar.gz
http://www.cs.kuleuven.ac.be/~pelov/pam/
Userminのインストールと表示言語設定
UserminはSSLでアクセスすることを想定しています。そのためには、Net::SSLeay.pm というPerlモジュールを組み込んでおく必要があります。ソースを展開し、以下のように実行してインストールします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
次に、Userminの認証機能に必要なAuthen::PAMというPerlモジュールをインストールします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
最後に、Userminのインストールです。ソースファイルを展開し、作成されたディレクトリにあるsetup.shスクリプトを実行します。設定項目についていくつか確認されますが、使用するシステムに合わせて設定します。今回はSSL経由でUserminを使用させるため、最後の「Use
SSL (y/n)」という質問に対しては「y」と答えることに注意します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
すべての設定が終わると、Userminが自動的に起動するので、Webブラウザのアドレスバーで、
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
と入力してアクセスできることを確認してください。
Userminの表示に関する設定は、/etc/usermin/configで変更できます。Userminはあまり日本語化が進んでいないので設定してもそれほど大きくは変化しませんが、/etc/usermin/configに「lang」項目を追加し、デフォルトの言語を日本語に設定しておきます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Userminの設定 − 使用する機能
Userminは多数の機能の集合体で、デフォルトでは必要以上と思われる機能が有効になっています。Userminの機能を制限したい場合は、/etc/usermin/webmin.aclファイルを編集します。例えば、パスワード変更とメール閲覧機能だけを有効にするには、以下のようにします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
また、/etc/userminディレクトリ下には、Userminの機能ごとにサブディレクトリがあり、各ディレクトリにはそれぞれ設定ファイルが存在します。例えば、パスワード変更画面を提供しているchangepass機能の設定は/usr/usermin/changepass/configで行います。このファイルには、以下の2つの設定項目が含まれています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
passwd_cmdの行で特にコマンドを指定しない場合は、前述のAuthen::PAMモジュールを利用して認証を行います。
PAMの設定
UserminのPAMの設定ファイルを/etc/pam.d/userminとして作成する必要があります。ここでは、すべてsystem-authファイルを参照させるように設定すればよいでしょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
PAMの設定はここまでで問題ないのですが、UserminがLDAP認証のパスワード入力方法に対応していません。LDAP認証を使用するには、/usr/local/src/usermin-0.940/changepass/changepass.cgiの書き換えが必要になります。以下の行を削除あるいは「#」でコメントアウトして、
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
以下のように編集し直せば、LDAP認証をさせる場合でもUserminを使用することができます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここまでの設定で、Userminを通したパスワード変更およびSSL経由のメール閲覧が可能になります。また、Userminのソースを展開したディレクトリにUserminの起動/停止を制御するためのスクリプトusermin-initがあるので、/etc/rc.d/init.d/userminとしてコピーしておきましょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このスクリプトは、引数が「start」でUserminを起動、「stop」で停止、「restart」で再起動します。必要に応じて、/etc/rc3.dなどにシンボリックリンクを張っておけば、システム再起動時に自動的にUserminが起動します。
Webサーバの構築
Webサーバのベーシック認証もLDAPに対応させます。Webサーバへのデータ転送にはWebDAVを利用することにし、認証時の通信も暗号化できるようにApacheをSSLに対応させて構築します。今回は以下のソフトウェアを利用して検証しました。
- apache_1.3.26.tar.gz
http://www.apache.org/ - mod_auth_ldap.tar.gz
http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap.html - mod_dav-1.0.3-1.3.6.tar.gz
http://www.webdav.org/ - openssl-0.9.6d.tar.gz
http://www.openssl.org/ - mod_ssl-2.8.10-1.3.26.tar.gz
http://www.modssl.org/
Webサーバのインストール
まずはApacheとOpenSSLのアーカイブを展開しておきます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
両アーカイブを展開したら、OpenSSLをコンパイルします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここではコンパイルのみを行い、インストールは実行しません。configureの「-fPIC」は、DSO版作成時に必要なPIC(Position Independent Code)オプションの指定です。
次に、ApacheにSSLを組み込むためのmod_sslのconfigureを行います。ApacheのMakefileもmod_sslのconfigure時に書き換えられるので、必要なオプションがあればここで追加します。今回は、ssl、DSO、rewriteを有効にしています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これで、ApacheのMakefileが適切に書き換えられます。Apacheのソースを展開したディレクトリに移動して、Apacheをコンパイルします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここで、SSLの設定を行います。apache_1.3.26ディレクトリ内でmake certificateを実行して質問に答えれば、テスト用の証明書やプライベート鍵を生成できます。テスト用といっても、通信の暗号化は可能です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
以上の作業が終わったらインストールを行います。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
LDAP認証/WebDAVモジュールの組み込み
Apacheのベーシック認証にLDAPを利用させるため、mod_auth_ldapモジュールを組み込みます。まずはmod_auth_ldapのアーカイブを展開し、生成されたディレクトリに移動します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
mod_auth_ldapは、LDAP用のヘッダファイルとライブラリを必要とします。前述したLDAPのインストール方法では、ヘッダファイルは/usr/local/ldap/include、ライブラリは/usr/local/ldap/libに存在するので、以下のように実行してmod_auth_ldapモジュールを組み込みます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
最後に、Webサービスへのファイル転送用としてWebDAVモジュールを組み込みます。今回のようにSSLを組み込んでいる場合は、WebDAVもEAPI対応にするためにCFLAGS=-DEAPIを指定してconfigureを実行する必要があります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Apacheの設定とWebDAVの確認
Apacheについては、特にWebDAVとLDAP関連の部分を中心に説明します(編注)。
連載:ApacheによるWebサーバ構築を参照。また、WebDAVについては、
特集:次世代プロトコルWebDAVの可能性
特集:WebDAV時代のセキュリティ対策
特集:Apache 2.0でWebDAV
などが参考になるだろう。
WebDAVでは、ファイルに対するロック機構を提供するデータベースを使います。まず、このデータベースファイルを格納するディレクトリを/usr/local/apache/varとして作成することにします。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
また、/usr/local/apache/conf/httpd.confにデータベース名を定義します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
以下に、/usr/local/apache/htdocs/webdavディレクトリをWebDAVで利用し、WebDAV利用時はSSLによる暗号化を行い、さらにLDAP認証が必要になるようにしたhttpd.confの設定例(一部抜粋)を紹介します。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
Windowsで[ネットワークコンピュータ](編注)→[ネットワークプレース]の追加ウィザードを起動し、ネットワークプレースとして、
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
を設定すると、SSL接続の確認後にパスワード入力を要求されます。ここで認証に成功すると、WebDAVの利用が可能になります。
リスクと運用性のバランスが重要
今回は、特に「パスワードを一元管理する」「平文でパスワードを流さない」「ユーザーの使い勝手」を中心に、さまざまなサーバとの連携方法を説明しました。ただし、前回も説明したように、これ以外の要素も考慮した設定を入れ込む必要があると思います。
また、パスワードを一元管理することは、管理が楽になる半面でデメリットもあります。1つのパスワードが漏れるだけで複数台のサーバにアクセスできてしまうことや、あるマシンにはログインできるがほかのマシンにはできないといったアクセス制御を別の形で行う必要があることなどです。
セキュリティリスクや運用の容易さなどのバランスを考えながら、どうすればうまくいくのかを環境に合わせて考えていただければと思います。
Copyright © ITmedia, Inc. All Rights Reserved.