Yes, I'm really enjoying everything!

smilemark blog

Computer & Network 自宅サーバ日記

ApacheでPAM認証

投稿日:

先ほどPHP iCalenderをインストールしたけど、このままでは誰でも参照できてしまいプライバシーが守れないので、パスワードでガードすることにした。Apacheの普通のBASIC認証でもよいのだけど、パスワードの管理や設定が面倒なのでPAM認証を行うようにする。そのために新しいモジュールをApache(2.0.40-21.17)に組み込む。(Apache 1.Xでは設定が異なるようです。ご注意。)
PAM認証にはモジュールmod_auth_externalとpwauthを用いる。まずはこれらをGetする。(作者に感謝)
mod_auth_external
pwauth
mod_auth_externalのインストール
まずはアーカイブを展開します。
インストールは以下のように行う。

apxs -c mod_auth_external.c
apxs -i -a mod_auth_external.la

以下が自動的にhttpd.confに追加されます。

LoadModule external_auth_module /usr/lib/httpd/modules/mod_auth_external.so

pwauthのインストールと設定
config.hの以下のエントリをApacheのUIDに変更します。

#define SERVER_UIDS 48 /* user "nobody" */

PAM認証ユーザのUIDの最小値を設定します。これより小さいUIDのユーザ(特権ユーザ)は認証でエラーとなります。

#define MIN_UNIX_UID 40 /**/

makeしてインストールを行います。(rootで行います。)

# make
# mkdir /usr/local/libexec/
# cp pwauth/pwauth /usr/local/libexec/
# chmod u+s /usr/local/libexec/pwauth

/etc/pam.d/pwauthファイルを作成します。

auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_nologin.so
account required /lib/security/pam_pwdb.so

Apacheの設定
以下の設定をhttpd.confに追加します。

AddExternalAuth pwauth /usr/local/libexec/pwauth
SetExternalAuthMethod pwauth pipe

apacheを再起動します。これでPAM認証を行えるようになりました。
PAM認証を用いるには.htaccessにこんな風に設定すればOKです。

AuthType Basic
AuthExternal pwauth
AuthName "PAM authentication"
require valid-user

-Computer & Network, 自宅サーバ日記

Copyright© smilemark blog , 2024 All Rights Reserved Powered by STINGER.