[Apache] .htaccessを有効にしてディレクトリリスティングを回避

2017年6月17日

Tips サーバー テクノロジー

Apacheって、キン肉マンで出てきたジェロニモの必殺技かと思うけど、れっきとしたサーバーモジュールですって言うのはいらない説明? 今更ながらApacheサーバーの設定でほんのちょっとだけつまずいたので、備忘録を取っておきます。

Apacheサーバーでファイルが無い階層を見るとディレクトリ一覧が見えてしまう

セキュリティ用語で「ディレクトリリスティング」という事象なのだが、思いっきり脆弱性ポイントであり、ノンセキュアな状態です。 何故この状態がセキュアじゃないのかというと、当たり前ですが、サーバー内の階層が一覧で見えてしまうからです。 上位階層だけならいいんですが、おそらく下層も同じように見れるということは、htmlファイルなど表示系のファイルが無い階層で、 かつデータファイルが置いてある場合など、そのデータファイルにダイレクトアクセスできてしまうわけですね。 怖いですね。パスワードなんか書いてあったら、もうアウトですね。 もっと詳しい説明ここではしません。知りたい人はググるか、こちらのサイトに書いてあります。 ディレクトリ非表示の意味をもう一度見つめ直す

とりあえずApacheの設定を行う

まずは".htaccess"ファイルを有効にする。

多くのサイトで説明が書いてあるのですが、Apacheの設定は下記がそれにあたります。 AllowOverride None # 下記に変更(None -> All) AllowOverride All

次に.htaccessの設置

そして対象のサイトのroot階層に.htaccessを設置します。内容は以下の1行を書くだけ Options -Indexes でも、この作業だけでは、ディレクトリリスティングが解消されませんでした・・・orz 何故???

解決方法

実はそんなに大騒ぎすることではないんですが、2つの必要な要素がありました。

Before

今回の環境は、DebianにインストールされているApacheで複数ドメインが存在しているのでsite-enabledフォルダで管理していました。 なので下記階層のファイルが対象 /etc/apache2/site-enabled/apache.conf そして内容は以下の通り <VirtualHost *:80> ServerName example.com DocumentRoot /var/www/html/ <Directory /> AllowOverride All Require all granted </Directory> </VirtualHost>

間違いその1「Optionsパラメータが足りない」

どうやら下記のパラメータが挿入されていないといけないようです。 これってデフォルトじゃなかったっけな?いつ抜けたんだろ?もしかしたら最初から無い?でも、この1行を追加すればOK Options Includes

間違いその2「Directoryタグの階層がrootになってる」

DocumentRootに書いてある階層と、Directoryタグの階層が違っている事に気が付きました。 正しくは下記の通り <Directory /var/www/html/tech-memo.com/>

修正後

<VirtualHost *:80> ServerName example.com DocumentRoot /var/www/html/ <Directory /var/www/html/tech-memo.com/> AllowOverride All Options Includes </Directory> </VirtualHost> ※g不要な「Require all granted」は削除しておきました。

無事修正完了

ディレクトリリスティングから、上記のような画面になれば、.htaccessが有効になっていて、リスト表示をしないようにセットできている証拠です。 でも、実はこの段階でも、「Apacheのバージョンが見えている・・・」というツッコミもあり、さらなるApacheの設定をする必要があるんですが、一番早く回避する方法は、なんにも書いていない「index.html」ファイルを置いておくだけで、自動的に空白画面になってくれるんで、そういう対処方法もありますね。 サーバーセットはセキュリティの基本でもあるため、自分でちゃんと対応できるようにしなければいけませんね。

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ