玩过linxu的筒子都知道这个命令
curl –head www.0377joyous.com
[root@Joyous ~]# curl –head www.0377joyous.com HTTP/1.1 200 OK Date: Thu, 09 Aug 2012 11:27:47 GMT Server: Apache/2 X-Powered-By: PHP/5.2.17 X-Pingback: http://www.0377joyous.com/xmlrpc.php Vary: Accept-Encoding,User-Agent Content-Type: text/html; charset=UTF-8
这样可以看到服务器用apache以及php是5.2.17
当然你觉得没有必要隐藏这些信息,那就别向下看了~~
我用本机做实验
[root@Joyous ~]# curl –head 192.168.87.129 HTTP/1.1 200 OK Date: Thu, 09 Aug 2012 11:31:26 GMT Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.3.3 Connection: close Content-Type: text/html; charset=UTF-8
这个时候我想隐藏apache信息还有php信息
第一步:修改httpd.conf
ServerTokens Prod#这个下面有说明
ServerSignature Off#这个是隐藏系统
ServerSignature
指令允许您配置服务器端生成文档的页脚(错误信息、mod_proxy
的ftp目录列表、mod_info
的输出)。您启用这个页脚的原因主要在于处于一个代理服务器链中的时候,用户基本无法辨识出究竟是链中的哪个服务器真正产生了返回的错误信息。
附:ServerTokens 指令 说明: 配置服务器HTTP回应头 语法: ServerTokens Major|Minor|Minimal|ProductOnly|OS|Full 默认值: ServerTokens OS
ServerTokens Prod[uctOnly] 服务器会发送(比如说):Server:Apache ServerTokens Major 服务器会发送(比如说):Server:Apache/2 ServerTokens Minor 服务器会发送(比如说):Server:Apache/2.0 ServerTokens Min[imal] 服务器会发送(比如说):Server:Apache/2.0.41 ServerTokens OS 服务器会发送(比如说):Server: Apache/2.0.41 (Unix) ServerTokens Full (or not specified) 服务器会发送(比如说):Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
之后重启服务器,然后再使用curl –head 192.168.87.129
[root@Joyous ~]# curl –head 192.168.87.129 HTTP/1.1 200 OK Date: Thu, 09 Aug 2012 11:43:57 GMT Server: Apache X-Powered-By: PHP/5.3.3 Connection: close Content-Type: text/html; charset=UTF-8
第二步:隐藏php版本信息
修改php.ini
expose_php =On 改成 expose_php = Off
重启apache
然后再试试
[root@Joyous ~]# curl –head 192.168.87.129 HTTP/1.1 200 OK Date: Thu, 09 Aug 2012 11:47:01 GMT Server: Apache Connection: close Content-Type: text/html; charset=UTF-8
其实:apache也可以伪装成IIS,具体方法参考百度或者google。哈哈