今天发现使用站长工具或一些相关的工具可以直接查看到服务器所使用的php版本号与apache版本号了,这样对于网站来讲很不安全了,如果这些版本出现问题有些人就可以直接搞定了,下面我们看看隐藏版本的方法,可惜的是在windows下我暂时还没找到解决办法.
隐藏PHP版本
为了安全起见,最好还是将PHP版本隐藏,以避免一些因PHP版本漏洞而引起的攻击.
1、隐藏PHP版本就是隐藏 “X-Powered-By: PHP/5.2.13″ 这个信息.
方法很简单:编辑php.ini配置文件,修改或加入: expose_php = Off 保存后重新启动Nginx或Apache等相应的Web服务器即可.代码如下:
- [root@bkjz /]# curl -I www.phpfensi.com
- HTTP/1.1 200 OK
- Server: nginx
- Date: Tue, 20 Jul 2010 05:45:13 GMT
- Content-Type: text/html; charset=UTF-8
- Connection: keep-alive
- Vary: Accept-Encoding
已经彻底隐藏了PHP版本.
隐藏Apache版本号
一般情况下,软件的漏洞信息和特定版本是相关的,因此,软件的版本号对攻击者来说是很有价值的.
在默认情况下,系统会把Apache版本模块都显示出来,http返回头信息,如果列举目录的话,会显示域名信息,文件列表正文,代码如下:
- [root@localhost tmp]# curl -I 192.168.80.128:88
- HTTP/1.1 403 Forbidden
- Date: Wed, 21 Jul 2010 13:09:33 GMT
- Server: Apache/2.2.15 (CentOS)
- Accept-Ranges: bytes
- Content-Length: 5043
- Connection: close
- Content-Type: text/html; charset=UTF-8
隐藏方法:1、隐藏Apache版本号的方法是修改Apache的配置文件,如RedHat系的Linux默认是如下代码:
vim /etc/httpd/conf/httpd.conf
分别搜索关键字ServerTokens和ServerSignature,修改.
ServerTokens OS 修改为 ServerTokens ProductOnly
ServerSignature On 修改为 ServerSignature Off
2、重启或重新加载Apache就可以了,代码如下:
apachectl restart
测试一下,代码如下:
- [root@localhost tmp]# curl -I 192.168.80.128:88
- HTTP/1.1 403 Forbidden
- Date: Wed, 21 Jul 2010 13:23:22 GMT
- Server: Apache
- Accept-Ranges: bytes
- Content-Length: 5043
- Connection: close
- Content-Type: text/html; charset=UTF-8
版本号与操作系统信息已经隐藏了.
3、上面的方法是默认情况下安装的Apache,如果是编译安装的,还可以用修改源码编译的方法.
进入Apache的源码目录下的include目录,然后编辑ap_release.h这个文件,你会看到有如下变量:
- #define AP_SERVER_BASEVENDOR “Apache Software Foundation”
- #define AP_SERVER_BASEPROJECT “Apache HTTP Server”
- #define AP_SERVER_BASEPRODUCT “Apache”
-
- #define AP_SERVER_MAJORVERSION_NUMBER 2
- #define AP_SERVER_MINORVERSION_NUMBER 2
- #define AP_SERVER_PATCHLEVEL_NUMBER 15
- #define AP_SERVER_DEVBUILD_BOOLEAN 0
可以根据自己喜好,修改或隐藏版本号与名字,在windows下隐藏apache与php版本号的方法我暂时还没找到,找到会在下面更新. |