隐藏Nginx或Apache以及PHP的版本号

当你配置完一台服务器后,并不是就可以高枕无忧了,由于软件难免会有漏洞,防止因为漏洞导致一些损失,所以说经常关注安全公告并及时升级服务器也是必要的。一般来说,黑客攻击服务器的首要步骤就是收集信息,比如说你的软件版本,这些将成为下一步有针对性攻击的依据。所以说一定程度的隐藏这些信息就显得非常有必要了,本文将简单介绍如何在网络上隐藏Nginx版本号以及PHP的版本号。

我们用命令测试一下,显示服务器上版本信息,命令如下:

1
curl -I http://127.0.0.1/phpinfo.php

结果显示了如下内容:

1
2
3
4
5
6
7
HTTP/1.1 200 OK
Server: nginx/1.5.0
Date: Thu, 18 Jun 2015 02:39:32 GMT
Content-Type: text/html
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.1

可以看到我们的服务器nginx和php版本都暴露了。那该如何隐藏版本号呢?
1.先说隐藏Nginx版本号,Nginx的版本号主要在两个地方会有,一个是HTTP header,有个Server:nginx/1.x.x类似会暴露Web服务器所用软件名称以及版本号,这个也是大多数Web服务器最容易暴露版本号的地方,第二个地方是Nginx出错页面,比如404页面没有找到等,这是如果用户没有指定页面的话,那么Nginx自己的页面会有版本戳记。
在nginx配置文件中http节的配置,加入以下代码:

1
2
3
4
http {
# ...省略一些配置
server_tokens off;
}

最后别忘了使用命令nginx -s reload刷新当前配置。完成后你可以查看所有页面的响应头或者错误页,看看是不是只看到nginx字样而看不到版本号?什么?你想连nginx也改掉?呵呵,这个恐怕就麻烦了,需要改动Nginx源代码然后重新编译,感兴趣的童鞋可以研究下!
在apache配置文件httpd.conf中,加入以下代码:

1
2
ServerTokens Prod
ServerSignature Off

记得保存后重启一下apache!

2.隐藏PHP的版本号,PHP容易暴露的版本号在什么地方呢?其实也是在HTTP头,以类似X-Powered-By: PHP/5.2.11这种形式存在。
其实这个是在PHP的配置文件php.ini里改动,打开php.ini,找到下面叙述:

1
2
3
4
5
6
; Decides whether PHP may expose the fact that it is installed on the server
; (e.g. by adding its signature to the Web server header). It is no security
; threat in any way, but it makes it possible to determine whether you use PHP
; on your server or not.
; http://php.net/expose-php
expose_php = On

expose_php = On改为expose_php = Off就搞定了,当然,对于apache服务器还有另外一个方法可以直接尝试在.htaccess文件中Header unset X-Powered-By,删除X-Powered-By节,不过我还是建议改动php.ini的expose_php。

  • 作者: Sam
  • 发布时间: 2017-11-13 22:40:48
  • 最后更新: 2019-12-09 23:03:26
  • 文章链接: https://ydstudios.gitee.io/post/adb014f8.html
  • 版权声明: 本网所有文章除特别声明外, 禁止未经授权转载,违者依法追究相关法律责任!