サードパーティー製認証モジュール!

2008年8月22日(金)
Shin.鶴長

システムアカウントを利用する「mod_auth_shadow」

 システムに登録されているユーザーに対し、Webアクセスを許可するには「mod_auth_shadow」を利用します。通常Basic認証では、Webアクセス独自のユーザー情報をhtpasswdコマンドなどで管理します。

 一般的にユーザー情報をほかのサービスと共有する場合には、LDAPやRDBMSなどのバックエンドを利用しますが、ユーザー管理が簡素化される代わりに、追加されたシステムの運用や導入にかかる負担が増大します。

 メールサービスやFTPサービスとともに、Webアクセスでも/etc/shadowファイルを利用できれば、システムユーザーにWebアクセスを解放することができます。またパスワードの変更や、ユーザー追加/削除と言った手段も、OSで提供されるものをそのまま利用することができます。

 /etc/shadowファイルはパスワードを記録した重要なファイルです。そのためrootユーザー以外の一般ユーザー権限では、閲覧することができません。「mod_auth_shadow」以外にもシステムユーザーを共有できるモジュールを見つけることができますが、/etc/shadowファイルのパーミッションを変更する必要があり、サーバーを危険にさらすことになります。mod_auth_shadowなら/etc/shadowファイルのパーミッションやオーナーを変更する必要はありません。

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

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

 以降、mod_auth_shadowのインストール方法を紹介します。ただしシステムユーザーを利用するため、OSへの依存度が大きく、OSによってはmod_auth_shadowを利用できない場合があります。そうした場合には「mod_authnz_external(http://unixpapa.com/mod_authnz_external/)」など、ほかのモジュールを試します。

mod_auth_shadowのインストール

 ソースファイルからインストールする方法を解説します。ここではLinuxディストリビューション「CentOS 5.2」での作業を例に解説をすすめます。

 まずソースアーカイブをSourceForge.netのmod_auth_shadowのページ(http://sourceforge.net/projects/mod-auth-shadow)からダウンロードし展開します。

# wget http://downloads.sourceforge.net/mod-auth-shadow/mod_auth_shadow-2.2.tar.gz
# tar xvfz mod_auth_shadow-2.2.tar.gz
# cd mod_auth_shadow-2.2

 展開したディレクトリに移動し、「make」を実行しますが、場合によっては図3のような修正が必要になります。「make install」後、mod_auth_shadow.soファイルがモジュールディレクトリ(CentOSでは/usr/lib/httpd/modules/)にインストールされます。また同時にvalidateコマンドもmakefileで指定したパス(/usr/sbinや/usr/local/sbin)にインストールされます。

# vi makefile (makefileを図3のように修正)
# make
# make install

 次にApacheの設定ファイル「httpd.conf」を、前回使用した、基本的なBasic認証の設定(http://www.thinkit.co.jp/article/120/2/2.html)を元に、図3のように修正します。

 「AuthShadow」で「on」を指定し、ユーザー情報に/etc/shadowファイルを使えるようにします。なお「Require group user」で、userグループに属するユーザーにだけWebアクセスを許可します。ユーザーの指定に「Require valid-user」などと指定した場合、/etc/shadowに登録された全ユーザーにWebアクセスを解放することになり、rootユーザーなど、特殊なアカウントでもアクセス可能になります。rootユーザーのパスワードを詐取されることが無いよう、一般ユーザーに限定するなどします。そのほかの設定はBasic認証を設定した前回のものと変わりません。

 設定完了後Apacheを起動、または再起動しmod_auth_shadowを有効にします。apachectlコマンドを使用して再起動する場合は以下を実行します。

# apachectl restart

 またはOSで用意された起動スクリプト(CentOSでは/etc/init.d/httpd)を利用する場合は以下を実行します。

# /etc/init.d/httpd restart

 クライアントから、対象URL(図2の例では「http://サーバーのアドレス/restricted」)にアクセスし、システムに登録されたユーザーでアクセスできることを確認します。なお先ほど紹介したmod_auth_timeoutと併用し、認証タイムアウトを設定することもできます。

 次回も引き続きサードパーティー製の認証系モジュールを取り上げます。

愛知県出身、東京都在住。現在通信会社勤務。在学中にかかわったISPの立ち上げにはじまり、古くからオープンソースソフトウェアに親しみ、現在ではシステム構築を中心に執筆を手がけている。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています