認証にシステムアカウントを使用する

Basic認証等でWeb認証をする際に、「htpasswd」コマンドを使用してユーザ名、パスワードを作成する方法が一般的だが、これを作成せずシステムアカウント(/etc/passwdに登録されているユーザ)で認証させるためのモジュール「mod_auth_shadow」を利用してみる

このモジュールを使用することによって、いちいちhtpasswdでユーザを作成し、周知する必要がない。

便利なようだが、リスクもある。 「mod_auth_shadow」では、モジュールと同時にインストールされるvalidateコマンドを使って/etc/shadowファイルを確認する。
validateコマンドには、rootにしかできない作業を、一般ユーザでも行えるよう「SetUID」が設定される。そのためvalidateコマンドに対するぜい弱性が発生するので外部から利用されないよう対策を施す必要がある。

また、システムアカウントを使用することで、Webアクセスを使った総当たり方式でパスワードを詐取される可能性があるのでそうした問題にも備えておく必要がある。

mod_auth_shadowのインストール

まずソースアーカイブをダウンロードする
http://sourceforge.net/projects/mod-auth-shadow/

wgetコマンドで直接ダウンロードしてもよい
# wget http://downloads.sourceforge.net/mod-auth-shadow/mod_auth_shadow-2.2.tar.gz

# tar zxvf mod_auth_shadow-2.2.tar.gz
# cd mod_auth_shadow-2.2
# vi makefile
(下図のように修正する)
mod_auth_shadow

# make
# make install

httpd.confの確認・設定

mod_auth_shadowを「make install」すると、httpd.confに青字の行が追加 されるので確認する

# vi /etc/httpd/conf/httpd.conf

LoadModule auth_shadow_module /usr/lib/httpd/modules/mod_auth_shadow.so

<Directory "/home/www/html/secure">
AuthType Basic
AuthName "Secure"
AuthShadow on ←/etc/shadowを使ったユーザ認証を有効化
Require valid-user
</Directory>

※「Require Group user」はユーザ認証できるグループを「user」グループに限定している。
「Require valid-user」にしてしまうと、root等の特殊はアカウントでもアクセス可能となってしまうため、セキュリティ上好ましくない。
グループで指定するか、ユーザ数が少なければ個々にユーザ名を許可する。 「Require user user1 user2 user3・・・」

※「mod_auth_timeout」モジュールを有効にしている場合は、conf内にAuthTimeOutDBMFile /var/spool/auth_timeout/dbを書いておかないとInternal Server Errorとなってしまうので、「mod_auth_timeout」と組み合わ せる場合には注意が必要。

Apacheの再起動

# /etc/init.d/httpd restart

広告
カテゴリー: Linux パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中