博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
apache调优隐藏版本信息及404重定向
阅读量:6577 次
发布时间:2019-06-24

本文共 4804 字,大约阅读时间需要 16 分钟。

生产环境中,部署了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:

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

要彻底将版本之类的信息进行改头换面,需要在编译之前修改源码包下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之类的丑陋的默认错误提示出现。

 

方法一:

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 

160 </Directory>

注:#将404错误跳转到

 

重启:

/etc/init.d/apachectl-xuegod restart

转载于:https://www.cnblogs.com/yeyou/p/5975888.html

你可能感兴趣的文章
常用CSS
查看>>
【leetcode】946. Validate Stack Sequences
查看>>
【leetcode】538. Convert BST to Greater Tree
查看>>
【shell】sed指定追加模式空间的次数
查看>>
HTTP 返回码中 301 与 302 的区别
查看>>
51Nod1089最长回文子串 V2(Manacher算法)
查看>>
每个程序员都该学习的5种开发语言
查看>>
Android Studio发布Release版本之坑--Unknown host 'd29vzk4ow07wi7.cloudfront.net'
查看>>
java服务器获取客户端ip
查看>>
virtualbox直接搭建laravel开发环境可能遇到的坑
查看>>
c++ try throw catch
查看>>
Python编程系列教程第14讲——继承
查看>>
安利一款基于element的大数据树形表格
查看>>
git log
查看>>
Mint UI 使用采坑记
查看>>
数据库下载_Office下载
查看>>
leetcode-771-Jewels and Stones(建立哈希表,降低时间复杂度)
查看>>
字符串分割函数(New)
查看>>
第一阶段:前端开发_使用JS完成注册页面表单校验
查看>>
深入了解JavaScript对象(1)--原始类型和引用类型
查看>>