LAMP环境调优-apache调优-隐藏apache版本信息

实验的环境

LAMP环境:
操作系统: centos7.4
apache版本:httpd-2.4.10
PHP版本:  php5.6.32
源码包存放位置:/usr/src
源码包编译安装位置:
apache: /usr/local/apache/
php:/server/php-5.4
mysql:/server/mysql-5.5/

1  隐藏apache版本信息

屏蔽apache版本等敏感信息

查看apache版本信息:
[root@yunzu63 ~]# curl -I 192.168.1.63
HTTP/1.1 200 OK
Date: Thu, 25 Jan 2018 12:52:58 GMT
Server: Apache/2.4.10 (Unix)
Last-Modified: Mon, 11 Jun 2007 18:53:14 GMT
ETag: “2d-432a5e4a73a80”
Accept-Ranges: bytes
Content-Length: 45
Content-Type: text/html

[root@yunzu63 ~]# curl -I www.baidu.com
HTTP/1.1 200 OK
Server: bfe/1.0.8.18
Date: Thu, 25 Jan 2018 08:26:08 GMT
Content-Type: text/html
Content-Length: 277
Last-Modified: Mon, 13 Jun 2016 02:50:08 GMT
Connection: Keep-Alive
ETag: “575e1f60-115”
Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
Pragma: no-cache
Accept-Ranges: bytes0

[root@yunzu63 ~]# curl -I www.taobao.com
HTTP/1.1 302 Found
Server: Tengine
Date: Tue, 17 Nov 2015 02:22:06 GMT
Content-Type: text/html
Content-Length: 258
Connection: keep-alive
Location: https://www.taobao.com/
Set-Cookie: thw=cn; Path=/; Domain=.taobao.com; Expires=Wed, 16-Nov-16 02:22:06 GMT;

1、我们在apache主配置文件httpd.conf中,找到包含httpd-default.conf的行,并解开注释
[root@yunzu63 ~]# vim /etc/conf/httpd.conf
475 #Include conf/extra/httpd-default.conf
为:
Include conf/extra/httpd-default.conf
注意:编译安装的情况下,只有此行解开注释了,后面的修改才能生效。

2)打开httpd-default.conf文件,修改如下两个地方
[root@yunzu63 ~]# vim /etc/httpd/extra/httpd-default.conf
改:
55 ServerTokens Full
65 ServerSignature On
为:
ServerTokens Prod
ServerSignature Off
注:
服务器标记产品
服务器签名

重启服务:
[root@yunzu63 ~]#systemctl restart httpd
测试:
[root@yunzu63 ~]# curl -I 192.168.1.63
HTTP/1.1 200 OK
Date: Sat, 29 Aug 2015 09:07:00 GMT
Server: Apache
X-Powered-By: PHP/5.4.14
Content-Type: text/html
注:还是会出现信息:Server: Apache

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

要彻底将版本之类的信息进行改头换面,需要在编译之前做准备或者进行重新编译了。在重新编译时,修改源码包下include目录下的ap_release.h文件
[root@yunzu63 httpd-2.4.10]# pwd
/usr/src
[root@yunzu63 src]# rm -rf httpd-2.4.10
[root@yunzu63 src]# tar zxf httpd-2.4.10.tar.bz2
[root@yunzu63 src]# cd httpd-2.4.10
[root@yunzu63 httpd-2.4.10]# 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”
 43
 44 #define AP_SERVER_MAJORVERSION_NUMBER 2
 45 #define AP_SERVER_MINORVERSION_NUMBER 4
 46 #define AP_SERVER_PATCHLEVEL_NUMBER   25
 47 #define AP_SERVER_DEVBUILD_BOOLEAN    0
为:
#define AP_SERVER_BASEVENDOR “yunzu”
#define AP_SERVER_BASEPROJECT “web server”
#define AP_SERVER_BASEPRODUCT “web”
#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 8  #主要版本号
#define AP_SERVER_MINORVERSION_NUMBER 1  #小版本号
#define AP_SERVER_PATCHLEVEL_NUMBER  2  #补丁级别
#define AP_SERVER_DEVBUILD_BOOLEAN  3  #
注:上述列出的行,大家可以修改成自己想要的,然后编译安装之后,再对httpd-default.conf文件进行修改,对方就彻底不知道你的版本号了。

源码编译安装apache

[root@yunzu63 httpd-2.4.10]# pwd
/usr/local/src/httpd-2.4.10
[root@yunzu63 httpd-2.2.11]# yum install openssl-devel pcre-devel
[root@yunzu63 httpd-2.4.10]# ./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

注解:
     --prefix=/usr/local/apache          //指定程序安装路径
     --sysconfdir=/etc/httpd          //指定配置文件、或工作目录
     --enable-so          //开启基于DSO动态装载模块
     --enable-ssl          //开启支持ssl协议
     --enable-cgi          //开启cgi机制 
     --enable-rewrite          //开启支持URL重写
      --with-zlib               //zlib是网络上发送数据报文的通用压缩库的API,在apache调用压缩工具压缩发送数据时需要调用该库
      --with-pcre               //支持PCRE,把pcre包含进程序中,(此处没指定pcre程序所在路径,默认会在PATH环境下查找)
      --with-apr=/usr/local/apr          //指定apr位置
      --with-apr-util=/usr/local/apr-util          //指定apr-util
      --enable-mod eles=most          //启动模块,all表示所有,most表示常用的
      --enable-mpms-shared=all     //启动所有的MPM模块
      --with-mpm=event          //指定默认使用event模块

编译:
[root@yunzu63 httpd-2.4.10]# make -j  4
安装:
[root@yunzu63 httpd-2.4.10]# make install

查看配置文件:
[root@yunzu63 httpd-2.4.10]# ls /etc/httpd/httpd.conf
/etc/httpd/httpd.conf
存放网站的根目录:
[root@yunzu63 httpd-2.4.10]# ls /usr/local/apache/htdocs/index.html
/usr/local/apache/htdocs/index.html
修改默认首页内容:
httpd-2.4.10

启动apache:
配置apache 可以开机启动并且可以使用systemctl 命令启动apache服务器
[root@yunzu63 httpd-2.4.10]# vim /usr/lib/systemd/system/httpd.service

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=man:httpd(8)
Documentation=man:apachectl(8)

[Service]
Type=forking
EnvironmentFile=/etc/httpd/httpd.conf
ExecStart=/usr/local/apache/bin/apachectl
ExecRestart=/usr/local/apache/bin/apachectl restart
ExecStop=/usr/local/apache/bin/apachectl stop
KillSignal=SIGCONT
PrivateTmp=true

[Install]
WantedBy=multi-user.target

重新加载unit文件:
[root@yunzu63 httpd-2.4.10]# systemctl daemon-reload
设置开机自动启动:
[root@yunzu63 httpd-2.4.10]# systemctl enable httpd
启动apache:
[root@yunzu63 httpd-2.4.10]# systemctl start httpd

测试:

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

[root@yunzu63 httpd-2.4.10]# curl -I 192.168.1.63
HTTP/1.1 200 OK
Date: Thu, 25 Jan 2018 08:57:02 GMT
Server: web/8.1.2-dev (Unix)
Last-Modified: Thu, 25 Jan 2018 08:50:11 GMT
ETag: “e-56395de1913d7”
Accept-Ranges: bytes
Content-Length: 14
Content-Type: text/html

接下来再次修改:
[root@yunzu63 ~]# vim /etc/httpd/httpd.conf
475 #Include conf/extra/httpd-default.conf
为:
Include conf/extra/httpd-default.conf
2、打开httpd-default.conf文件,修改如下两个地方
[root@yunzu63 ~]#  vim  /etc/httpd/extra/httpd-default.conf 
改:
55 ServerTokens Full
65 ServerSignature On
为:
ServerTokens Prod
ServerSignature Off

重启服务:
[root@yunzu63 ~]# systemctl restart httpd
测试:
[root@yunzu63 ~]# curl -I http://192.168.1.63/
HTTP/1.1 200 OK
Date: Sat, 29 Aug 2015 09:55:31 GMT
Server: web
Last-Modified: Sat, 29 Aug 2015 09:37:36 GMT
ETag: “6d086-3a-51e6ff35dba19”
Accept-Ranges: bytes
Content-Length: 58
Content-Type: text/html

查看运行apache的默认用户

我们通过更改apache的默认用户,可以提升apache的安全性。这样,即使apache服务被攻破,黑客拿到apache普通用户也不会对系统和其他应用造成破坏。这里创建的apache用户,将用于对子进程和线程的控制。
[root@yunzu63 httpd-2.4.10]# lsof -i :80
注:默认使用daemon用户是安全的。
[root@yunzu63 ~]# ps -axu | grep httpd
[root@yunzu63 ~]# id daemon 
uid=2(daemon) gid=2(daemon) groups=2(daemon),1(bin),4(adm),7(lp)
[root@yunzu63 ~]# grep daemon /etc/passwd
daemon❌2:2:daemon:/sbin:/sbin/nologin

[root@yunzu63 ~]# useradd -M -s /sbin/nologin apache
-M:不要自动建立用户的登入目录。
编辑apache配置文件,修改默认的用户。
[root@c64-web /]# vim /etc/httpd/httpd.conf
161 User daemon
162 Group daemon
为:
User apache
Group apache

[root@yunzu63 httpd-2.4.10]# lsof -i :80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   54066   root    4u  IPv6  64673      0t0  TCP *:http (LISTEN)
httpd   54083 apache    4u  IPv6  64673      0t0  TCP *:http (LISTEN)
httpd   54084 apache    4u  IPv6  64673      0t0  TCP *:http (LISTEN)
httpd   54085 apache    4u  IPv6  64673      0t0  TCP *:http (LISTEN)

apache目录及文件权限设置, 不能给777权限

在生产环境的网站架构中,我们应把资源文件的权限做好配置。
例:用户上传的图片及附件等和程序做好分离。这样才能更方便我们做好授权,保证apache服务和整个服务器安全。

这里我们设置apache的网站目录属主和属组是daemon:

[root@yunzu63 ~]# ll -sd /usr/local/apache/htdocs/
drwxr-xr-x 2 root root 24 1月  25 15:53 /usr/local/apache/htdocs/
[root@yunzu63 ~]# chown daemon. /usr/local/apache/htdocs/ -R
[root@yunzu63 ~]# ll -sd /usr/local/apache/htdocs/
drwxr-xr-x 2 daemon daemon 24 1月  25 15:53 /usr/local/apache/htdocs/

保护apache日志:设置好apache日志文件权限

对日志的授权,我们要将属主和属组都设置为root:
[root@yunzu63 ~]# ll -sd /usr/local/apache/logs/
drwxr-xr-x 2 root root 58 1月  25 17:29 /usr/local/apache/logs/
[root@yunzu63 ~]# ll /usr/local/apache/logs/
注:由于apache日志的记录是由apache的主进程进行操作的,而apache的主进程又是root用户启动的,所以这样不影响日志的输出。这也是日志记录的最安全的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值