Varnishを使用していますが、Server: nginx
HTTPヘッダーも削除する必要があるかどうかはよくわかりません。なぜ誰かが私がNGINXを使用していることを知る必要があるのですか?このHTTPヘッダーを応答から削除してもいいですか、それともどこかで必要ですか?セキュリティの観点からすると、おそらくそうする方が良いでしょうか?
RFC 7231は サーバーヘッダー について述べています:
オリジンサーバーは、その応答にサーバーフィールドを生成する場合があります。
MAYは RFC 2119 のように解釈されます:
- この単語、または「オプション」という形容詞は、アイテムが本当にオプションであることを意味します。特定の市場で必要とされているため、または別のベンダーが同じアイテムを省略している間にベンダーが製品を強化していると感じるため、1つのベンダーがアイテムを含めることを選択する場合があります。特定のオプションを含まない実装は、おそらく機能が低下しますが、オプションを含む別の実装と相互運用できるように準備する必要があります。同様に、特定のオプションを含む実装は、オプションを含まない別の実装と相互運用できるように準備する必要があります(もちろん、オプションが提供する機能を除きます)。
したがって、Server応答ヘッダーを制限または削除しても問題ありません。もちろん、そうすることで何をあきらめているのかを認識することは良い考えです。そのためには、RFC 7231に戻ります。
「サーバー」ヘッダーフィールドには、要求を処理するためにオリジンサーバーが使用するソフトウェアに関する情報が含まれています。これは、報告された相互運用性の問題の範囲を特定し、特定のサーバーの制限を回避するために要求を回避または調整するためにクライアントがよく使用します。サーバーまたはオペレーティングシステムの使用に関する分析用。オリジンサーバーは、その応答にサーバーフィールドを生成する場合があります。
Server = product *( RWS ( product / comment ) )
Serverフィールド値は、1つ以上の製品IDで構成され、それぞれの後に0個以上のコメント([RFC7230]のセクション3.2)が続きます。これらのコメントにより、Originサーバーソフトウェアとその重要なサブ製品が識別されます。慣例により、製品IDは、Originサーバーソフトウェアを識別するための重要度の降順でリストされています。各製品IDは、セクション5.5.3で定義されているように、名前とオプションのバージョンで構成されます。
例:
Server: CERN/3.0 libwww/2.17
オリジンサーバーは、不必要に細かい詳細を含むサーバーフィールドを生成してはならず(SHOULD NOT)、サードパーティによるサブプロダクトの追加を制限する必要があります(SHOULD)。過度に長く詳細なサーバーフィールド値は、応答の待ち時間を増加させ、潜在的なセキュリティホールを攻撃者が見つけて悪用することを(わずかに)容易にする可能性がある内部実装の詳細を明らかにする可能性があります。
実際には、攻撃者は実際にはServer:ヘッダーをチェックしません。サーバーが脆弱であるかどうかを示すかどうかにかかわらず、彼らは知っているすべてのセキュリティエクスプロイトを試します。サーバーの削除:ヘッダーは、obscurityアクションによるセキュリティであり、ほとんど効果がありません。しかし、気分が良くなった場合、または上司や監査人からそうするよう指示された場合は、どうぞ。セキュリティの状態が大幅に改善されるとは期待しないでください。
たとえば、nmap
は、Server
ヘッダーをまったく送信しないように設定されている場合や、ヘッダーコンテンツが完全に偽の場合でも、かなり正確にWebサーバーを識別できます。 nmap -sV -P0 -p 80,443 <IP address>
でお試しください。
Server
HTTPヘッダーは、識別という1つの目的のみを果たします。それはあなたのウェブサイトを適切に実行するためにどこにも必要ではありません、そしてそれを削除することによって何も壊れることはありません。
内部サーバーインフラストラクチャを明らかにし、潜在的な侵入に役立つ可能性のあるセキュリティ情報を漏らします。
Webサーバーソフトウェアの知識を得た後、Server
HTTPヘッダーを介して、潜在的な侵入者はWebサーバーの既知の脆弱性を検索できます。次に、この情報を他の情報(スキャンなど)と組み合わせて使用して、適切な攻撃ベクトルを構築できます。
したがって、Server
ヘッダーをすべて削除することができます。 nginxで削除 。
設定に「server_tokens off」が含まれている場合(「nginx」しかないため「nginx/1.13.11」ではないため、そうであるように見えます)、そのままにしておいても構いません。今。この問題は、脆弱なバージョンがあり、悪意のある人がこの情報を使用して脆弱性を悪用した場合に発生する可能性がありますが、そのためには、nginxを一般に公開する必要があります。つまり、簡単に言えば、「server_tokens off;」を使用します。また、すべてのIPに対してnginxポートを開かないでください。ただし、ワニスのみのため、安全です。