在Apache - PHP的部署中,Apache響應消息header中的Server帶有Apache的版本資訊,如下:
這在生産環境中是有潛在危險的,可以被掃描出所使用的版本,如果這個版本具有已知的漏洞,别人很容易進行攻擊,是以要隐藏Apache的相關資訊。
同樣在Apache的錯誤傳回頁面中,也包含同樣的資訊。除了Apache的資訊外,還包括ip位址和端口,對于通過Nginx或者代理的生産環境,這會暴露内部的組網,如果使用的是其他人也用的雲端部署,暴露内部情況就可能有隐患。
是以,我們需要在Apache的配置中将有關顯示給隐藏。在配置檔案,無論是apache2.conf還是httpd.conf,加上下面配置:
# 解決問題1
ServerTokens ProductOnly
# 解決問題2:隐藏最下的一欄,該欄資訊中Apache資訊顯示情況将根據ServerTockens的配置
ServerSignature Off
參考網上資料http://www.jb51.net/article/34536.htm,相關說明摘要如下。這裡需要補充的是下面講的預設配置是利用直接從Apache網站下載下傳和安裝的情況,對于ubuntu server通過apt-get方式安裝,則不一定,可能是ServerSignature On,ServerTokens OS。
---------
ServerTokens指令
文法:ServerTokens Major | Minor | Min[imal] | Prod[uctOnly] | OS | Full
預設:ServerTokens Full
這個指令用來控制伺服器回應給用戶端的“Server:”應答頭是否包含關于伺服器作業系統類型和編譯進的子產品描述資訊。
ServerTokens Prod[uctOnly]:伺服器會發送(比如):Apache
Apache Server at 192.168.120.240 Port 80
ServerTokens Major:伺服器會發送(比如):Apache/2
Apache/2 Server at 192.168.120.240 Port 80
ServerTokens Minor:伺服器會發送(比如):Apache/2.2
Apache/2.2 Server at 192.168.120.240 Port 80
ServerTokens Min[imal]:伺服器會發送(比如):Apache/2.2.11
Apache/2.2.11 Server at 192.168.120.240 Port 80
ServerTokens OS:伺服器會發送(比如):Apache/2.2.11(Unix)
Apache/2.2.11 (Unix) Server at 192.168.120.240 Port 80
ServerTokens Full:伺服器會發送(比如):Apache/2.2.11(Unix)PHP/5.2.8
Apache/2.2.11 (Unix) PHP/5.2.8 Server at 192.168.120.240 Port 80
ServerSignature指令
文法:ServerSignature . | Off | Email
預設:ServerSignature Off
這個指令用來配置伺服器端生成文檔的頁腳(錯誤資訊、mod_proxy的FTP目錄清單、mod_info的輸出)。使用該指令來啟用這個頁腳主要在于處于一個代理伺服器鍊中的時候,使用者基本無法辨識出究竟是鍊中的哪個伺服器真正産生了傳回的錯誤資訊。
相關連結:開發日志