質問: 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をコンパイルする以外に何も見つかりませんでした。知らない方法があるかしら?
回答: 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リファレンスマニュアル