2001/11/28
バージョン 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