首页 > 代码库 > apache调优隐藏版本信息及404重定向

apache调优隐藏版本信息及404重定向

生产环境中,部署了apache之后,我们应该从安全还是性能角度,在apache服务上线之前,对其做诸多的优化调试才行。

 

Apache

实验环境:

apache版本:httpd-2.2.31

源码包存放位置:/usr/local/src

源码包编译安装位置:apache:/usr/local/apache2.2-xuegod/

 

技巧1:

安装apache屏蔽apache版本等敏感信息

 

查看apache版本信息:

[root@yeyou ~]# curl -Iwww.baidu.com

。。。

X-Powered-By: HPHP

Server: BWS/1.1

X-UA-Compatible:IE=Edge,chrome=1

BDPAGETYPE: 1

BDQID: 0xcfd31d8200026e11

BDUSERID: 0

 

测试自己的网站看是什么版本?有没有相应的漏洞

 

[root@yeyou ~]# curl -Iwww.taobao.com

HTTP/1.1 302 Found

Server:Tengine  基于nginx做了二次开发

Date: Tue, 17 Nov 201502:22:06 GMT

Content-Type: text/html

Content-Length: 258

Connection: keep-alive

Location:https://www.taobao.com/

彻底让版本等敏感信息消失

要彻底将版本之类的信息进行改头换面,需要在编译之前修改源码包下include/ap_release.h文件

[root@yeyou httpd-2.2.25]#pwd

/usr/local/src

[root@yeyou src]# rm -rfhttpd-2.2.25

[root@yeyou src]# tar zxfhttpd-2.2.25.tar.gz

[root@yeyou src]# cdhttpd-2.2.25

[root@yeyou httpd-2.2.25]#vim include/ap_release.h  #修改源码中的版本信息为自己公司的相关信息,隐藏真实版本信息

改:

42 #define AP_SERVER_BASEVENDOR"Apache Software Foundation"

 43 #define AP_SERVER_BASEPROJECT "ApacheHTTP Server"

 44 #define AP_SERVER_BASEPRODUCT"Apache"

 45

 46 #define AP_SERVER_MAJORVERSION_NUMBER 2

 47 #define AP_SERVER_MINORVERSION_NUMBER 2

 48 #define AP_SERVER_PATCHLEVEL_NUMBER   25

 49 #define AP_SERVER_DEVBUILD_BOOLEAN    0

为:

#defineAP_SERVER_BASEVENDOR "xuegod"

#defineAP_SERVER_BASEPROJECT " web server"

#defineAP_SERVER_BASEPRODUCT " xuegod web server"

 

#defineAP_SERVER_MAJORVERSION_NUMBER 8

#defineAP_SERVER_MINORVERSION_NUMBER 1

#defineAP_SERVER_PATCHLEVEL_NUMBER   2

#defineAP_SERVER_DEVBUILD_BOOLEAN    3

注释:

#define AP_SERVER_BASEVENDOR"Apache Software Foundation" #服务的供应商名称

#define AP_SERVER_BASEPROJECT"Apache HTTP Server"  #服务的项目名称

#define AP_SERVER_BASEPRODUCT"Apache"        #服务的产品名

#define AP_SERVER_MAJORVERSION_NUMBER2  #主要版本号

#defineAP_SERVER_MINORVERSION_NUMBER 4  #小版本号

#defineAP_SERVER_PATCHLEVEL_NUMBER  6  #补丁级别

#defineAP_SERVER_DEVBUILD_BOOLEAN  0  #

注:上述列出的行,大家可以修改成自己想要的,然后编译安装之后,再对httpd-default.conf文件进行修改,对方就彻底不知道你的版本号了。

源码编译安装apache

[root@yeyou httpd-2.2.11]# yum installopenssl*

[root@yeyou httpd-2.2.25]#./configure --prefix=/usr/local/apache2.2-xuegod --enable-so --enable-rewrite--enable-ssl   --enable-deflate  --enable-expires   #检查安装环境并生成Makefile文件

 

配置参数用途:

--prefix=/usr/local/apache2.2   #指定安装路径

--enable-so  # 支持动态加载模

--enable-rewrite #支持网站地址重写

--enable-ssl # 支持ssl加密

--enable-deflate #支持页面传输前进行压缩

--enable-expires #支持设置网页缓存的时间

 

编译安装:make&& make install

 

查看安装后目录:

[root@yeyou httpd-2.2.25]# ls/usr/local/apache2.2-xuegod/conf/httpd.conf

/usr/local/apache2.2-xuegod/conf/httpd.conf

存放网站的根目录:

[root@yeyou httpd-2.2.25]#ls /usr/local/apache2.2-xuegod/htdocs/

index.html

修改默认首页内容:

[root@yeyou httpd-2.2.25]# echo apache-xuegod>> /usr/local/apache2.2-xuegod/htdocs/index.html

启动apache:

配置apache 可以开机启动并且可以使用service 命令启动apache服务器

[root@yeyou httpd-2.2.25]#cp /usr/local/apache2.2-xuegod/bin/apachectl /etc/init.d/apachectl-xuegod

 

启动apache:

[root@xuegod63httpd-2.2.25]# /etc/init.d/apachectl-xuegod start

 

测试:隐藏apache版本信息

curl -I192.168.1.63   #看不到apache版本相关内容了

HTTP/1.1 200 OK

Date: Sat, 29 Aug 201509:43:44 GMT

Server: xuegod web server/8.1.2-dev (Unix) mod_ssl/8.1.2-devOpenSSL/1.0.0-fips

Last-Modified: Sat, 29 Aug2015 09:37:36 GMT

ETag: "6d086-3a-51e6ff35dba19"

Accept-Ranges: bytes

Content-Length: 58

Content-Type: text/html

 

再次隐藏版本号和系统类型

接下来再次修改:

 

vim/usr/local/apache2.2-xuegod/conf/httpd.conf

405 #Includeconf/extra/httpd-default.conf

为:

Includeconf/extra/httpd-default.conf

 

2)打开httpd-default.conf文件,修改如下两个地方

vim/usr/local/apache2.2-xuegod/conf/extra/httpd-default.conf 

改:

55 ServerTokens Full

65 ServerSignature On    signature 签名

为:

ServerTokens Prod   #不显示服务器操作系统类型

ServerSignature Off   #不显示web服务器版本号

 

让apache配置文件生效的方法:

方法1:重启服务:restart      

方法2:不重启服务,重新加载配置文件

reload是nginx

/etc/init.d/apachectl-xuegod graceful     优雅的

测试:

curl -I192.168.1.63

HTTP/1.1 200 OK

Date: Thu, 14 Jan 201602:31:24 GMT

Server: xuegod web server

 

总结:

1,  安装之前改include/ap_release.h

2,  Httpd.conf    extra/httpd-default.conf去掉注释

3,  修改extra/httpd-default.conf

55 ServerTokens Full

65 ServerSignature On    signature 签名

为:

ServerTokens Prod   #不显示服务器操作系统类型

ServerSignature Off   #不显示web服务器版本号

 

2、错误页面优雅显示

为了提升网站的用户体验,避免404,403之类的丑陋的默认错误提示出现。

http://192.18.1.63/a.html

 

方法一:

vim/usr/local/apache2.2-xuegod/conf/httpd.conf  #在根目录的标签中添加以下红色标记内容。

132 <Directory"/usr/local/apache2.2-xuegod/htdocs">

。。。

在大约159行,插入:

     ErrorDocument 404 /404.html

160 </Directory>

注:#将404错误跳转到/usr/local/apache2.2-xuegod/htdocs下的404.html页面上

注:ErrorDocument的命令格式如下:

ErrorDocument 错误代码 跳转到的页面链接或文件

 

创建404测试页:

echo"404 go to home" > /usr/local/apache2.2-xuegod/htdocs/404.html

 

重启:

/etc/init.d/apachectl-xuegodrestart

 

 

方法2: 出错后,跳转到一个链接

vim/usr/local/apache2.2-xuegod/conf/httpd.conf  #在根目录的标签中添加以下红色标记内容。

132 <Directory"/usr/local/apache2.2-xuegod/htdocs">

。。。

在大约159行,插入:

     ErrorDocument 404 http://www.baidu.com

160 </Directory>

注:#将404错误跳转到http://www.baidu.com

 

重启:

/etc/init.d/apachectl-xuegod restart

apache调优隐藏版本信息及404重定向