apache网页与安全优化——压缩、缓存、防盗链及隐藏版本

阅读: 评论:0

apache网页与安全优化——压缩、缓存、防盗链及隐藏版本

apache网页与安全优化——压缩、缓存、防盗链及隐藏版本

文章目录

  • Apache网页优化
    • 网页压缩
      • gzip介绍
      • Apache的压缩模块
      • 启用网页压缩功能步骤
      • 配置网页压缩功能
      • 配置网页压缩实验:
    • 网页缓存
      • 启用网页缓存功能步骤
      • 配置网页的缓存时间
      • 配置网页缓存实验:
  • Apache安全优化
    • 防盗链
      • 步骤
      • 配置Apaache实现防盗链
    • 配置Apache隐藏版本信息
      • 配置隐藏版本

Apache网页优化

Apache网页优化概述

  • 在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代
  • 为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容

优化内容

  • 配置网页压缩功能
  • 工作模式的选择与参数优化
  • 配置防盗链
  • 配置隐藏版本号
  • …………

网页压缩

gzip介绍

  • 配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器
  • 作用
    • 降低了网络传输的字节数,加快网页加载的速度
    • 降低了网络传输的字节数,加快网页加载的速度
    • gzip与搜索弓|擎的抓取工具有着更好的关系

Apache的压缩模块

Apache实现网页压缩的功能模块包括:

  • mod_gzip 模块 (使用较多,注重效率)
  • mod_deflate 模块 (压缩比略高)

Apache 1.x

没有内建网页压缩技术,但可使用第三方mod_ _gzip 模块执行压缩

Apache 2.x

在开发的时候,内建了mod_deflate 这个模块,取代mod_gzip

mod_gzip 模块与mod_deflate 模块

  • 两者均使用gzip压缩算法,运作原理类似
  • mod_deflate 压缩速度略快,而mod_gzip 的压缩比略高
  • mod_gzip 对服务器CPU的占用要高一些
  • 高流量的服务器,使用mod_deflate 可能会比mod_gzip 加载速度更快

启用网页压缩功能步骤

配置网页压缩功能

首先检查是否安装了mod_deflate模块

  • 执行apachectl -t -D DUMP_ _MODUL ES命令
  • 如果输出中没有deflate_module (static),说明编译时没有安装mod_ deflate模块

若没有安装则要重新编译安装

  • ./configure --enable-deflate ……
  • make && make install

配置网页压缩实验:

#首先挂载软件包并进行解压

[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.17.1/share /abc
Password for root@//192.168.17.1/share:  
[root@localhost ~]# cd /abc
[root@localhost abc]# ls
apr-1.6.       cronolog-1.6.2-14.el7.x86_64.rpm  httpd-2.4.29.tar.bz2  
apr-util-1.6.  Discuz_X2.5_SC_UTF8.zip           httpd-2.4.    mysql-5.6.
awstats-7.     extundelete-0.2.4.tar.bz2         john-1.8.     php-5.6.11.tar.bz2
[root@localhost abc]# tar zxvf apr-1.6. -C /opt
[root@localhost abc]# tar zxvf apr-util-1.6. -C /opt
[root@localhost abc]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt
[root@localhost abc]# cd /opt
[root@localhost opt]# ls
apr-1.6.2  apr-util-1.6.0  httpd-2.4.29  rh
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
[root@localhost opt]# ls
httpd-2.4.29  rh
[root@localhost opt]# cd httpd-2.4.29/

#安装语言包

[root@localhost httpd-2.4.29]# yum install -y gcc gcc-c++ pcre-devel pcre expat-devel

#执行安装功能模块

[root@localhost httpd-2.4.29]#./configure 
--prefix=/usr/local/httpd 
--enable-so --enable-rewrite 
--enable-charset-lite 
--enable-cgi 
--enable-deflate
[root@localhost httpd-2.4.29]# make && make install

#在配置f中配置开启gzip功能

[root@localhost httpd-2.4.29]# cd /usr/local/httpd/conf
[root@localhost conf]# ls
extra  f  magic  pes  original
[root@localhost conf]# ln /usr/local/httpd/f /f
[root@localhost conf]# vim  /f        //进入配置文件
…………省略
LoadModule headers_module modules/ mod_headers.so //开启去掉前面#
LoadModule deflate_module modules/ mod_deflate.so 
LoadModule filter module modules/mod filter.so
…………省略<IfModule mod_deflate.c>
#代表对什么样的内容启用gzip压缩
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
#代表压缩级别
DeflateCompressionLevel 9
#代表启用deflate模块对本站点的输出进行gzip压缩
SetOutputFilter DEFLATE
</IfModule>

#语法验证

[root@localhost conf]# /usr/local/httpd/bin/apachectl -t
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
Syntax OK                             //验证配置文件成功

#启动服务,关闭防火墙

[root@localhost conf]# /usr/local/httpd/bin/apachectl start
[root@localhost conf]# systemctl stop firewalld.service 
[root@localhost conf]# setenforce 0

#网页站点,后期可以在里面添加内容,如图片等

[root@localhost conf]# cd ..
[root@localhost httpd]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
[root@localhost httpd]# cd htdocs
[root@localhost htdocs]# ls
index.html
[root@localhost htdocs]# cat index.html 
<html><body><h1>It works!</h1></body></html>

#使用Fiddler工具抓包,进行对比分析Fiddler工具抓包,进行对比分析

目前只有文字,没有进行压缩

我们现在来添加图片,在进行访问并抓包查看

[root@localhost htdocs]# cd /abc
[root@localhost abc]# ls
apr-1.6.       awstats-7.                Discuz_X2.5_SC_UTF8.zip    httpd-2.4.29.tar.bz2  john-1.8.  mysql-5.6.  ty.jpg
apr-util-1.6.  cronolog-1.6.2-14.el7.x86_64.rpm  extundelete-0.2.4.tar.bz2  httpd-2.4.               php-5.6.11.tar.bz2
[root@localhost abc]# cp ty.jpg /usr/local/httpd/htdocs/
[root@localhost abc]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
index.html  ty.jpg
[root@localhost htdocs]# vim index.html 
<html><body><h1>It works!</h1>
<img src="ty.jpg"/>
</body></html>

重新访问并查看

网页缓存

  • 通过mod_expire模块配置Apache ,使网页能在客户端浏览器缓存一段时间,以避免重复请求

  • 启用mod_expire模块后,会自动生成页面头部信息中的Expires标签和cache-control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

启用网页缓存功能步骤

配置网页的缓存时间

查看是否安装了mod_expire模块

  • /usr/local/apache/bin/apachectl -t -D DUMP_MODULES
  • 如果输出中没有expires_module (static) ,则说明编译时没有安装mod_expires

如果没有安装则要重新编译安装

  • ./configure --enable-expires ……

  • make && make install

配置网页缓存实验:

#安装语言包

[root@localhost ~]# yum install -y gcc gcc-c++ pcre pcre-devel zlib-devel expat-devel perl make

#挂载及解压安装包

[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.17.1/share /abc
Password for root@//192.168.17.1/share:  
[root@localhost abc]# tar zxvf apr-1.6. -C /opt
[root@localhost abc]# tar zxvf  apr-util-1.6. -C /opt
[root@localhost abc]# tar zxvf  httpd-2.4. -C /opt
[root@localhost abc]# cd /opt
[root@localhost opt]# ls
apr-1.6.2  apr-util-1.6.0  httpd-2.4.2  rh
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.2/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.2/srclib/apr-util

#执行安装模块并进行编译

[root@localhost opt]# cd httpd-2.4.2
[root@localhost httpd-2.4.2]# ./configure 
--prefix=/usr/local/httpd 
--enable-deflate 
--enable-expires 
--enable-so 
--enable-rewrite 
--enable-charset-lite 
--enable-cgi [root@localhost httpd-2.4.2]# make && make install

#复制httpd启动脚本并添加35级别自动运行

[root@localhost httpd-2.4.2]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.2]# vim /etc/init.d/httpd
# chkconfig: 35 85 21                     //35级别自动运行  第85个启动 第21个关闭
# description: Apache is a World Wide Web server
[root@localhost httpd-2.4.2]# chkconfig --add httpd            //将httpd加入到SERVICE管理器
[root@localhost httpd-2.4.2]# chkconfig --level 35 httpd on

#切换至主配置文件进行配置

[root@localhost httpd-2.4.2]# cd /usr/local/httpd/conf
[root@localhost conf]# ls
extra  f  magic  pes  original
[root@localhost conf]# ln -s /usr/local/httpd/f  /etc/    //建立软链接便于管理
[root@localhost conf]# ln -s /usr/local/httpd/bin/* /usr/local/bin/  //建立软链接便于管理命令
[root@localhost conf]# vim /f 
Listen 192.168.17.139:80
#Listen 80
ample:80
LoadModule expires_module modules/mod_expires.so          //开启缓存模块  去掉前面#
<IfModule mod_expires.c>                        //配置文件末尾添加启用mod_expires模块并设置ExpiresActive OnExpiresDefault "access plus 50 seconds"
</IfModule>
[root@localhost conf]# apachectl -t                //验证语法
Syntax OK

#关闭防火墙并启用服务

[root@localhost conf]# systemctl stop firewalld
[root@localhost conf]# setenforce 0
[root@localhost conf]# service httpd start

#验证缓存最大秒数,设置的最大缓存时间50s

Apache安全优化

防盗链

  • 防盗链就是防止别人的网站代码里面盗用服务器的图片、文件、视频等相关资源

  • 如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力

  • 所以作为网站的维护人员,要杜绝我们服务器的静态资源被其他网站盗用

使用两台主机模拟盗链

IP地址域名用途
192.168.17.140www.kgc源主机
192.168.17.134www.dl盗链网站

步骤

检查Apache是否安装了mod_rewrite模块

  • /usr/local/apache/bin/apachectl -t -D DUMP_MODULES

  • 如果输出中没有rewrite_module (static) ,则说明编译时没有安装mod_rewrite模块

如果没有安装则要重新编译安装

  • ./configure --enable-rewrite…

  • make && make install

配置规则变量说明

  • %{HTTP_REFERER} :浏览header中的链接字段,存放一个链接的URL ,代表是从哪个链接访问所需的网页
  • !^ :不以后面的字符串开头
  • .*$ :以任意字符结尾
  • NC :不区分大写
  • R:强制跳转

规则匹配说明

  • RewriteEngine On :打开网页重写功能

  • RewriteCond :设置匹配规则

  • RewriteRule :设置跳转动作

规则匹配

  • 如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配

修改配置文件启用防盗链功能并设置规则:

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^$ [NC]

RewriteCond %{HTTP_REFERER} !^/.*$ [NC]

RewriteCond %{HTTP_REFERER} !^$ [NC]

RewriteRule .* .(gif|jpg|swf)$ .jpg

配置Apaache实现防盗链

#安装语言包

[root@localhost ~]# yum install -y gcc gcc-c++ pcre pcre-devel zlib-devel expat-devel perl make

#挂载及解压安装包

[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.17.1/share /abc
Password for root@//192.168.17.1/share:  
[root@localhost abc]# tar zxvf apr-1.6. -C /opt
[root@localhost abc]# tar zxvf  apr-util-1.6. -C /opt
[root@localhost abc]# tar zxvf  httpd-2.4. -C /opt
[root@localhost abc]# cd /opt
[root@localhost opt]# ls
apr-1.6.2  apr-util-1.6.0  httpd-2.4.2  rh
[root@localhost opt]# mv apr-1.6.2/ httpd-2.4.2/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0/ httpd-2.4.2/srclib/apr-util

#执行安装模块并进行编译

[root@localhost opt]# cd httpd-2.4.2/
[root@localhost httpd-2.4.2]# ./configure 
--prefix=/usr/local/httpd 
--enable-deflate 
--enable-so 
--enable-rewrite 
--enable-charset-lite 
--enable-cgi[root@localhost httpd-2.4.2]# make && make install

#复制httpd启动脚本并添加35级别自动运行

[root@localhost httpd-2.4.2]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@localhost httpd-2.4.2]# vim /etc/init.d/httpd
# chkconfig: 35 85 21                     //35级别自动运行  第85个启动 第21个关闭
# description: Apache is a World Wide Web server
[root@localhost httpd-2.4.2]# chkconfig --add httpd            //将httpd加入到SERVICE管理器
[root@localhost httpd-2.4.2]# chkconfig --level 35 httpd on

#切换至主配置文件进行配置

[root@localhost httpd-2.4.2]# cd /usr/local/httpd/conf
[root@localhost conf]# ls
extra  f  magic  pes  original
[root@localhost conf]# ln -s /usr/local/httpd/f  /etc/    //建立软链接便于管理
[root@localhost conf]# ln -s /usr/local/httpd/bin/* /usr/local/bin/  //建立软链接便于管理命令
[root@localhost conf]# vim /f 
Listen 192.168.17.139:80
#Listen 80
ample:80
[root@localhost conf]# apachectl -t                //验证语法
Syntax OK

#关闭防火墙并启用服务

[root@localhost conf]# systemctl stop firewalld
[root@localhost conf]# setenforce 0
[root@localhost conf]# service httpd start

#安装bind,启用dns

[root@localhost ~]# yum install -y bind
[root@localhost ~]#vim /f 
options {listen-on port 53 { any; };listen-on-v6 port 53 { ::1; };directory       "/var/named";dump-file       "/var/named/data/cache_dump.db";statistics-file "/var/named/data/";memstatistics-file "/var/named/data/named_";recursing-file  "/var/named/ursing";secroots-file   "/var/named/data/named.secroots";allow-query     { any; };
[root@localhost ~]# vim /etc/s 
zone "kgc" IN {type master;file &#";allow-update { none; };
};[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data  dynamic  named.ca  pty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p named.
[root@localhost named]#  
$TTL 1D
@       IN SOA  @ rname.invalid. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      @A       127.0.0.1
www IN  A       192.168.17.140
[root@localhost named]# systemctl start named                             

#盗链端配置

安装软件

[root@localhost ~]# yum install -y httpd
[root@localhost ~]# echo "nameserver 192.168.17.140" > /f    //添加DNS地址
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# vim index.html                  //建立网站站点并引用源主机图片url
<html><body><h1>It test!accp</h1><img src=".jpg"/></body>
</html>
[root@localhost html]# vim /etc/httpd/f     //配置主配置文件
Listen 192.168.17.134:80
ServerName www.accp:80

#关闭防火墙闭并开启服务

[root@localhost html]# systemctl stop firewalld.service 
[root@localhost html]# setenforce 0
[root@localhost html]# systemctl start httpd

#这时其他主机可以自由盗取调用网站图片等静态资源

#再次到主机源主配置文件进行配置防盗链

[root@localhost ~]# vim /f
LoadModule rewrite_module modules/mod_rewrite.so     //开启rewrite功能<Directory "/usr/local/httpd/htdocs">             //启用防盗链功能并设置规则Options Indexes FollowSymLinks
…………AllowOverride None
…………Require all grabted…………  RewriteEngine OnRewriteCond %{HTTP_REFERER} !^/.*$ [NC]RewriteCond %{HTTP_REFERER} !^$ [NC]RewriteCond %{HTTP_REFERER} !^/.*$ [NC]RewriteCond %{HTTP_REFERER} !^/$ [NC]RewriteRule .*.(gif|jpg|swf)$ .jpg
</Dirctory>[root@localhost ~]# service httpd restart           //重启服务

#再次测试,盗链端再次查看

配置Apache隐藏版本信息

  • Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
  • 生产环境中要配置Apache隐藏版本信息
  • 可使用Fiddler抓包工具分析

配置Apache隐藏版本信息

  • 将主配置文件f以下行注释去掉。

    #Include conf/f

  • 修改f文件两个地方

  • ServerTokens Full修改为Server Tokens Prod

  • 将ServersSignature On修改为ServersSignature Off

配置隐藏版本

#目前未进行隐藏版本配置,先进行抓包测试


#现在我们进行隐藏版本配置,进入主配置文件

[root@localhost htdocs]# vim /f
Include conf/f              //开启   去掉前面的#号

#进入子配置文件

[root@localhost htdocs]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin  build  cgi-bin  conf  error  htdocs  icons  include  lib  logs  man  manual  modules
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
extra  f  magic  pes  original
[root@localhost conf]# cd extra/
[root@localhost extra]# ls
f  f           f
f        f              f
f    f                 f
f       f  f
[root@localhost extra]# f           //进入子配置文件
ServerTokens Prod                            //FULL 改为 Prod 只显示名称不显示版本号 
ServerSignature Off                         //设为OFF
[root@localhost extra]# service httpd restart          //重启服务

#隐藏版本配置完成,再次进行抓包测试


现在版本号就已经隐藏了,只显示apache,而一般情况下,每个版本都会有一些隐藏的bug,而隐藏版本号也就从另一方面,间接性的起到了安全防空的作用

本文发布于:2024-01-31 20:39:52,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170670479231205.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:缓存   防盗链   版本   网页   apache
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23