php 获取apache版本号,Apache/Nginx/PHP服务器隐藏版本号和系统 - 米扑博客

一般情况下,软件的漏洞信息和特定版本是相关的,因此,软件的版本号对攻击者来说是很有价值的。

在默认情况下,Apache Httpd,Nginx,PHP 等系统会把版本模块都显示出来(http返回头信息)。

如果列举目录的话,会显示域名信息,服务器版本号,操作系统类型等。

Apache 隐藏版本号

不隐藏版本号,正常访问返回客户端头信息:

[root@ithomer conf]#curl --head 127.0.0.1

HTTP/1.1 200 OK

Date: Thu, 22 Jan 2015 15:39:00 GMT

Server: Apache/2.2.26 (CentOS)

X-Powered-By: PHP/5.5.9

Vary: Cookie,Accept-Encoding,User-Agent

X-Pingback: https://blog.mimvp.com/xmlrpc.php

Cache-Control: max-age=600

Expires: Thu, 22 Jan 2015 15:49:00 GMT

Content-Type: text/html; charset=UTF-8

上面头信息中,会显示服务器类型和版本(Apache/2.2.26),以及操作系统(CentOS)

修改Apache的配置文件:

vim /etc/httpd/conf/httpd.conf

修改 ServerTokens

修改 ServerTokens OS 为 ServerTokens productonly

重启 Apache : /etc/init.d/httpd restart

再次返回头信息如下:

[root@ithomer conf]#curl --head 127.0.0.1

HTTP/1.1 200 OK

Date: Thu, 22 Jan 2015 15:40:53 GMT

Server: Apache

X-Powered-By: PHP/5.5.9

Vary: Cookie,Accept-Encoding,User-Agent

X-Pingback: https://blog.mimvp.com/xmlrpc.php

Cache-Control: max-age=600

Expires: Thu, 22 Jan 2015 15:50:53 GMT

Content-Type: text/html; charset=UTF-8

同时修改 ServerTokens为Prod和 ServerSignature 为off 返回结果

[root@ithomer conf]#curl --head 127.0.0.1

HTTP/1.1 200 OK

Date: Thu, 22 Jan 2015 16:23:07 GMT

Server: Apache

Vary: Cookie,Accept-Encoding,User-Agent

X-Pingback: https://blog.mimvp.com/xmlrpc.php

Cache-Control: max-age=600

Expires: Thu, 22 Jan 2015 16:33:07 GMT

Content-Type: text/html; charset=UTF-8

到这里,我们还可以改变apache的版本,这就要修改apache的源代码了

在apache的源码包中找到ap_release.h将

#define AP_SERVER_BASEPRODUCT "Apache"

修改为

#define AP_SERVER_BASEPRODUCT "Microsoft-IIS/5.0”

或者

#define AP_SERVER_BASEPRODUCT "Microsoft-IIS/6.0”

然后找到os/unix下的os.h文件,将其

#define PLATFORM "Unix"

修改为

#define PLATFORM "Win32"

然后重新编译,安装apache

最后修改 vim /etc/httpd/conf/httpd.conf 配置文件,添加两行

ServerTokens Prod// Prod 同ProductOnly

ServerSignature Off

在发送头请求,头信息就都被偷天换日了

从这点来说,php也是一样,同样可以通过这种方式改变一些系统信息。

附:

ServerSignature 三个选项,分别是 On | Off | EMail

ServerTokens 的取值如下,其分别隐藏信息依次增加

ProductOnly  :Server: Apache

Major:Server: Apache/2

Minor:Server: Apache/2.2

Minimal         :Server: Apache/2.2.26

OS                 :Server: Apache/2.2.26 (CentOS)

Full                :Server: Apache/2.2.26 (CentOS) DAV/2 PHP/5.5.9 SVN/1.6.11 mod_perl/2.0.4 Perl/v5.10.1

推荐: ServerTokens ProductOnly

Nginx 隐藏版本号

nginx 配置文件里增加 server_tokens off;

server_tokens作用域是http server location语句块

server_tokens默认值是on,表示显示版本信息,设置server_tokens值是off,就可以在所有地方隐藏nginx的版本信息。

http {

include blockip.conf;

include mime.types;

default_type application/octet-stream;

charset utf-8;

log_format main '$time_iso8601 $remote_addr - "$request_method $uri?$args" '

'$status $request_time $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

server_tokens off; # 隐藏Nginx版本号

....

}

修改 fastcgi.conf

vim vim /usr/local/nginx/conf/fastcgi.conf

修改

fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  SERVER_SOFTWARE    nginx;

最后,重启 nginx

/etc/init.d/nginx restart

PHP 隐藏版本号

配置文件php.ini进行配置,默认情况下 expose_php = On

httpd 修改步骤:

vim /etc/php.ini

expose_php = On

将其改为

expose_php = Off

重启 Apache:

/etc/init.d/httpd restart

nginx 修改步骤:

vim /usr/local/php/etc/php.ini

expose_php = On

将其改为

expose_php = Off

软连接配置文件:

ln -s /usr/local/php/etc/php.ini /usr/local/php/lib/php.ini    (注意细节)

重启 php-fpm:

/etc/init.d/php-fpm restart

获取头信息:

[root@ithomer conf]#curl --head 127.0.0.1

HTTP/1.1 200 OK

Date: Thu, 22 Jan 2015 16:15:48 GMT

Server: Apache

Vary: Cookie,Accept-Encoding,User-Agent

X-Pingback: https://blog.mimvp.com/xmlrpc.php

Cache-Control: max-age=600

Expires: Thu, 22 Jan 2015 16:25:48 GMT

Content-Type: text/html; charset=UTF-8

发现上面php版本信息(X-Powered-By: PHP/5.5.9)已经隐藏了

附上

修改Tomcat 服务器名称的头信息

修改Tomcat配置文件:

vim /opt/apache-tomcat-7.0.54/conf/server.xml

添加下面红色一行:

connectionTimeout="20000"

redirectPort="8443"server="MIServer"/>

查看Tomcat头信息:

[root@ithomer conf]#curl --head 127.0.0.1:8280

HTTP/1.1 200 OK

Content-Type: text/html;charset=ISO-8859-1

Transfer-Encoding: chunked

Date: Thu, 22 Jan 2015 16:30:20 GMT

Server: MIServer

发现上面Tomcat服务器名称已经修改为了 Server: MIServer

隐藏 Nexus 服务器的头信息

Nexus 默认运行在Jetty下,并且在头信息中曝露了版本号,如下:

[root@ithomer apache-tomcat-7.0.54]#curl --head 127.0.0.1:8081

HTTP/1.1 404 Not Found

Date: Fri, 23 Jan 2015 01:51:06 GMT

Cache-Control: must-revalidate,no-cache,no-store

Content-Type: text/html;charset=ISO-8859-1

Content-Length: 1267

Server: Jetty(8.1.11.v20130520)

由于Nexus服务运行在Jetty框架内,因此需要修改Jetty服务配置文件

修改jetty.xml配置文件 :

vim /opt/nexus-2.11.0/nexus-2.11.0-02/conf/jetty.xml

修改 sendServerVersion值由 true 为 false(不发送服务器版本信息),如下:

true

false

true

1000

重启Nexus服务:

/opt/nexus-2.11.0/nexus-2.11.0-02/bin/nexus restart

查看Nexus头信息:

[root@ithomer apache-tomcat-7.0.54]#curl --head 127.0.0.1:8081

HTTP/1.1 404 Not Found

Date: Fri, 23 Jan 2015 02:13:53 GMT

Cache-Control: must-revalidate,no-cache,no-store

Content-Type: text/html;charset=ISO-8859-1

Content-Length: 1267

修改完重启Nexus后,发现服务器版本信息 Server: Jetty(8.1.11.v20130520),已被隐藏了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值