當遠端請求傳送到你的 Apache Web 站群伺服器時,在預設情況下,一些有價值的資訊,如 web 站群伺服器版本號、站群伺服器作業系統詳細資訊、已安裝的 Apache 模組等等,會隨站群伺服器生成的檔案發回客戶端。
這給攻擊者利用漏洞並獲取對 web 站群伺服器的訪問提供了很多有用的資訊。為了避免顯示 web 站群伺服器資訊,我們將在本文中演示如何使用特定的 Apache 指令隱藏 Apache Web 站群伺服器的資訊。
兩個重要的指令是:
ServerSignature
這允許在站群伺服器生成的檔案(如錯誤訊息、 modproxy 的 ftp 目錄列表、 modinfo 輸出等等)下新增一個顯示站群伺服器名稱和版本號的頁尾行。
它有三個可能的值:
On – 允許在站群伺服器生成的檔案中新增尾部頁尾行,
Off – 禁用頁尾行
EMail – 建立一個 “mailto:” 引用;用於將郵件傳送到所引用檔案的 ServerAdmin 。
ServerTokens
它決定了傳送回客戶端的站群伺服器響應頭欄位是否包含站群伺服器作業系統型別的描述和有關已啟用的 Apache 模組的資訊。
此指令具有以下可能的值(以及在設定特定值時傳送到客戶端的示例資訊):
ServerTokens Full (或者不指定)
傳送給客戶端的資訊: Server: Apache/2.4.2 (Unix) PHP/4.2.2 MyMod/1.2
ServerTokens Prod[uctOnly]
傳送給客戶端的資訊: Server: Apache
ServerTokens Major
傳送給客戶端的資訊: Server: Apache/2
ServerTokens Minor
傳送給客戶端的資訊: Server: Apache/2.4
ServerTokens Min[imal]
傳送給客戶端的資訊:Server: Apache/2.4.2
ServerTokens OS
傳送給客戶端的資訊: Server: Apache/2.4.2 (Unix)
注意:在 Apache 2.0.44 之後,ServerTokens 也控制由 ServerSignature 指令提供的資訊。
為了隱藏 web 站群伺服器版本號、站群伺服器作業系統細節、已安裝的 Apache 模組等等,使用你最喜歡的編輯器開啟 Apache 配置檔案:
$ sudo vi /etc/apache2/apache2.conf #Debian/Ubuntu systems
$ sudo vi /etc/httpd/conf/httpd.conf #RHEL/CentOS systems
新增/修改/附加下面的行:
ServerTokens Prod
ServerSignature Off
儲存並退出檔案,重啟你的 Apache 站群伺服器:
$ sudo systemctl apache2 restart #SystemD
$ sudo sevice apache2 restart #SysVInit