澳门新浦京手机版如何在 HTTP 头中隐藏 PHP 版本号

通常,大多数默认设置安装的web服务器存在信息泄露,这其中之一就是PHP。PHP
是如今流行的服务端html嵌入式语言(之一?)。在如今这个充满挑战的时代,有许多攻击者会尝试发现你服务端的漏洞。因此,我会简单描述如何在Linux服务器中隐藏PHP信息。

问题:每当Apache2网站服务器返回错误页时(如,404 页面无法找到,403
禁止访问页面),它会在页面底部显示网站服务器签名(如,Apache版本号和操作系统信息)。同时,当Apache2网站服务器为PHP页面服务时,它也会显示PHP的版本信息。我如何在Apache2网站服务器上关闭这些网站服务器签名呢?

摘要:PHP配置默认允许服务器在
HTTP 响应头 X-Powered-By
中显示安装在服务器上的PHP版本。
出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你的服务器的攻击者知道你是否运行了php。

澳门新浦京手机版 1

透露网站服务器带有服务器/PHP版本信息的签名会带来安全隐患,因为你基本上将你系统上的已知漏洞告诉给了攻击者。因此,作为服务器加固的一个部分,强烈推荐你禁用所有网站服务器签名。

PHP 配置默认允许服务器在 HTTP 响应头X-Powered-By中显示安装在服务器上的
PHP 版本。

默认上expose_php默认是开的。关闭“expose_php”参数可以使php隐藏它的版本信息。

澳门新浦京手机版 2

出于服务器安全原因(虽然不是主要的要担心的威胁),建议你禁用或隐藏此信息,避免那些针对你的服务器的攻击者知道你是否运行了
PHP。

[root@centos66 ~]# vi /etc/php.ini

 

假设你服务器上安装的特定版本的 PHP
具有安全漏洞,而攻击者了解到这一点,他们将更容易利用漏洞并通过脚本访问服务器。

在你的php.ini, 定位到含有expose_php的那行把On设成Off:

禁用Apache网站服务器签名

禁用Apache网站服务器签名可以通过编辑Apache配置文件来实现。

在Debian,Ubunt或者Linux Mint上:

  1. $ sudo vi /etc/apache2/apache2.conf

在CentOS,Fedora,RHEL或者Arch
Linux上:

  1. $ sudo vi /etc/httpd/conf/httpd.conf

将下面两行添加到Apache配置文件底部。

ServerSignature Off

ServerTokens Prod

然后重启网站服务器以使修改生效:

  1. $ sudo service apache2 restart (Debian,UbuntuorLinuxMint)
  2. $ sudo service httpd restart (CentOS/RHEL 6)
  3. $ sudo systemctl restart httpd.service (Fedora,CentOS/RHEL 7,ArchLinux)

第一行‘ServerSignature
Off’使得Apache2网站服务器在所有错误页面上隐藏Apache版本信息。

澳门新浦京手机版 3

然而,若没有第二行的‘ServerTokens
Prod’,Apache服务器将仍然在HTTP回应头部包含详细的服务器标记,这会泄漏Apache的版本号。

澳门新浦京手机版 4

第二行‘ServerTokens
Prod
’所要做的是在HTTP响应头中将服务器标记压缩到最小。

因此,同时放置两行时,Apache将不会在页面中或者HTTP响应头中泄漏版本信息。

澳门新浦京手机版 5

 

在我以前的文章中,我已经展示了如何隐藏 apache
版本号,你已经看到如何不再显示
apache 的安装版本。但是如果你在你的 apache 服务器上运行
PHP,你还需要隐藏 PHP 的安装版本,这我们将在本文中展示。

expose_php = Off

隐藏PHP版本

另外一个潜在的安全威胁是HTTP响应头中的PHP版本信息泄漏。默认情况下,Apache网站服务器通过HTTP响应头中的“X-Powered-By”字段包含有PHP版本信息。如果你想要在HTTP头部中隐藏PHP版本,请使用文本编辑器打开php.ini文件,找到“expose_php
= On”这一行,将它改为“expose_php = Off”即可。

澳门新浦京手机版 6

在Debian,Ubunt或者Linux Mint上:

  1. $ sudo vi /etc/php5/apache2/php.ini

在CentOS,Fedora,RHEL或者Arch Linux上:

  1. $ sudo vi /etc/php.ini

expose_php = Off

最后,重启Apache2网站服务器来重新加载已更新的PHP配置文件。

现在,你不会再看到带有“X-Powered-By”字段的HTTP响应头了。

因此,在本文中,我们将解释如何隐藏或关闭服务器 HTTP 响应头中的 PHP
版本号。

在此之前,web服务器头看上去就像这样:

————————————-我是分割线

Ubuntu下Apache的Rewrite如何启用 
http://www.linuxidc.com/Linux/2010-10/29027.htm

Ubuntu 14.04中Apache 2.2升级到2.4后的几个要点
http://www.linuxidc.com/Linux/2015-01/111914.htm

Ubuntu 13.04 安装 LAMPVsftpdWebminphpMyAdmin 服务及设置
http://www.linuxidc.com/Linux/2013-06/86250.htm

CentOS 5.9下编译安装LAMP(Apache 2.2.44+MySQL 5.6.10+PHP 5.4.12)
http://www.linuxidc.com/Linux/2013-03/80333p3.htm

RedHat
5.4下Web服务器架构之源码构建LAMP环境及应用PHPWind
http://www.linuxidc.com/Linux/2012-10/72484p2.htm

LAMP源码环境搭建WEB服务器Linux+Apache+MySQL+PHP
http://www.linuxidc.com/Linux/2013-05/84882.htm

此设置可以在加载的 PHP
配置文件中配置。如果你不知道此配置文件在服务器上的位置,请运行以下命令找到它:

[root@centos66 ~]# curl -I http://www.ehowstuff.com/

HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.3
X-Pingback: http://www.ehowstuff.com/xmlrpc.php
Date: Wed, 11 Feb 2015 14:10:43 GMT
X-Page-Speed: 1.9.32.2-4321
Cache-Control: max-age=0, no-cache

————————————–分割线

Apache
的详细介绍
:请点这里
Apache
的下载地址
:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-04/115622.htm

澳门新浦京手机版 7

$ php-i|grep”Loaded Configuration File”

更改并重启 Web 服务后,php就不会在web服务头中显示版本了:

PHP 配置文件位置

HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.3
X-Pingback: http://www.ehowstuff.com/xmlrpc.php
Date: Wed, 11 Feb 2015 14:10:43 GMT
X-Page-Speed: 1.9.32.2-4321
Cache-Control: max-age=0, no-cache

—————-在CentOS/RHEL/Fedora上—————-

LCTT译注:除了 PHP 的版本之外,Web 服务器也会默认泄露版本号。如果使用
Apache 服务器,请参照此文章关闭Apache
版本显示;如果使用 Nginx
服务器,请在 http 段内加入server_tokens off;
配置。以上修改请记得重启相关服务。

LoadedConfigurationFile=>/etc/php.ini

—————-在Debian/Ubuntu/LinuxMint上—————-

LoadedConfigurationFile=>/etc/php/7.0/cli/php.ini

在对 PHP 配置文件进行任何更改之前,我建议您首先备份您的 PHP
配置文件,如下所示:

—————-在CentOS/RHEL/Fedora上—————-

$sudocp/etc/php.ini/etc/php.ini.orig

—————-在Debian/Ubuntu/LinuxMint上—————-

$sudocp/etc/php/7.0/cli/php.ini/etc/php/7.0/cli/php.ini.orig

用你最喜欢的编辑器,使用超级用户权限打开文件:

—————-在CentOS/RHEL/Fedora上—————-

$sudovi/etc/php.ini

—————-在Debian/Ubuntu/LinuxMint上—————-

$sudovi/etc/php/7.0/cli/php.ini

定位到关键词expose_php,并将值设置成Off:

expose_php=Off

保存并退出文件。之后,重启 web 服务器:

—————-使用SystemD—————-

$sudosystemctlrestart httpd

$sudosystemctlrestart

apache2

—————-使用SysVInit—————-

$sudoservice httpd restart

$sudoservice apache2 restart

最后,不过同样重要,使用下面的命令检查服务器 HTTP 响应头是否仍然显示你的
PHP 版本号。

$ lynx-head-mime_header

或者

$ lynx-head-mime_header

这里的标志含义是:

-head– 发送一个请求 mime 报头的 HEAD 请求。

-mime_header– 打印所提取文档的 MIME 标头及其源代码。

注意: 确保你系统中已经安装了命令行 web 浏览器 lynx。

更多PHP相关技术请搜索千锋PHP,做真实的自己,用良心做教育。

互联网+时代,时刻要保持学习,携手千锋PHP,Dream

It Possible。

发表评论

电子邮件地址不会被公开。 必填项已用*标注