さて、この設定はなぜ必要なのだろうか。
対策方法の直前にも触れたが、この設定は意図しない情報漏えいをしてしまわないためである。それでは、情報を探す側の攻撃者は、どのように攻撃を行ってくるのだろうか。
【注】
ここではシステムに直接影響を与えるものだけでなく、情報の搾取についても攻撃と呼ぶ。
今回は、2つの方法を紹介しよう。
1つは、ディレクトリ名やファイル名への総当たり攻撃(brute force directories and files)、もう1つはGoogle Hackingである。
前者は、下記(1)のようにリンクやページのアドレスからファイル名を削ったり、(2)のように慣習的、もしくはアプリケーションなどでデフォルトとして使用されるような、推測可能なディレクトリやファイル名へのアクセスを手当たり次第試みるものである。
(1)http://www.target-example.jp/test/test.html
→ http://www.target-example.jp/test/
(2-1)http://www.target-example.jp/mrtg/
(2-2)http://www.target-example.jp/phpinfo.php
これらは、1つ1つブラウザのアドレスバーに入力せずとも、辞書ファイルを用いた自動化ツールも存在しており無料で手に入れることができる。
後者のGoogle Hackingとは、検索サイト「Google」の検索エンジンでさまざまなクエリを利用して、調査を行いたいサイトの情報を検索結果から収集することである。検索結果の中には、情報収集にとどまらず、直接、侵入や機密情報の搾取につながるような結果を得られることもある。
通常、検索エンジンを利用する場合は、気になる単語を入力するだろう。例えば、私の属している組織のニュースリリースを調べたい場合は「NTTデータ・セキュリティ」「ニュースリリース」などといった単語になるだろう。Googleには、このような検索方法以外にオプションが用意されている。
今回紹介しているディレクトリリスティングについても、オプションを利用することにより調査を行うことが可能である。可能であるというのは、ディレクトリリスティングが有効であるサイトを検索することができるという意味である。
Apacheにおけるディレクトリリストのページは基本的にタイトル部分に「Index of」という文字列が存在する(図5)。そして、Googleの検索オプションの中には、Webページのタイトル部分にある文字列に絞って検索を行うオプション「intitle:」というものが存在するので、これらを組み合わせて検索を行うのである。
しかし、これだけでは意図していないサイトも多く検索結果として表示されるので、さらに絞り込むためには、URLの中にある文字列を検索対象とする「inurl:」などとも組み合わせて検索を行うのである。
intitle:"Index of" inurl:"target-example.jp"
上記のように検索することによって「target-example.jp」という文字列を含むURLを持ち、サイトのタイトル部分に「Index of」という文字列が含まれているサイトを検索することができるのである。
Googleを使ったことがあれば分かると思うのだが、キャッシュ機能というものがある。キャッシュ機能というのは、Googleがサイトを読み込んだときに保存した情報を表示させる機能である。よって、現在のサイトに変更が加えられても一定期間は、過去の情報を見ることができてしまうことになる。つまり、設定変更によってディレクトリリスティング機能を無効にしたとしても、Googleのキャッシュ機能が更新されるまではその内容(ディレクトリ名やファイル名)は、Google Hackingにより知ることのできる状態が続くということになるので、一刻も早く対策を行っておく必要がある。
また、対策を行う際には一度、自身が管理しているサイトのディレクトリリストが検索エンジンにキャッシュされていないかどうかも併せて確認しておくことをお勧めする。これは先の例のinurl:の後を自ドメインに変更し、検索すればよい。もし発見された場合は、ディレクトリリストを非表示にするだけでは対策にならない。すでにディレクトリやファイルの名前が知られている場合、直接URLを指定される恐れがあるため、ファイルの名前、ディレクトリ構成の変更も考えた方がいいだろう。
今回は、純粋なApacheにおける設定をもとにディレクトリリスティングの危険性の説明をしたがこれはApacheだけに言えることではない。
昨今のネットワーク機器やアプライアンス製品などは設定画面、管理画面に、ブラウザで設定可能Webのインターフェイスを備えているものが多数存在する。これらもWebサーバとして動作しているということを忘れてはいけない(中にはApacheをベースに開発されているものも多数存在する)。
それらにも、慣習的に利用されるディレクトリや情報を格納するディレクトリが存在している場合もある。そして、それがブラウザからアクセス、情報を取得可能であることがペネトレーションテストで発見されることも珍しくない。中には重要な情報が含まれているログやパスワードなどの機密情報が格納されているものが見つかる場合もある。
これらは、設定変更によって対策を行うことが不可能である場合が多い。そのような場合は、ベンダに問い合わせる、もしくは、その対象機器自体へのアクセス制御を行うことが推奨される。
数手順で済む設定を怠り放っておくことで、思わぬ落とし穴にはまってしまうことがあるということ、知らない間に情報が自分の手から離れたところで公開されてしまうということがお分かりいただけただろうか。布に開いた小さな小さな穴でも、放っておけばいつかは大きな穴となり、果ては布を裂いてしまう。セキュリティにも同じことがいえるのではないだろうか。
セキュリティ修正プログラムと呼ばれるような大きな穴を埋めるもの以外にも、今後大きな穴になりかねない「あくまで現状軽微であると思われる」ものにも目を向けてみてはいかがだろうか。今回取り上げた内容以外にもそのようなものはたくさんある。それらについては次回からも紹介していきたいと思っている。
今回の記事でそれらを考え、見直すキッカケとなれば幸いである。
Copyright © ITmedia, Inc. All Rights Reserved.