如何在Ubuntu 16.04上移除Apache2的Server 回應標頭

前言

現今我們在Ubuntu 16.04上面安裝的Apache2在預設的使用下,會回傳Server的回應標頭。

當我們使用如curl等指令時,會得到如下的相關資訊:


curl -I your-domain.com | grep Server


Server: Apache/2.4.18 (Ubuntu)

如上這樣情形,會因此造成資訊洩漏,讓其他有心人士可以透過回應的標頭猜測出網站相關的訊息。為了防止這個情況的方式,我們需要安裝security2模組與設定。來隱藏這個訊息。

預先安裝的環境

我們使用的預先安裝環境的系統發行版本與Apache2版本為下列列表:


Ubuntu 16.04

Apache/2.4.18

安裝mod_security2

透過下面的指令,把mod_security2安裝起來


sudo apt-get update

sudo apt-get install libapache2-mod-security2

編輯mod_security2設定檔


sudo vim /etc/apache2/mods-enabled/security2.conf

見到下面的設定檔,在裡面加上一行(設定檔中有標注)


<IfModule security2_module>
# Default Debian dir for modsecurity's persistent data
SecDataDir /var/cache/modsecurity

# Include all the *.conf files in /etc/modsecurity.
# Keeping your local configuration in that directory
# will allow for an easy upgrade of THIS file and
# make your life easier
IncludeOptional /etc/modsecurity/*.conf

# 加入下面那一行

SecServerSignature " "
</IfModule>

重啟Apache2服務

依照先前的設定檔完成之後,下面跟著執行指令來重啟Apache2服務


sudo service apache2 restart

驗證Server回應標頭

我們再使用下面cURL指令來驗證回應標頭是否正確。


curl -I your-domain.com | grep Server

這時候就會發現改成下面的回應標頭了!


Server:

參考資料

  1. How to install mod_security in Apache 2.4
  2. How to remove “server” information from http-header in Apache 2.4