回答:
サーバー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サーバーとモジュールを識別できるようにします。
ServerTokens
「Prod
」に設定すると、ヘッダーを「Server: Apache
」に減らすことができます。オプションの完全なリストについては、ドキュメントを参照してください。
注:設定は両方のバージョンで同じですが、2.4のドキュメントには次の注記が追加されています。
ServerTokensを最小値未満に設定することは、相互運用上の問題のデバッグがより困難になるため推奨されません。また、Server:ヘッダーを無効にしても、サーバーのセキュリティが強化されることはありません。「あいまいさによるセキュリティ」の考え方は神話であり、誤った安全感につながります。
「Apache」という単語を完全に削除する場合は、ソースを変更する必要があります。