ディレクトリリスティングとは―ApacheやNginxの無効化方法など
技術情報
ディレクトリリスティングは、URLでWebディレクトリを指定したときに、インデックスファイルがない場合にディレクトリのファイル一覧を表示する機能です。意図せずにディレクトリリスティングを有効にしている場合も多く、それを悪用したサーバー攻撃の手法のことを指す場合もあります。
目次
この記事の目次です。
1. ディレクトリリスティングとは
2. ディレクトリリスティング攻撃
3. ディレクトリリスティングを無効にする方法
1. ディレクトリリスティングとは
ディレクトリリスティングは、URLでWebディレクトリを指定したときに、インデックスファイルがない場合にディレクトリのファイル一覧を表示する機能です。 意図せずにディレクトリリスティングを有効にしている場合も多く、それを悪用したサーバー攻撃手法のことを指す場合もあります。
この設定を知らないで利用している場合も多く、見えないと思って非公開なファイルを置いてしまうユーザもいるため、それを狙ったサーバー攻撃の手法をディレクトリリスティングという場合もあります。
2. ディレクトリリスティング攻撃
ディレクトリリスティング攻撃は、ディレクトリ一覧を表示して情報を窃取する手法です。
ディレクトリインデクシング攻撃
ディレクトリリスティング攻撃は、英語で「Directory indexing attacks」ともいいディレクトリインデクシング攻撃とも訳されることがあります。
ApacheやNginxの設定以外にもある
ApacheやNginxの設定でディレクトリリスティング機能が無効になっている場合でも、攻撃者はWebサーバの脆弱性を発見して悪用し、ディレクトリの参照を実行する可能性があります。 たとえば、古いApache Tomcatの脆弱性では、nullバイト (%00) とバックスラッシュ (\) の不適切な処理によってディレクトリリスティング攻撃を受けやすくなっていました。
攻撃者は、オンラインデータベースに格納されているキャッシュデータまたは履歴データを使用してディレクトリリスティングを検出することもあります。 たとえば、Google検索のキャッシュには、以前にディレクトリリスティングが有効になっていたターゲットの履歴データが含まれている場合があります。 攻撃者は、このようなデータようなデータを集めることもあります。
3. ディレクトリリスティングを無効にする方法
ディレクトリリスティングを無効にするには、Webサーバの設定を変更する必要があります。
Apache HTTP Server
Apache HTTP Serverの場合は、httpd.confファイルで次の行を追加して、Optionsディレクティブを設定すると、ディレクトリリストを無効にできます。 「-Indexes」が無効で「Indexes」が有効の指定になります。
<Directory <禁止するディレクトリのパス>>Options -Indexes</Directory>
このディレクティブを.htaccessファイルに追加することもできますが、選択したディレクトリだけでなく、サイト全体のディレクトリリストをオフにした方が無難です。 また、httpd.confには、デフォルトで複数箇所で有効の指定があるので注意が必要です。
Nginx
Nginxは、ディレクトリインデックスはデフォルトで無効になっているため、何も設定する必要はありません。 以前に有効にしていた場合は、nginx.confで、autoindex onをautoindex offに変更することで無効にできます。
ディレクトリリスティングを無効にした後の動作
ディレクトリリスティング機能が無効になっているところにディレクトリ名でアクセスした場合は、403 Forbiddenとなります。
関連記事
関連記事です。
403 Forbiddenとは
403 Forbiddenとは、閲覧禁止を意味するエラーです。ご自身が公開しているホームページであれば閲覧禁止となる原因を確認すれば、解決もしくは回避できます。 ここでは403 Forbiddenの解決をテーマに、ワードプレス(WordPress)、ロリポップ(lolipop!)、などのエラー対処方法をまとめています。
NGINXとは
NGINXは、オープンソースのWebサーバアプリケーションです。
更新履歴
更新履歴になります。
- 2024/1/26 NGINXについて追記しました。
- 2022/8/12 ディレクトリインデクシング攻撃について追記しました。
- 2022/1/8 記事をアップしました。