5分でできるウェブサーバのセキュリティ向上施策
こんにちは、naoya です。
先日、ウノウが公開しているサービスの中にいくつかの脆弱性が見つかったため、社内で「脆弱性発見大会」を開催しました。この大会は、二人一チームに分かれてウノウが公開している各サービスの脆弱性を見つけることを目的とした大会です。結果は、いくつか各サービスに脆弱性が見つかり、すぐに修正することができました。
僕のチームは、ウノウのホームページやラボブログなど細かいサービスを担当しました。その中で、いくつかのウェブサーバにセキュリティ上あまい設定がありました。
今日は、ウェブサーバのセキュリティ向上のための設定方法についてエントリします。なお、ウェブサーバはApache 2.2系を前提としています。
サーバ情報の表示しない
ウェブサーバ(Apache)で、404などのエラーページを表示したとき、ヘッダやページの下にApacheやOSのバージョンが表示されます。こういったサーバ情報をわざわざ表示する必要はありません。サーバ情報の表示しないようにするには、Apacheの設定ファイル(httpd.conf)に、次の設定を追加します。
ServerTokens ProductOnly ServerSignature Off
この設定を追加後、Apacheを再起動するとServerヘッダにはApache、エラーページにもサーバの情報は表示されなくなります。>
.で始めるディレクトリは公開しないようにする
ウノウでは、すべてのサービスをsvn(Subversion)で管理しています。アップデートもsvnで行っています。そのため、.svnディレクトリが誤って公開されていることがあります。.svnディレクトリには、ソースコードが入っていますので公開しない方がいいです。.svnだけでなく、.で始まるディレクトリを公開しないようにするようには、Apacheの設定ファイル(httpd.conf)に、次の設定を追加します。
.svnディレクトリにはソースコードが入っているので、注意する必要があります。
<Directory ~ "/\..+/">
Order Deny,Allow
Deny from All
</Directory>
最後に、PHPのセキュリティ向上施策も追記しておきます。
PHPファイルに対してリクエストすると、HTTPヘッダにX-Powered-Byという情報が入っています。X-Powered-Byヘッダには、PHPのバージョンが次のような形で含まれています。
X-Powered-By: PHP/4.3.11
このヘッダを隠すには、PHPの設定ファイル(php.ini)に、次の設定を追加します。
expose_php = Off
この他にも、ウェブサーバのセキュリティ向上のための情報がありましたら、ぜひ教えてください!

コメント
confファイルが流出するならまだがしも、バージョンを知られたとしても無傷だと思うんですが...(サーバー情報を収集するサービスもあることだし)
投稿者: pops | 2007年8月25日 03:47
バージョンを隠さないといけないほど、脆弱性を放置しているということなわけですね。
投稿者: Anonymous | 2007年8月25日 10:37
>バージョンを隠さないといけないほど、脆弱性を放置しているということなわけですね。
クラッカーのやる気を減らすという面でバージョン隠しは効果的ではあります。
投稿者: Anonymous | 2007年8月25日 11:21
svnを認証もかけていない公開ディレクトリに置くというのは斬新ですね!
投稿者: Anonymous | 2007年8月25日 16:02
本気のクラッカーなら、バージョンがわからなくても、既知の脆弱性は手当たり次第に攻めてくると思う。
投稿者: Anonymous | 2007年8月25日 16:17
タイトルに釣られた。
投稿者: Anonymous | 2007年8月25日 17:43
naoya氏は対処作の1つを挙げただけなので、突っつき過ぎるのは酷かとw
投稿者: Anonymous | 2007年8月25日 21:06
対処策のひとつ??
いまどきワームで全自動攻撃が普通なんですから、何の意味もありませんが?
投稿者: Anonymous | 2007年8月26日 06:10
> この他にも、ウェブサーバのセキュリティ向上のための情報がありましたら、ぜひ教えてください!
ここにある情報は全て無意味です。
投稿者: Anonymous | 2007年8月26日 09:33
手厳しいですね。
ただ僕も思いますが、、、
無意味です
投稿者: Anonymous | 2007年8月27日 12:22
この手のは、攻撃対象から外れるための対処ですからね
クリアケースの入ったリンゴとリンゴの絵が描かれた箱、どっちを狙うかっていう程度の
まぁ無意味ではないですけど、ほかにもやることは沢山あるでしょうね
投稿者: Anonymous | 2007年8月27日 14:22
たくさんの指摘、意見ありがとうございました。
タイトルの対してエントリの内容が薄すぎて申し訳ありませんでした。
もちろん、この対策だけではセキュリティ対策としては不十分なので、引き続きウノウでのセキュリティ対策について公開していきたいと思っています。
投稿者: naoya | 2007年8月27日 18:32
naoya氏へ。謝ることは無いと思いますよ。
投稿者: Anonymous | 2007年8月28日 05:41
>この手のは、攻撃対象から外れるための対処ですからね
攻撃対象から外れるための対処にすらなってませんが?
攻撃してみりゃ結果でわかるわけですから。
バージョンなんて見るまでもないわけで。
投稿者: Anonymous | 2007年8月28日 11:35
質問。
提供元(たとえばRedhat)からのパッチが当たってるPHPとパッチが当たってないPHPの差はバージョン番号から識別できますか?
投稿者: Anonymous | 2007年8月28日 12:27
> 攻撃対象から外れるための対処にすらなってませんが?
全世界のPCにすべての攻撃を仕掛けるクラッカーなんていないっしょ
リストを絞る際に脆弱性のあるバージョンと、バージョンが解らないサーバどっちを狙うの?
セキュリティって、無駄だと思えることでも少しでも意味があれば対策すべきだと思うんだけど
その積み重ねでしょ
投稿者: Anonymous | 2007年8月28日 14:17
>全世界のPCにすべての攻撃を仕掛けるクラッカーなんていないっしょ
クラッカー自身が作業するならそう思うでしょうね。
でも実際はワームがやるなら、そんな「無駄な」バージョン確認なんかせずに闇雲にやるでしょう。
時間もCPUも全部他人のものを利用しているので、攻撃者はちっとも疲れない。
投稿者: Anonymous | 2007年8月28日 18:56
わざわざ(デフォルトだけど)バージョン晒して攻撃者を誘うようなことはしないほうがいいと思うな。
こんな基本的なこともやっていないサイトと思われるよ。
投稿者: Anonymous | 2007年8月28日 23:26
つ【 5分でできる】
投稿者: Anonymous | 2007年8月29日 20:39
>こんな基本的なこともやっていないサイトと思われるよ。
とんでもない。バージョンは隠さないのがセキュリティ業界の常識です。
バージョンを隠していると、脆弱性パッチをあててないと思われてむしろexploitをつっこまれる。
投稿者: Anonymous | 2007年8月29日 23:04
> バージョンを隠していると、脆弱性パッチをあててないと思われてむしろexploitをつっこまれる。
古いバージョンをさらしているともっと確実ですね。
投稿者: Anonymous | 2007年9月 4日 09:09
バージョン隠すのは御守り程度の効果だけど、
監査担当の会社によっては「何故隠さないのか」とツッコミが入るんだよなぁ。
それが面倒だから基本的に隠しちゃう。
投稿者: Anonymous | 2007年9月 4日 11:11