Linuxでサイトをつくる Apacheのセキュリティー

トップ ›  Linux

Linuxでサイトをつくる

Apacheのセキュリティー

2010年3月26日 

あなたのサーバーは何を使っているか外部からは解らないだろうと思って、外部からどのように見えているか関係ない、ただサーバーが動いていれば良いと思っていませんか?

あなたのサーバーのOSやWebサーバーにどのソフトを使用しているのか、素人でも実はすぐに解るのです。

OS Web Server Last changed
FreeBSD Apache/2.2.10 Unix mod_ssl/2.2.10 OpenSSL/0.9.8b PHP/5.2.6 13-Feb-2010

上記は、ある大きなサイトの例を示しています。このサイトは、Apache2.2で、PHP5を導入し、OSはFreeBSDというUNIX系のOSを使っているんだな、ということが解りますが、これって望ましいことでしょうか?それというのも、これは、別に特別な方法で調べたわけではありません。世界中のWebサーバーの情報や統計を提供しているnetcraftでだれでも簡単に見ることができます。

今日は、必要最低限のApacheのセキュリティーのための設定変更についてご紹介します。

実は、このようにサーバーの内容が見えてしまうのは望ましいことではありません。それというのも、攻撃者がこれを見ればどう思うでしょう?攻撃者にサーバーの情報を与えてしまっています。

もし、このバージョンに脆弱性があれば、すぐに攻撃する目標にするでしょう。

ですが、Apacheはこれが標準の設定となっているので仕方ありません。ですから、この設定を変えればよいのです。

Apacheのhttpd.confファイルの中の設定を書き加えればよいのです。というのも初期状態では、書かれていません。書かれていない状態では、Fullという設定で前記のような表示になります。これを「ServerTokens Prod」と書き加えると「Apache」としか出力をしないので、上記でも、細かなバージョンまで表示されることは無くなります。さまざまな形式があるので、下記に示しました。

ServerTokens Prod[uctOnly]
serverは: Apache といったように送ります。

ServerTokens Major
Serverは: Apache/2 といったように送ります。

ServerTokens Minor
Serverは: Apache/2.0 といったように送ります。

ServerTokens Min[imal]
サーバは (例えば): Server: Apache/2.0.41 といったように送ります。

ServerTokens OS
サーバは (例えば): Server: Apache/2.0.41 (Unix) といったように送ります。

ServerTokens Full (もしくは未指定)
サーバは (例えば): Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2 といったように送ります。

ただ、上記の設定をしてもnetcraftでは、OSは表示されてしまいます。

もう一つ問題があります。

404 Not Found等のエラーページでもバージョンが表示されます。

もし、表示を好むのでしたら良いのですが、やはり、どちらかというと望ましくないと思います。

そういう場合には、次のような構文を記述してください。

説明: サーバが生成するドキュメントのフッタを設定
構文: ServerSignatureOff

これらを変更の上、Apacheを再起動してください。

そうすれば、上記の問題は改善されるはずです 。