ディレクトリ非表示の意味をもう一度見つめ直す:セキュリティ対策の「ある視点」(2)(2/3 ページ)
ApacheでIndexesオプションを削除している管理者は多いはず。その設定を行うべき理由を、“彼ら”の視点とともに考えてみましょう。
ファイル名が知られるということの意味
無料で配布されているようなCGIなどのREADMEファイルには「データやパスワードなどの機密情報を格納するファイル名は変更するように」と書かれていることがある。これは、直接そのファイル名をリクエストされてしまった場合に外部から閲覧される恐れがあるからだ(これが原因で情報が漏えいした事例も過去に存在する)。
重要な情報が格納されているファイルに対して、安易な名前を付けないという対策も大事かつ必要であるが、それを行っていてもディレクトリの中身が丸見えでは十分な対策とはいえない。
そのように意図せずに情報が漏えいしてしまわないために、ディレクトリインデックスを取得できない設定方法を紹介しよう。
【注】
インデックス・ファイルを各ディレクトリに置いておけばという解決方法もあるのだが、置き忘れなどのミスが考えられるため、ここでは設定による対策を書かせていただく。
まずは“対策”――ディレクトリリスティングを制限する
Apacheの設定ファイル(/usr/local/apache/conf/httpd.confなど)をエディタで開き、その中に存在する“Indexes”というオプションを削除し、Apacheを再起動する。
<Directory "/usr/local/apache/htdocs">
Options Indexes Includes FollowSymLinks
↓
<Directory "/usr/local/apache/htdocs">
Options Includes FollowSymLinks
ただ、ここで気を付けないといけないのは<Directory>ディレクティブが複数存在する場合である。
例えば、設定ファイル内に以下のような記述があった場合だ。
<Directory "/var/www/html">
Options Indexes FollowSymLinks
(略)
<Directory "/var/www/icons">
Options Indexes MultiViews
(略)
この場合、それぞれのディレクティブでIndexesの指定を削除する必要がある。
これにより、インデックス・ファイルの存在しないディレクトリにアクセスが行われたとしても、Indexesオプションを削除し、ディレクトリリスティングを禁止とする設定となっているため、以前のようにディレクトリリストは表示されず、図3右のように「Forbidden」となる。
Copyright © ITmedia, Inc. All Rights Reserved.