Apache ServerTokensについて少しだけ理解を深めてみる

notoです。

Apacheのセキュリティについてのエントリーが、定期的にはてブにあがったりします。 ボクもApacheを触り始めて間もないので、正直コピペしてました。

ServerTokens Prod にして、ServerSignature Offにしてってな感じで。 けどその設定をすることで、どういう挙動になるの??って理解を全然していなかったので、調べてみました。

検証環境

  • CentOS 5.7
  • Apache/2.2.3

ServerTokens

Apacheのマニュアルからの引用です。

HTTP 応答ヘッダを設定する

クライアントに送り返す Server 応答ヘッダ内に、サーバの一般的な OS 種別や、 コンパイルされて組み込まれているモジュールの情報を 含めるかどうかを指定します。

ふむ。レスポンスヘッダの情報を制御するディレクティブなんですね。わかります。

ServerTokens OSの場合

デフォルトでは ServerTokens OSと設定されています。 wgetコマンドでレスポンスヘッダの情報を確認してみます。

1
wget -S http://localhost

レスポンスヘッダ

1
2
3
4
5
6
7
8
・・・中略・・・
  HTTP/1.1 200 OK
  Date: Tue, 24 Jan 2012 14:36:08 GMT
  Server: Apache/2.2.3 (CentOS)
  Content-Length: 1050
  Connection: close
  Content-Type: text/html;charset=ISO-8859-1
・・・中略・・・
1
Server: Apache/2.2.3 (CentOS)

ApacheのバージョンとOS情報が取得できます。

ServerTokens Full(もしくは未指定)の場合

レスポンスヘッダ

1
2
3
4
5
6
7
8
・・・中略・・・
  HTTP/1.1 200 OK
  Date: Tue, 24 Jan 2012 14:42:50 GMT
  Server: Apache/2.2.3 (CentOS) DAV/2 PHP/5.3.9
  Content-Length: 1066
  Connection: close
  Content-Type: text/html;charset=ISO-8859-1
・・・中略・・・
1
Server: Apache/2.2.3 (CentOS) DAV/2 PHP/5.3.9

Apacheのバージョン、OS情報、モジュール情報、PHPのバージョン丸見えである。

ServerTokens Prod(uctOnly)の場合

レスポンスヘッダ

1
2
3
4
5
6
7
8
・・・中略・・・
  HTTP/1.1 200 OK
  Date: Tue, 24 Jan 2012 14:50:27 GMT
  Server: Apache
  Content-Length: 1035
  Connection: close
  Content-Type: text/html;charset=ISO-8859-1
・・・中略・・・
1
Server: Apache

Apacheを利用してることしか確認できません。

ServerTokensをOSにしてると何がダメなの?

Apacheの脆弱性をつかれる可能性があります。 例えば、少し前に話題になったApache Killerです。

Apache killerは危険~Apache killerを評価する上での注意~

Apache HTTP Server 2.2.20以前のバージョンを使用しており、対策が施されていない場合、悪意のあるおじさんが、レスポンスヘッダを読み取って、Apacheバージョン古いな。おじさん Apache killerしちゃうぞ。なんてことも起きる可能があると思います。

必要のない情報は隠しましょうってことですね。 長くなってしまったので、この辺りで、次はTraceEnableについて調べてみたり調べなかったり。

Comments