apache隐藏版本信息及设置网页缓存

d1e7225e40cd84bf9c7a38814e085d50476.jpg

实战:源码编译安装apache及调优技巧

查看apache安装版本

c4a4d63311ec37f50099948d17242928114.jpg

apache常见使用命令 : 

使用rpm -qa命令查看httpd是否已经安装。  

d67ed85a867057316fa1405aa9c3dceb311.jpg

用ps -ef命令可以查看httpd是否应运行。

4a5034c921f2823e4670e7e72748aeeb7d3.jpg

service httpd status命令,查看httpd的运行状态

ac883202927c07b4612b4051a2a3a9f2ab0.jpg

注意   :nginx和apache端口都是80端口,启动apache时,需要停掉nginx服务 ,pkill -9 nginx

停止nginx服务的方法 : 

1、查看进程号

# ps -ef|grep nginx

杀死进程

# kill -TERM 2132
或 # kill -INT 2132

33f10f060f3c8b8ca7144d74886aafd146c.jpg

2、强制停止

# pkill -9 nginx

 

实战环境:

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

技巧1:

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

启动apache

[root@localhost ~]# /etc/init.d/httpd start

查看apache版本信息:

[root@localhost ~]# curl -I www.baidu.com

。。。

X-Powered-By: HPHP

Server: bfe/1.0.8.18

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

BDPAGETYPE: 1

BDQID: 0xcfd31d8200026e11

BDUSERID: 0

2826992820dd1096beb46d7ce6ccdceab30.jpg

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

 

[root@localhost  ~]# curl -I www.taobao.com

HTTP/1.1 302 Found

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

Date: Tue, 17 Nov 2015 02:22:06 GMT

Content-Type: text/html

Content-Length: 258

Connection: keep-alive

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

 

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

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

[root@localhost  httpd-2.2.25]# pwd

/usr/local/src

 [root@localhost  src]# tar zxf httpd-2.2.31.tar.gz

 

[root@localhost  src]# cd httpd-2.2.31

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

改:

42 #define AP_SERVER_BASEVENDOR "Apache Software Foundation"

 43 #define AP_SERVER_BASEPROJECT "Apache HTTP 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

为:

#define AP_SERVER_BASEVENDOR "xuegod"

#define AP_SERVER_BASEPROJECT " web server"

#define AP_SERVER_BASEPRODUCT " xuegod web server"

 

#define AP_SERVER_MAJORVERSION_NUMBER 8

#define AP_SERVER_MINORVERSION_NUMBER 1

#define AP_SERVER_PATCHLEVEL_NUMBER   2

#define AP_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_NUMBER 2  #主要版本号

#define AP_SERVER_MINORVERSION_NUMBER 4  #小版本号

#define AP_SERVER_PATCHLEVEL_NUMBER  6  #补丁级别

#define AP_SERVER_DEVBUILD_BOOLEAN  0  #

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

源码编译安装apache

[root@localhost  httpd-2.2.11]# yum install openssl*

[root@localhost 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  #支持设置网页缓存的时间

 

配置参数用途:

--prefix=:指定安装目录

--enable-so:支持动态加载模块

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

--enable-cgi:支持CGI程序脚本

--enable-ssl:支持SSL加密

--enable-charset-lite:支持多语言编码

 

编译:

[root@localhost  httpd-2.2.25]# make -j  4  #把源代码编译成可执行的二进制文件。 

-j  4  #以4个进程同时编译。 以4核CPU同时编译,快

-j 4 听:1  没有:2

安装:

[root@localhost  httpd-2.2.25]# make install

启动apache:

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

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

 

启动apache:

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

测试:

95d51c71483f7977a28551ed74353eb5f5f.jpg

 

测试:隐藏apache版本信息

[root@localhost  ~]# curl -I 192.168.1.63   #看不到apache版本相关内容了

HTTP/1.1 200 OK

Date: Sat, 29 Aug 2015 09:43:44 GMT

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

Last-Modified: Sat, 29 Aug 2015 09:37:36 GMT

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

Accept-Ranges: bytes

Content-Length: 58

Content-Type: text/html

 

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

接下来再次修改:

[root@localhost  ~]#  vim /usr/local/apache2.2-xuegod/conf/httpd.conf

#Include conf/extra/httpd-default.conf

为:

Include conf/extra/httpd-default.conf

 

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

[root@localhost ~]#  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

[root@localhost ~]# /etc/init.d/apachectl-xuegod  -h          #apache服务配置信息

[root@localhost ~]# /etc/init.d/apachectl-xuegod graceful     优雅的重启,不影响业务,进行的连接;

测试:

[root@localhost ~]# curl -I 192.168.1.63

HTTP/1.1 200 OK

Date: Thu, 14 Jan 2016 02:31:24 GMT

Server: xuegod web server

 

优化技巧2:2mod_expires: 设置网页缓存时间

平时,我们大多数的图片,flash在发布之后都是不需要经常修改的,因此做了缓存之后,游览器第一次从服务器下载之后,就不需要再从服务器下载这些文件而是直接从游览器缓存中读取了。这样客户访问页面的速度就会大大加快,企业的带宽压力也得到了缓解。

实战: 对图片,flash缓存12个月

[root@localhost  ~]# vim /usr/local/apache2.2-xuegod/conf/httpd.conf  #在最后添加以下内容:

在57 <IfModule !mpm_netware_module>

58 <IfModule !mpm_winnt_module>

 

<IfModule mod_expires.c> 

ExpiresActive on

    ExpiresDefault "access plus 12 month"

    ExpiresByType text/html "access plus 12 months"

    ExpiresByType text/css "access plus 12 months"

    ExpiresByType image/gif "access plus 12 months"

    ExpiresByType image/jpeg "access plus  12 months"

    ExpiresByType image/jpg "access plus 12 months"

    ExpiresByType image/png "access plus 12 months"

    EXpiresByType application/x-shockwave-flash "access plus 12 months"

    EXpiresByType application/x-javascript "access plus 12 months"

ExpiresByType video/x-flv "access plus 12 months"

</IfModule>

重启服务:

[root@localhost  ~]# /etc/init.d/apachectl-xuegod restart

测试:

上传一张图片a.jpg 到/usr/local/apache2.2-xuegod/htdocs下:

[root@localhost  ~]# cp a.jpg /usr/local/apache2.2-xuegod/htdocs

 

访问:http://192.168.1.63/a.jpg

使用YSlow插件进行缓存效果查看。

 

缓存优化对企业来说是至关重要了的,不同的业务类型,对于缓存的类型和时间又各不相同,大家具体可以用YSlow对淘宝,京东,新浪,谷歌等站点进行测试,看看他们的缓存时间是多少,并思考下为什么那样设置。

查看天猫缓存时间:

dae8372bcdbd23bf7b5d9fb1fe022eb44ee.jpg

注:天猫解决被缓存文件及时更新的方法:对缓存的对象改名

 

虽然缓存的设置有如下优点

1.缩短服务的响应时间

2.减轻服务器负担

3.减少网络带宽使用量,降低企业成本

但是他的缺点也是显而易见的,由于使用了缓存设置,导致被缓存的内容更新了,但是客户看到的却还是旧的。

 

第一种:缩短缓存时间例如:1天,不彻底牺牲性能

第二种:对缓存的对象改名。

 

总结:

优化1 : 隐藏apache版本号,让黑客找不漏洞

优化2:开启缓存功能,节省服务器开销

 

apache一共有32处调优

 

 

 

转载于:https://my.oschina.net/u/3803405/blog/3052080

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值