當遠端請求發送到你的 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
本篇中,我們解釋了如何使用特定的 apache 指令隐藏apache web 伺服器版本号及其他資訊。
如果你在 apache 中運作 php,我建議你隐藏 php 版本号。
如往常一樣,你可以在評論欄中寫下你的想法。
作者簡介:
aaron kili 是 linux 和 f.o.s.s 愛好者,将來的 linux sysadmin 及 web 開發者,目前是 tecmint 的内容創作者,他喜歡用電腦工作,并堅信分享知識。
作者:aaron kili
來源:51cto