ディレクトリ非表示の意味をもう一度見つめ直す:セキュリティ対策の「ある視点」(2)(1/3 ページ)
ApacheでIndexesオプションを削除している管理者は多いはず。その設定を行うべき理由を、“彼ら”の視点とともに考えてみましょう。
第1回では、Webサーバ“Apache”のセキュリティ設定によるバナー情報の隠ぺい方法について紹介した。第2回となる今回もApacheのセキュリティ設定でできることをお届けする。今回はおそらく誰もが行っているであろう、ディレクトリ非表示設定についてもう一度チェックしてみたい。
Webサーバのディレクトリリスティングとは
ディレクトリリスティングというのは、Webサーバが持つ便利な機能の1つで、読んで字のごとく、サーバのディレクトリ内容をリスト表示するものである。
Apacheの設定ファイル(デフォルトではhttpd.conf)には、「DirectoryIndex」という設定項目があり、ここではインデックスとなるファイルを設定する。
DirectoryIndex index.html index.php
これは、最後が「/(スラッシュ)」で終わるリクエストをWebサーバが受け取った場合、表示するファイルを優先順に記述する個所である。
リスト1で示した例では、アクセスされたディレクトリ内にindex.htmlが表示される。index.htmlがなく、index.phpが存在する場合はそちらが表示される。優先順位は左が高いので、両方存在する場合は、index.htmlが表示されることとなる。
例えば「www.target-example.jp」というドメインのサイトがあり、図1のようなディレクトリ構造であったとしよう。DirectoryIndexでindex.htmlが設定されている場合、「http://www.target-example.jp/test/index.html」としなくとも、「http://www.target-example.jp/test/」とするだけで同じようにアクセスすることが可能である。
この機能が存在することで、サイト公開側は、トップページを含む特定のディレクトリにアクセスされたとき、ユーザーに見せるページを選択することができ、ユーザーは最後のファイル名まで記述することなくページにアクセスすることができるのである。
あなたの「便利」は攻撃者にも「便利」
それでは、このDirectoryIndexに記述されているインデックス・ファイルになるべきものが存在しないディレクトリへアクセスした場合はどうなるのだろうか。先ほど例に挙げたディレクトリ構造の場合からindex.htmlが存在しない状態でアクセスしたブラウザの画面を見てみよう。
読者の皆さんも、このようなページに出くわしたことがあるのではないだろうか。これは、静的なコンテンツを公開するときに便利な機能である。
例えば、写真などの画像ファイルやダウンロードファイルを多数格納しているディレクトリで索引となるページを作成しなくとも図2のようにファイル一覧を表示することができるのである。
外部から閲覧されても別段問題のないファイルばかり格納されているディレクトリの中身を公開するために使用する分にはまったく問題はないが、そのディレクトリに格納されているファイルの中に機密情報の含まれるデータファイルが存在する場合はどうだろうか。すぐさま情報漏えい事件となってしまうことだろう。現に、これが原因で情報漏えいが発生した事例も過去に存在している。
Copyright © ITmedia, Inc. All Rights Reserved.