PR

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

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のWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

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