生产环境中,部署了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 漏洞,所以我们必须隐藏版本号
源码编译安装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即可
测试:隐藏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
可以看到,版本已经被隐藏了
总结:
隐藏版本号,是整个运维工作中最重要的一环,需要重点学习