web-dev-qa-db-ja.com

Apacheを使用してHTTP応答からServer:ヘッダーを削除する方法

行を削除したいと思います:

Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.6 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g

サーバーのHTTP応答からですが、include/ap_release.hを変更して自分でApacheをコンパイルする以外に何も見つかりませんでした。知らない方法があるかしら?

20
Neo

ModSecurityオープンソースWebアプリケーションファイアウォール を使用して、HttpヘッダーからサーバーIDを削除またはマスクできます。

サーバーIDマスキング

攻撃者の速度を落とし、混乱させるのに役立つテクニックの1つは、WebサーバーIDの変更です。 Webサーバーは通常、Serverヘッダー内のすべてのHTTP応答でIDを送信します。 Apacheはここで特に役立ちます。デフォルトでその名前と完全バージョンを送信するだけでなく、サーバーモジュールがバージョンを追加することもできます。

Apache WebサーバーのIDを変更するには、ソースコードに移動し、「Apache」という名前がハードコーディングされている場所を見つけて変更し、サーバーを再コンパイルします。同じ効果は、

SecServerSignatureディレクティブ:

SecServerSignature "Microsoft-IIS/5.0"

これは非常にうまく機能しますが、熟練した攻撃者(およびツール)は他の手法を使用してWebサーバーを「フィンガープリント」する可能性があることに注意してください。たとえば、デフォルトのファイル、エラーメッセージ、送信ヘッダーの順序、サーバーが特定のリクエストに応答する方法などは、すべて真のアイデンティティを提供する可能性があります。 mod_securityの将来のリリースでは、IDマスキングのサポートをさらに強化することを検討します。

Apacheシグネチャを変更しても、エラーログの奇妙なメッセージに悩まされている場合(一部のモジュールは引き続き表示されます-これはエラーログにのみ影響し、外側からは引き続き期待どおりに機能します):

[Fri Jun 11 04:02:28 2004] [notice] Microsoft-IIS/5.0 mod_ssl/2.8.12 OpenSSL/0.9.6b \ configured -- resuming normal operations

次に、chrootingで説明したとおりに、mod_securityが最後に実行されるように、モジュールの読み込み順序を変更する必要があります。

注意

このディレクティブが機能するためには、ServerTokensをFullに設定する必要があります。

SecServerSignatureディレクティブを使用してパブリックサーバーの署名を変更すると、ModSecurityは実際の署名をエラーログに書き込み始め、使用するWebサーバーとモジュールを識別できるようになります。

出典: ModSecurityリファレンスマニュアル

16
Chris_O

ServerTokensを "Prod"に設定すると、ヘッダーを "Server: Apache "。オプションの完全なリストについては、ドキュメントを参照してください。

Apache 2.2のドキュメント

Apache 2.4のドキュメント

注:設定は両方のバージョンで同じですが、2.4のドキュメントにこの注記が追加されています。

ServerTokenを最小値未満に設定すると、相互運用の問題のデバッグが難しくなるため、お勧めしません。また、Server:ヘッダーを無効にしても、サーバーの安全性を高めるために何もしないことに注意してください。 「あいまいさによるセキュリティ」という考えは神話であり、誤った安全感をもたらします。

「Apache」という単語を完全に削除する場合は、ソースを変更する必要があります。

27
user1686