你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

手把手教你实战apache调优之隐藏版本号

2021/11/14 22:45:40

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

实验环境:

操作系统: centos7

apache版本:httpd-2.4.46

源码包编译安装位置: apache: /usr/local/apache2.4-jf-xin

隐藏apache版本信息

为什么要屏蔽apache版本信息?

答:因为黑客可以扫描出apache版本信息,可以查看对应的版本信息的漏洞,然后攻击

如何查apache版本信息?

查看主流网站的版本信息:

[root@jf-xin63 ~]# curl -I  baidu.com  #可以看到百度使用的是apache

[root@jf-xin63 ~]# curl -I www.tencent.com

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


HTTP/1.1 302 Found

Server: Tengine

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

扩展:Tengine web服务器是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。

模拟黑客根据查看出来版本号可以,查找漏洞:Apache/2.4.3 漏洞,所以我们必须隐藏版本号

image.png

源码编译安装apache

将httpd-2.4.46.tar.gz 上传到Linux系统中

[root@jf-xin63 ~]# tar zxvf httpd-2.4.46.tar.gz

[root@jf-xin63 ~]# tar zxvf httpd-2.4.46.tar.gz -C /usr/local/src/

[root@jf-xin63 ~]# cd /usr/local/src/httpd-2.4.46/

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

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

改:

40 #define AP_SERVER_BASEVENDOR "Apache Software Foundation"

 41 #define AP_SERVER_BASEPROJECT "Apache HTTP Server"

 42 #define AP_SERVER_BASEPRODUCT "Apache"

44 #define AP_SERVER_MAJORVERSION_NUMBER 2

 45 #define AP_SERVER_MINORVERSION_NUMBER 4

 46 #define AP_SERVER_PATCHLEVEL_NUMBER   27

 47 #define AP_SERVER_DEVBUILD_BOOLEAN    0

为:


40 #define AP_SERVER_BASEVENDOR "JF-xin"

 41 #define AP_SERVER_BASEPROJECT "web-server"

 42 #define AP_SERVER_BASEPRODUCT "jf"

 43

 44 #define AP_SERVER_MAJORVERSION_NUMBER 4

 45 #define AP_SERVER_MINORVERSION_NUMBER 4

 46 #define AP_SERVER_PATCHLEVEL_NUMBER   46

 47 #define AP_SERVER_DEVBUILD_BOOLEAN    0

注释:

#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@jf-xin63 ~]# cd /usr/local/src/httpd-2.4.46

安装apache依赖包:

[root@jf-xin63 httpd-2.4.46]# yum install apr-util apr-util-devel apr apr-devel pcre pcre-devel zlib zlib-devel openssl openssl-devel gcc* -y

[root@jf-xin63 httpd-2.4.46]# ./configure --prefix=/usr/local/apache2.4-jf-xin --enable-so --enable-rewrite --enable-ssl --enable-deflate --enable-expires #检查安装环境并生成Makefile文件

配置参数用途:

–prefix=/usr/local/apache2.4 #指定安装路径

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

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

–enable-ssl # 支持ssl加密,比如: https 443

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

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

[root@jf-xin63 httpd-2.4.46]# make -j 4 #把源代码编译成可执行的二进制文件。
安装:

[root@jf-xin63 httpd-2.4.46]# make install

启动apache:

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

[root@jf-xin63 httpd-2.4.46]# cp /usr/local/apache2.4-jf-xin/bin/apachectl /etc/init.d/apachectl-jf-xin

启动apache:

[root@jf-xin63 httpd-2.4.46]# /etc/init.d/apachectl-jf-xin start

[root@jf-xin63 httpd-2.4.46]# iptables -F

测试:

输入IP即可

image.png

测试:隐藏apache版本信息

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

HTTP/1.1 200 OK

Date: Thu, 06 May 2021 09:59:42 GMT

Server: jf/4.4.46 (Unix)

Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT

ETag: “2d-432a5e4a73a80”

Accept-Ranges: bytes

Content-Length: 45

Content-Type: text/html

可以看到,版本已经被隐藏了

总结:
隐藏版本号,是整个运维工作中最重要的一环,需要重点学习