Nginx

從安全形度來看,刪除 Server HTTP 標頭是否有意義?

  • August 11, 2018

我正在使用 Varnish,我不太確定是否還應該刪除Server: nginxHTTP 標頭。為什麼有人需要知道我在使用 NGINX?可以從響應中刪除此 HTTP 標頭還是在某個地方需要它?從安全的角度來看,這樣做可能會更好?

RFC 7231 說明了 Server 標頭

源伺服器可以在其響應中生成一個伺服器欄位。

MAY 在RFC 2119中被解釋為:

  1. MAY 這個詞,或形容詞“OPTIONAL”,意味著一個項目是真正可選的。一個供應商可能會選擇包含該項目,因為特定市場需要它,或者因為供應商認為它增強了產品,而另一個供應商可能會省略相同的項目。不包含特定選項的實現必須準備好與另一個包含該選項的實現互操作,儘管功能可能有所減少。同樣,包含特定選項的實現必須準備好與不包含該選項的另一個實現互操作(當然,選項提供的功能除外。)

因此,限製或刪除伺服器響應標頭是完全可以的。當然,了解這樣做可能會放棄什麼是個好主意。為此,請返回 RFC 7231:

“Server”標頭欄位包含有關原始伺服器用於處理請求的軟體的資訊,客戶端通常使用該軟體來幫助辨識報告的互操作性問題的範圍,以解決或定制請求以避免特定的伺服器限制,以及用於有關伺服器或作業系統使用的分析。源伺服器可以在其響應中生成一個伺服器欄位。

Server = product *( RWS ( product / comment ) )

伺服器欄位值由一個或多個產品標識符組成,每個標識符後跟零個或多個評論(第 3.2 節)

$$ RFC7230 $$),它們共同標識原始伺服器軟體及其重要的子產品。按照慣例,產品標識符按其在辨識源伺服器軟體的重要性的降序排列。每個產品標識符由名稱和可選版本組成,如第 5.5.3 節中所定義。

例子:

Server: CERN/3.0 libwww/2.17

源伺服器不應該生成包含不必要的細粒度細節的伺服器欄位,並且應該限制第三方添加子產品。過長和詳細的伺服器欄位值會增加響應延遲,並可能會洩露內部實現細節,這可能使攻擊者(稍微)更容易找到和利用已知的安全漏洞。


儘管在實踐中,攻擊者並沒有真正檢查 Server: 標頭。他們只是嘗試他們知道的每一個安全漏洞,無論您的伺服器是否有任何易受攻擊的跡象。刪除 Server: 標頭是一種隱蔽操作的安全性,並且幾乎完全無效。但如果它讓你感覺更好,或者你的老闆或審計師告訴你這樣做,那就去做吧。只是不要指望它會顯著改善您的安全狀況。

例如,nmap即使它被配置為根本不發送Server標頭,或者標頭內容完全是虛假的,它也可以相當準確地辨識 Web 伺服器。自己嘗試一下nmap -sV -P0 -p 80,443 <IP address>

引用自:https://serverfault.com/questions/925892