この章では、簡単な実例を挙げます。前章の内容をまとめるのに役立つかと思います。
ここでは、例として、mod_auth_pam という Apache の モジュールのインストールと設定を行います。これは、PAM を使ってウェブサーバの ユーザを認証するのに利用されるものです。この例題の趣旨は PAM にあるので、 Apache については既にインストールされているものとします。まだインストール されていないなら、利用している Linux の配布元で、インストール用パッケージが 見つかるはずです。
この例題の目標は、ウェブサーバ上に、制限のかかった family というディレクトリを作成し、 PAM を介した ユーザ認証をその領域に設定することです。そのディレクトリには family のメンバー の個人情報を置くので、ユーザグループ family の一員でないとアクセスできないよう にします。
最初に、mod_auth_pam を http://blank.pages.de/pam/mod_auth_pam からダウンロードしてください。 そして、次のコマンドで mod_auth_pam をコンパイルします。 ( root でログインすることが必要です)
~# tar xzf mod_auth_pam.tar.gz ~# cd mod_auth_pam-1.0a ~/mod_auth_pam-1.0a# make ~/mod_auth_pam-1.0a# make install |
もし mod_auth_pam をインストールするときに問題が生じたら、 ディストリビューションに付属している apache-dev という パッケージをインストールしているかどうか確認してください。 mod_auth_pam のインストールが終わったら、Apache を再起動 する必要があります。Apache は通常次のコマンドで再起動できます。(ここでも、root でないといけません)
~# /etc/init.d/apache restart |
Apache のための PAM の設定ファイルは /etc/pam.d/httpd に あります。デフォルトの設定(これは mod_auth_pam をインス トールしたときに同時にインストールされています)は、安全ではありますが、 pam_pwdb.so というモジュールを使っていて、このモジュール は多くのシステムでは入手できないかもしれません。(それにいちから設定していく ほうが楽しいですから。) したがって、/etc/pam.d/httpd と いうファイルは削除して、最初からスタートしましょう。
Apache の認証要求を PAM が処理する方法を定める前に、PAM が必要なのは何を チェックするためなのかを正確に理解しなければなりません。まず、PAM を使うの は、標準的な Unix パスワードデータベースにあるパスワードとユーザのパスワードが 一致するかどうかを確認させるためです。だとすると、"auth " 型に "pam_unix.so" モジュールというのが 使えそうです。 正しいパスワードが入力されないと認証が失敗するようにするために、モジュールの control 型は "required" にセットしするの がいいでしょう。以下は、この場合の /etc/pam.d/httpd ファイルの最初の行がどうなるかを示したものです。
auth required pam_unix.so |
次に、ユーザのアカウントが有効になっているかどうか確認しなければなりません。 (つまり、ユーザのパスワードの有効期限が切れているなどの問題がないかどうか ということです。) これは "account" タイプの問題で、 その機能についても pam_unix.so モジュールで提供されて います。 再度、このモジュールの "control" タイプを " required" に設定します。その行を追加し終わると、/etc/pam.d/httpd の設定は以下のようになります。
auth required pam_unix.so account required pam_unix.so |
上記の設定は非常に洗練されているとは言い難いですが、しっかり機能します。 PAM のサービスの設定方法を学ぶスタートとしては悪くないはずです。
PAM は Apache からの認証要求を処理できるように設定されたので、今度は Apache が PAM の認証を適切に利用して family ディレクトリへのアクセスを制限できるように設定しましょう。それをするには、次の 数行を httpd.conf ファイルに付け加えてください。 ( httpd.conf ファイルは通常 /etc/apache か /etc/httpd ディレクトリにあります)
<Directory /var/www/family> AuthPAM_Enabled on AllowOverride None AuthName "Family Secrets" AuthType "basic" require group family </Directory> |
もしかすると、上記の /var/www の部分は、 ウェブ関係の文書がデフォルトで置かれている /home/httpd といった場所に変更しなければならないかも しれません。その場所がどこであろうとも、そこに family というディレクトリを作成する必要があります。
今回の設定をテストする前に、今編集した Apache の設定について簡単に説明 したいと思います。<Directory> ディレクティブ(directive)は、このディレク トリに関する設定データをカプセル化するために使用されます。 そして、このディレクティブの内部では、まず、PAM の認証機能を有効にして ("AuthPAM_enabled on")、この設定の上書きを禁止し(" AllowOverride none")、この認証領域の名前を "Family Secrets " としています("AuthName "Family Secrets"")。 そして、httpd の認証タイプ(PAM による認証ではありません)をデフォルトにセット した上で("AuthType "basic"")、ユーザグループとして family の接続を許可する設定("require group family")にしました。
これで全ての設定が問題なく終了したので、成功を祝いましょう。さっそくお気に入 りのブラウザを起動させて、http://your-domain/family/ に突進しましょう。 (your-domain の部分には、えーっと、あなたのドメイン名(your-domain)を入れてく ださい) これであなたは完全な認証を受けた者(uber-authenticator)になったわけで す。