サーバの防衛の基本として、「攻撃者に多くの情報を提供しない」というものがあります。
現実に当てはめれば『独り暮らし』『平日の午前中は留守が多い』『セコムしてません』などの情報は 極力知られない方が良い、というのと同じですね。
今回は Web サーバ Apache の情報制限です。
CentOS などでは、 Apache をインストールすると デフォルトでは ServerTokens ディレクティブは次のように "OS" が設定されています。 (設定ファイルは /etc/httpd/conf/httpd.conf です)
ServerTokens OS
この場合、Webサーバにアクセスすると次のような値が戻ります。
HTTP/1.1 403 Forbidden
Date: Tue, 02 Feb 2010 05:36:28 GMT
Server: Apache/2.2.3 (CentOS)
Accept-Ranges: bytes
Content-Length: 5043
Connection: close
Content-Type: text/html; charset=UTF-8
Server: を見ると "Apache/2.2.3 (CentOS)" のように バージョン番号から OS まで 出力してしまっています。
これでは、仮に 2.2.3 に重大なセキュリティホールがあった場合、狙ってくださいと 言ってるようなものですよね。
というわけで、これを表示させないように変更します。
ServerTokens ProductOnly
このように設定すると、表示が "Apache" だけになります。
HTTP/1.1 403 Forbidden
Date: Tue, 02 Feb 2010 05:38:45 GMT
Server: Apache
Accept-Ranges: bytes
Content-Length: 5043
Connection: close
Content-Type: text/html; charset=UTF-8
ServerTokens ディレクティブの デフォルト値は "Full" で、 これ以上は隠せないようです。
ちなみにこの設定は ServerSignature の表示内容にも影響します。 ServerSignature については、また次回。