有读者提问,只要Apache2网站服务器返回出错页面(比如404 not found或403 access forbidden pages),它就会在页面底部显示网站服务器签名(比如Apache版本号和操作系统信息)。此外,当Apache2网站服务器打开任何PHP页面时,同样会显示PHP版本信息。该如何关闭Apache2网站服务器中的这些网站服务器签名?
显示网站服务器签名以及服务器/PHP版本信息可能是个安全风险,因为你无异于将系统的已知安全漏洞告诉给了攻击者。因而,建议你禁用所有的网站服务器签名,这是服务器加固方法的一部分。
禁用Apache网站服务器签名
只要编辑Apache配置文件,就可以禁用Apache网站服务器签名。
在Debian、Ubuntu或Linux Mint上:
$ sudo vi /etc/apache2/apache2.conf
在CentOS、Fedora、RHEL或Arch Linux上:
$ sudo vi /etc/httpd/conf/httpd.conf
将下面这两行添加到Apache配置文件的末尾处:
ServerSignature Off
ServerTokens Prod
然后重启网站服务器,以激活变更:
$ sudo service apache2 restart (Debian, Ubuntu or Linux Mint)
$ sudo service httpd restart (CentOS/RHEL 6)
$ sudo systemctl restart httpd.service (Fedora, CentOS/RHEL 7, Arch Linux)
第一行“ServerSignature Off”让Apache2网站服务器隐藏任何出错页面上的Apache版本信息。
不过,要是没有第二行“ServerTokens Prod”,Apache服务器还是会将详细的服务器令牌添加到HTTP响应头,这会显示Apache版本号。
第二行“ServerTokens Prod”的作用是,抑制HTTP响应头中的服务器令牌,确保显示的信息尽可能少。
所以有了这两行,Apache就会不在网页或HTTP响应头中显示Apache版本信息。
隐藏PHP版本
另一个潜在的安全威胁是HTTP响应头中泄露的PHP版本信息。默认情况下,Apache网站服务器通过HTTP响应头里面的“X-Powered-By”字段,添加PHP版本信息。如果你想隐藏HTTP响应头中的PHP版本,不妨用文本编辑工具打开php.ini文件,找到“expose_php = On”,将其改成“expose_php = Off”。
在Debian、Ubuntu或Linux Mint上:
$ sudo vi /etc/php5/apache2/php.ini
在CentOS、Fedora、RHEL或Arch Linux上:
$ sudo vi /etc/php.ini expose_php = Off
最后,重启Apache2网站服务器,重新装入更新后的PHP配置文件。
现在你再也看不到HTTP响应头里面的“X-Powered-By”字段了。
英文:http://ask.xmodulo.com/turn-off-server-signature-apache-web-server.html