japan.internet.com
japan.internet.com メンバーID
Twitter
Facebook
RSS
ピックアップ
2001年5月12日 00:00

セキュリティと Apache:初級必読本 8

著者Ken Coarオリジナル版を読む海外海外発
tutorial logo
信頼できるデータベースは?

ある保護領域で何種類かの認証データベースを組み合わせて使いたいときはどうすればいいのだろうか? 最初の認証 で使うデータベースや、最初の認証に失敗したときに次に使うデータベースを Apache に知らせる方法は?

その答えは、認証データベースの信頼度に関係がある。任意制御モジュールには、 AuthAuthoritative のような名前の指示子があり、その名前はモジュール毎に違う。たとえば AuthDBAuthoritativeAutDBMAuthoritative、あるいは Anonymous_Authoritative など。

あるモジュールが信頼できるとみなされている場合、Apache がモジュールから「この人物は知らない」という応答 を得たら、さらに他のデータベースを調べることはしない。モジュールが信頼できないものである場合は、サー バーは続けて他のモジュールを認証に使うことができる。

注: 実際はサーバー自身によって決定されるわけではない。各モジュールは自分が信頼できるかどうかを知っており (*Authoritative 指示子の設定の有無による)、認証に失敗した場合はサーバーへ停止/継続の信号 (そ れぞれ HTTP_UNAUTHORIZEDDECLINED) を返す。

デフォルトではユーザーが設定を変えないかぎり、モジュールは自身を信頼できるとみなすことが多い。後悔より は安全を選ぶ考え方に基づいているわけだ。この設定を明示的に行うには AuthAuthoritative On という行を追加する。あるいは、 AuthAuthoritative Off と設定すれば責任を分担するようにできる (各モジュールに合った指示 子を使おう!)。

Htpasswd、Htdigest、Dbmmanage ユーティリティ
これら 3 つのユーティリティは一般ユーザーが使えるツールだ。自分の Web ディレクトリ用のアクセス制御ファイル を作成できるが、実行するには管理者である必要はない。ドキュメントは Apache のインストール時に man/man1 サブディレクトリに収められており、次のようなコマンドで読むことができる。

% man /usr/local/web/apache/man/man1/htpasswd.1

このシリーズ記事のはじめに書いた前提事項に従えば、これら 3 つのアプリケーションは /usr/local/web/apache/bin/ ディレクトリにあり、man ページのソースは /usr/local/web/apache/man/man1/ にある。

htpasswd アプリケーションは、mod_auth モジュールの使用時にテキストベースの 認証データベースを作成、管理するために使われる。コマンドラインからユーザー名とオプションを入力すると、標準 入力からパスワードの入力 (確認のため 2 回) を受け付け、ユーザー名と暗号化されたパスワードが指定したテキスト ファイルに保存される。Apache サーバーが認証用の証明情報を受け取ると、その中のパスワードは、認証データベース へパスワードを保存する際に使用されたのと同じアルゴリズムで暗号化され、暗号化されたパスワード同士が比較され る。実際の平文のパスワードはシステム上には残らないのだ。

htpasswd コマンドの文法は次のとおり。

htpasswd [options] pwfile username [password]

コマンドラインで次のようなアルゴリズム用フラグを指定すると、htpasswd コマンドで様々なアル ゴリズムを使ってパスワードを暗号化することができる。

-m
パスワードの暗号化に、Apache 独自の改良 MD5 ハッシュ アルゴリズムが用いられる。この方式 で暗号化されたパスワードは他のアプリケーションでは利用できないが、それらはバージョン 1.3.9 以降のすべて の Apache で利用できる。したがって、Linux で使用中の .htpasswd ファイルを AIX 、 Solaris、Windows へ持っていき、それぞれの環境で変更を加えることなく使うことができる。これは Windows と TPF プラットフォームではデフォルトのアルゴリズムだ。

-d
システムの crypt() ライブラリ ルーチンを使ってパスワードを暗号化する。暗 号化されたパスワードは、システムのユーザー ファイルに保存されているパスワードと同じ程度に安全となるが、おそ らく他のシステムへ持っていくと使えないだろう。

-s
Netscape サーバーで利用されている SHA アルゴリズムを使ってパスワードを暗号化する。これ はサーバー間でパスワードファイルを移動させるときに役に立つ。

使用される暗号化アルゴリズムはファイル中の各エントリ毎に適用されるので、1 つのファイル中に異なる方法で暗 号化されたパスワードを含むことも可能だ。

htpasswd ツールでは、暗号化の制御以外にも次の 2 つのフラグが指定できる。

-b
パスワードを stdin から読み込む代わりにコマンドラインから読み込むようにす る。このフラグは主に Windows 環境の管理者向けだが、非対話環境 (ユーザーに CGI スクリプトでパスワードの変更 を許可するなど) でスクリプトベースのパスワード管理が可能になるので、他のプラットフォームでも役に立つだろう 。しかし、パスワードがコマンドライン上に平文で現れるため、ps コマンドの出力から他のユーザーに パスワードを見られる可能性がある。デフォルトで実行した時のようにパスワードを 2 回入力することもないので、正 しいパスワードを入力したかどうかも確認できない。このオプションは注意して使おう。

-c
デフォルトでは、htpasswdpwfile 認証データベース ファイルがすでにあるという前提で、そのファイルを更新する。新しいファイルを作成したり、既存のファイルを完全 に上書きするには、コマンドラインで -c フラグを使うとよい。

htdigest および dbmmanage ツールも /usr/local/web/apache/bin/ ディレクトリにあり、htpasswd アプリケーションと同 じような機能を持つ。htdigest はダイジェスト認証で用いられるテキスト データベースを管理するた めのもので、dbmmanage は DB、DBM、GDBM、そして NDBM データベース形式をサポートしている。 dbmmanage は Perl スクリプトなので、使用するにはシステムに Perl インタプリタ (バージョン 5 以降) がインストールされている必要がある。

次は 認証データベースの保管場所 >>

関連テーマ
プリンター用
記事を転送
この記事をクリップ!
【特別連載企画】大艦巨砲主義にして卓越したレスポンス--GALAXY S II WiMAX
【特別連載企画】大艦巨砲主義にして卓越したレスポンス--GALAXY S II WiMAX 1月20日より販売が開始されたサムスン製スマートフォン「GALAXY S II WiMAX」。カタログスペックでは、他メーカーのハイエンド機と同じように見えても、実際に使うと卓越したレスポンスに驚かされる。
⇒詳細記事はこちら
⇒連載記事一覧はこちら
注目のトピックス
最新コラム一覧
百式のネットビジネス研究
百式のネットビジネス研究
次のフライトでお好みの座席が空いたら教えてくれる「Expert Flyer」
アウンのグローバルマーケティング動向
アウンのグローバルマーケティング動向
Web プロモーションにおいて大切なこと―年度末編―
週刊-サイト別アクセス状況データ
週刊-サイト別アクセス状況データ
12月の主婦層、ベルメゾンが首位を維持(VRI 調査)
多言語×Web×海外マーケティング情報
多言語×Web×海外マーケティング情報
海外発、注目 AR プロモーション
エンジニア転職ノウハウ開発室
エンジニア転職ノウハウ開発室
楽天が目指す変革──Globalization、Agile、Big Data
中国・台湾ネットビジネス情報最前線
中国・台湾ネットビジネス情報最前線
中国から Web を見てもらいたいならば
マーケティングに活用できる最新トレンド
マーケティングに活用できる最新トレンド
改めて、「導線」最適化に目を向ける
次世代マーケティングチェーンの視点
次世代マーケティングチェーンの視点
ソーシャル時代における BtoC 型 Eコマース成功のポイント
Copyright 2012 internet.com K.K. (Japan) All Rights Reserved.