mod_auth_externalのインストール
バージョン | mod_auth_external 2.1.13 | |
Apache 1.3.20 | ||
OS | RedHat 7.0J (Linux 2.2.16-22) | |
ホームページ | http://www.wwnet.net/~janc/mod_auth_external.html | |
ダウンロード | http://www.wwnet.net/~janc/mod_auth_external.html |
Webコンテンツへの認証に、OSのアカウントを使う方法です。パスワードを一元管理できるため、イントラ系のシステムでは便利ではないでしょうか。ただし、このような認証をインターネット上のWebサーバでは行わないほうが良いでしょう。なぜならパスワードクラッキングの窓口になってしまう可能性があるからです。
これを実現するApacheモジュールとしてはmod_auth_pamがあります。しかし、/etc/shadowのパーミッション設定によってはうまく動きません。そこで、ここではもうひとつのモジュールであるmod_auth_externalについて解説しています。
一応、mod_auth_pamについても以下で解説しています。
mod_auth_externalは、Apacheと様々な認証システムを連携するための汎用のモジュールです。mod_auth_externalには、PAM認証を行うモジュールが付属しているので、これを使ってOSのアカウントによる認証ができます。
Apacheのインストール
まずはApacheをDSOサポート付きでインストールします。
$ tar xvfz apache_1.3.20.tar.gz $ cd apache_1.3.20 $ ./configure --enable-rule=SHARED_CORE --enable-module=so $ make $ su # make install
mod_auth_externalのインストール
インストーラが付いていないので手動でインストールします。まずはアーカイブを展開します。
$ tar xvfz mod_auth_external-2.1.13.tar.gz $ cd mod_auth_external-2.1.13
apacheのbinディレクトリにあるapxsコマンドを使ってコンパイルします。
$ apxs -c mod_auth_external.c
同じくapxsを使ってインストールします。
$ su # apxs -i -a mod_auth_external.so
Apacheの設定ファイルhttpd.confに、次のような設定が加わっていることを確認してください。
LoadModule external_auth_module libexec/mod_auth_external.so AddModule mod_auth_external.c
pwauthのインストール
pwauthはmod_auth_externalでPAM認証を行うモジュールで、mod_auth_externalに付属しています。
makeでコンパイルし、/usr/local/libexecあたりにコピーします。
$ cd pwauth $ make $ su # mkdir /usr/local/libexec # cp pwauth /usr/local/libexec
pwauthの所有者がrootになっていることを確認して、pwauthにsuidビットを設定します。
# chmod u+s /usr/local/libexec/pwauth
httpd.confに次の設定を加えます。
AddExternalAuth pwauth /usr/local/libexec/pwauth SetExternalAuthMethod pwauth pipe
Apacheをリスタートします。
# apachectl restart
PAMの設定
/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の認証の設定
.htaccessファイルなどで、次のような設定をしておけばPAMによる認証が行われます。
AuthExternal pwauth AuthName "Restricted Access Area" AuthType Basic require valid-user