ApacheでHTTP応答からServer:ヘッダーを削除する方法は?


20

行を削除したい:

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.hApacheを自分で変更してコンパイルする以外に何も見つかりませんでした。知らない方法があるのではないかと思っていましたか?

回答:


16

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

サーバーIDマスキング

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

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

SecServerSignatureディレクティブ:

SecServerSignature "Microsoft-IIS/5.0"

これは非常にうまく機能しますが、熟練した攻撃者(およびツール)は他の手法を使用してWebサーバーを「フィンガープリント」する可能性があることに注意してください。たとえば、既定のファイル、エラーメッセージ、送信ヘッダーの順序、サーバーが特定の要求に応答する方法などは、すべて真のIDを提供できます。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リファレンスマニュアル


現在実行中ですが、攻撃アクションをトリガーできるため、別の既存のサーバー名を使用するのは賢明ではないと思います。
Codebeat

27

ServerTokensProd」に設定すると、ヘッダーを「Server: Apache」に減らすことができます。オプションの完全なリストについては、ドキュメントを参照してください。

Apache 2.2のドキュメント

Apache 2.4のドキュメント

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

ServerTokensを最小値未満に設定することは、相互運用上の問題のデバッグがより困難になるため推奨されません。また、Server:ヘッダーを無効にしても、サーバーのセキュリティが強化されることはありません。「あいまいさによるセキュリティ」の考え方は神話であり、誤った安全感につながります。

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


返信に+1 tnx、私はこれを知っていた質問で言及するのを忘れましたが、Microsoft IISまたは何かと言いたいです。私はそれを明らかにすべきだった。
ネオ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.