LAMP调优 - 1 - 隐藏版本号

11 篇文章 0 订阅

一、环境描述:

在上一篇博文中通过源码安装了LAMP,打上快照,此文章基于LAMP源码安装后调优。调优部分是相对独立的,随着自己的环境可以灵活运用。在生产环境中,部署了apache之后,无论从安全还是性能角度考虑,在apache服务上线之前,需要做诸多的优化调试才行。这些优化会涉及到效率问题以及用户体验等问题。

恢复实验环境:
在这里插入图片描述

操作系统:Centos 7.6.1810
Apache版本 : httpd-2.4.16
PHP版本:php5.6.13
源码包存放位置:/usr/local/src/
源码包编译安装位置:
Apache :/usr/local/apache2.4
PHP :/usr/local/php
Mysql : /usr/local/mysql

检查服务端口是否正常:
在这里插入图片描述

为什么需要隐藏?

因为所有的攻击渗透,都是基于Apache或者Nginx的版本的bug来进行的,所以在优化内容中,出于安全的考虑,需要将Apache的版本号隐藏掉。

使用Curl来测试百度和淘宝的网站,可以查看到Server的情况,百度是隐藏掉了,而淘宝使用了301的重定向,实际上访问的是淘宝的代理服务器,Tengine是Nginx的二次开发。

在这里插入图片描述

访问我们目前的环境,可以看到使用的Apache的版本是2.4.16,以及PHP版本,导致我们黑客想攻击的话,是非常容易的,所以需要隐藏掉该内容!

在这里插入图片描述

二、隐藏Server里面的内容

隐藏Server信息是需要修改源码包内容,然后重新进行预编译安装!所以现在需要将整个的源码delete掉,重新修改编译安装!

1、删除源码安装包解压之后的文件

[root@Lamp src]# rm -rf ./httpd-2.4.16

2、删除Apache安装的内容,

[root@Lamp src]# rm -rf /usr/local/apache2.4

3、重新解压Apache安装包到/usr/local/src/下面

[root@Lamp src]# tar xf /opt/httpd-2.4.16.tar.bz2 -C 

4、在重新编译安装之前,就需要修改安装包里的include/ap_release.h文件内容,如下:
文件绝对路径:/usr/local/src/httpd-2.4.16/include/ap_release.h

修改前:

在这里插入图片描述
7行内容说明:

#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   16
##补丁级别
#define AP_SERVER_DEVBUILD_BOOLEAN    0

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

修改后:

这7行自己随便写

在这里插入图片描述

5、重新预编译安装

预编译:

[root@Lamp httpd-2.4.16]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --enable-deflate --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mpms-shared=all --with-mpm=event

#注:–sysconfdir=/etc/httpd 表示将Apache配置文件放在/etc/httpd。如果不写,默认情况下,配置文件会在安装路径/usr/local/apache下面。

编译&&安装:

[root@Lamp httpd-2.4.16]# make -j4 && make install -j4

补充内容:
restart 等价于stop & start ——容易引起用户404错误
reload 平滑重启 用户无感知 ——Nginx支持 Apache不支持
graceful ——Apache里面的平滑重启
apachectl -t ——检测apache配置文件语法是否有错
apachectl -M ——检测支持的模块

6、删除原来的apache的启动文件,并且将新安装的apache的启动文件软连接过去!

[root@Lamp httpd-2.4.16]# rm -rf /etc/init.d/apachectl 
[root@Lamp httpd-2.4.16]# ln -s /usr/local/apache/bin/apachectl /etc/init.d/

7、修改Apache配置文件,并重启Apache!

配置文件路径,是在预编译的时候设置的/etc/httpd/,如果不设置会在安装路径下/usr/local/apache ,

[root@Lamp httpd-2.4.16]# vim /etc/httpd/httpd.conf

在这里插入图片描述

在重启的时候出现如下报错,是因为之前的Apache没有停止!

[root@Lamp httpd-2.4.16]# /etc/init.d/apachectl restart

利用kill命令将httpd的进程全部杀掉:

在这里插入图片描述
杀掉Apache所有进程之后,80的监听端口就关闭了!

在这里插入图片描述
重新启动Apache:

[root@Lamp httpd-2.4.16]# /etc/init.d/apachectl start

8、使用Curl重新测试

目前Server里的参数,是我们在之前步骤中设置的,但是所在平台Unix还是能够显示出来。

在这里插入图片描述
9、修改Apache配置文件,和 httpd-default.conf 隐藏掉一些内容!

[root@Lamp httpd-2.4.16]# vim /etc/httpd/httpd.conf

将#号取消掉,让 Include /etc/httpd/extra/httpd-default.conf 配置生效!

在这里插入图片描述
编辑httpd-default.conf 文件,路径如下:

该路径是在预编译的时候由–sysconfdir参数设置的配置文件路径:

[root@Lamp httpd-2.4.16]# vim /etc/httpd/extra/httpd-default.conf

修改前

在这里插入图片描述

参数说明:

下面是ServerTokens的一些可能的赋值:

ServerTokens Prod   表示显示“Server:Apache”
ServerTokens Major  表示显示“Server:Apache/2”
ServerTokens Minor  表示显示“Server:Apache/2.2”
ServerTokens Min    表示显示“Server:Apache/2.2.17”
ServerTokens OS     表示显示“Server:Apache/2.2.17(Unix)”
ServerTokens Full   表示显示“Server:Apache/2.2.17(Unix)PHP/5.3.5”  (如果你这指定任何值,这个是默认的返回信息)

修改后:

在这里插入图片描述

10、重启Apache,并使用Curl进行测试,发现Server内容里的版本以及Unix都被隐藏掉了,只剩余一个Server名称,是之前在编译安装之前修改ap_release.h 进行设置的内容。如下:

在这里插入图片描述

到此为止,Apache隐藏版本号内容就结束了!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值