Apache网页与安全优化 再也不怕被盗图了

一、网页优化

1.1 网页优化概述

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

1)优化内容

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

1.2 gzip介绍

配置Apache的网页压缩功能,是史用gZIp伯早1运不对网页内容进行压缩后再传输到客户端浏览器
作用
降低了网络传输的字节数,加快网页加载的速度
节省流量,改善用户的浏览体验
gzip与搜索引擎的抓取工具有着更好的关系

1.3 HTTP压缩的过程

Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩(Accept-Encoding信息) ,如果浏览器支持HTTP压缩, Web服务器检查请求文件的后缀名,如果请求文件是HTML, CsS等静态文件, Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件。如果请求文件的压缩文件不存在, Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件,如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件。如果请求文件是动态文件, Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中

1)启用网页压缩功能步骤

在这里插入图片描述

1.4 apache压缩模块

Apache 1.x系列没有内建网页压缩技术,使用的是额外的第三方mod gzip模块来执行压缩。而
Apache 2.x官方在开发的时候,就把网页压缩考虑进去,内建了mod deflate这个模块,用以取代mod-gzip,两者都是使用的gzip压缩算法,它们的运作原理是类似的。mod deflate压缩速度略快而mod gzip的压缩比略高。一般默认情况下, mod gzip会比mod deflate多出4%~6%的压缩量。
一般来说mod gzip对服务器CPU的占用要高一些。mod deflate是专门为确保服务器的性能而使用的一个压缩模块, moddeflate需要较少的资源来压缩文件。这意味着在高流量的服务器,使用mod deflate可能会比mod gzip加载速度更快。
简而言之,如果网站访问量较小,想要加快网页的加载速度,就使用mod gzip.虽然会额外耗费一些服务器资源,但也是值得的。如果网站访问量较大、使用的是共享虚拟主机.且所分配系统资源有限,那么使用mod deflate将会是更好的选择。
另外,从Apache 2.0.45开始, mod deflate模块可使用DeflateCompressionLevel指令来设置压缩级别。该指令的值可为1至(压缩速度最快,最低的压缩质量) 9 (最慢的压缩速度,压缩率最高)之间的整数,其默认值为6 (压缩速度和压缩质量较为平衡的值)这个简单的变化更是使得mod deflate可以轻松媲美mod-gzip的压缩。

1.5 mod deflate模块

  1. 检查是否安装了mod deflate模块
[root@localhost ~]# apachectl-D DUMP MODULES | grep "deflate"
  1. 安装mod deflate模块
    如果没有安装mod deflate模块,需要停止Apache服务,重新编译安装Apache,参数中
    加入mod deflate模块内容
[root@localhost ~]# systemctl stop httpd
[root@localhost ~]#yum -y install zlib-devel.x86_64 
[root@localhost ~# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]#
./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-cgid \
--enable-deflate

#####在进行编译安装Apache时,出现如下错误###

checking whether to enable mod deflate... configure: error: mod_deflate has been
requested but can not be built due to prerequisite failurese

解决方案:

yum -y install zlib-devel 
[root@localhost httpd-2.4.29]#make && make install
  1. 配置mod deflate模块启用
    编译安装后, mod deflate模块需要在httpd.conf文件启用才能生效。
[root@localhost httpd-2.4.29]vi /usr/local/httpd/conf/httpd.conf
LoadModule deflate module modules/mod_deflate.so  找到这个模块将前面的#去掉,然后在后面下面这段代码
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css /test/xml text/javascript image/png image/jpg    第一行代表对什么样的内容启用gzip压缩,
DeflateCompressionLevel 9   第二行代表压缩级别
SetOutputFilter DEFLATE   第三行代表启用deflate 模块对本站点的输出进行 gzip 压缩。
</IfModule>
  1. 检测httpd.conf语法并重启服务使配置生效
[root@localhost httpd-2.4.29]# httpd -t
Syntax OK
[root@localhost httpd-2.4.29]# systemctl restart httpd
######
把b照片传入/usr/local/httpd/htdocs/目下
[root@localhost httpd-2.4.29]#cd /usr/local/httpd/htdocs/

测试页

<html>
<head>
<title>-压缩测试页-</title>
</head>
<body><h1>这是一个测试网页内容压缩的页面! ! This is test Page!! </h1>
<img src=b.jpg />
</body>
</html>

测试

###############用wireshaerk抓包测试图片传输是否压缩############
找到 HTTP/1.1 200 OK (JPEG JFIF image)
找到 Hyertext Transfer Protocol
找到 HTTP/1.1 200 OK \r\n
找到content-Encoding: gzip \r\n   ###这个地方表示图片压缩########

二、网页缓存

网页缓存是将一部分经常不会改变和变动很少的页面缓存,下次浏览器再次访问这些页面时,不需要再次去下载这些页面,从而提高了用户的访问速度。
Apache的mod expires模块会自动生成页面头部信息中的Expres标签和Cache-Control标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器
再次发出请求,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的。
配置mod_expires模块的步骤与mod_deflate模块相似
显示deflate_expires (static),表示已经安装。
1.检查mod_expires模块是否安装

[root@localhost ~]# apachectl-D DUMP_MODULES | grep "expire"

##没有装mod_expires###
2. 安装mod_expires模块
如果没有安装 mod_expires 模块, 需要停止 Apache 服务,重新编译安装 Apache ,参数中加入 mod_expires 模块内容。

[root@localhost ~]#systemctl stop httpd
[root@localhost ~]#cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]#
/configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-cgid \
--enable-deflate \
--enable-expires
[root@localhost httpd-2.4.29]# make && make install
[root@localhost httpd-2.4.29]# vi /etc/httpd.conf
LoadModule expires_module modules/mod_expires.so  去掉这个模块之前的#,在下面加入一下代码
<IfModule mod_expires.c>
ExpiresActive On  
ExpiresDefault "access plus 60 seconds"   
</IfModule>

3.检测httpd.conf 语法并启动服务

[root@localhost httpd-2.4.29]# httpd -t
Syntax OK
[root@localhost httpd-2.4.29]# systemctl restart httpd

4.测模块是否安装

[root@localhost httpd-2.4.29]# apachectl -D DUMP_MODULES I grep "expires"expires_module (shared)
测试
################用wireshaerk抓包测试图片传输是否缓存######
找到HTTP/1.1 200 OK (JPEG JFIF image)
找到Hyertext Transfer Protocol
找到HTTP/1.1 200 OK \r\n
找到Cache-Control :max-age=60 \r\n  ###这个地方表示缓存60秒###
####################################################

三、Apache安全优化

Apache的默认配置除了性能可以优化外,还需要对安全性进行相应的配置。默认配置能保证服务器正常提供服务,但Apache作为一个软件,必然也会存在一些漏洞,尽可能的降低潜在的风险,是管理员必须掌握的内容

3.1 隐藏版本信息

一般情况下,软件的漏洞信息和特定版本是相关的。因此,软件的版本号对攻击者来说是很有价值的

###################用wireshaerk抓包HTTP/1.1 200 Ok#######
找到HTTP/1.1 200 OK )
找到Hyertext Transfer Protocol
找到HTTP/1.1 200 OK Yr\n
找到Server :Apache /2.4.29 ###这个地方表能显示Apache版本信息###
  1. 修改httpd.conf 配置文件
修改httpd.conf 配置文件,使httpd-default.conf 文件生效,它里面包含了是否返回版
本信息的内容。
[root@localhost ~]# vi /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-default.conf                               ####去掉前面的#
  1. 修改httpd-default.conf文件
[root@localhost ~]# vi /usr/local/httpd/conf/extra/httpd-default.conf
ServerTokens Prod                                                                ####把Full改为Prod#
[root@localhost ~]# systemctl restart httpd
  1. 测试
####用wireshaerk抓包测试图片传输是否缓存#######################
找到HTTP/1.1 200 OK (JPEG JFIF image)
找到Hyertext Transfer Protocol
找到HTTP/1.1 200 OK \r \n
找到Server: Apache \r\n          ###这个地方的版本号看不见了 ###

3.2 配置防盗链

一般来说,我们浏览一个完整的页面并不是一次性全部传送到客户端的。如果所请求的页面带有图片或其他信息,那么第一个Http请求传送的是这个页面的文本,然后通过客户端的浏览器对这段文本进行解释执行,如果发现其中还有图片,那么客户端的浏览器会再次发送一条Http请求,当这个请求被处理后这个图片文件才会被传送到客户端,最后浏览器会将图片安放到页面的正确位置,就这样一个完整的页面要经过多次发送Http请求才能够被完整的显示

基于这样的机制,就会产生盗链问题:如果一个网站中没有其页面中所说图片信息,那么它完全可以链接到其他网站的图片信息上。这样,没有任何资源的网站利用了别的网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现。一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接。一方面损害了原网站的合法利益,另一方面又加重了服务器的负担

http标准协议中有专门的Referer字段记录,它的作用如下。
1.可以追溯上一个入站地址是什么
2.对于资源文件,可以跟踪到包含显示它的网页地址是什么,因此所有防盗链方法都是基于这个Referer字段

1) 如何配置防盗链

1.基本环境
20.0.0.16 www.51xit.top ###做防盗链配置
20.0.0.12 ###做盗链网站
####首先20.0.0.16不做做防盗链配置###做一个测试页; 就用之前的那个测试页

2.在20.0.0.12 仿站用到20.0.0.12/b.jpg这个图片

[root@localhost -]# vi /etc/hosts
20.0.0.16 www.51xit.com
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost -]# vi /var/www/html/index.html
<html>
<head>
<title>--压缩测试页--</title>
</head>
<body><h1>这是一个测试网页内容压缩的页面! ! This is test Page!! </h1>
<img src=http://www.51xit.top/b.jpg/>
</body>
</html>

2) 防盗链处理

###登录20.0.0.16####

(1)检查是否安装了mod_rewrite模块
apachectl -t -D DUMP_MODULES I grep  "rewrite"
(2)安装mod_rewrite模块
systemctl stop httpd
vi /etc/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so
###针对目录做防盗链处理------------------在htdocs目录属性最后位置新增---[NC]不区分大小写#####
    RewriteEngine On
    RewriteCond %{HTTP_REFERER} !^http://20.0.0.16/*
    RewriteCond %{HTTP_REFERER} !^http://51xit.top/.*$ [NC]
RewriteCond %(HTTP_REFERER) !^http://51xit.top$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.51xit.top/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.51xit.top$ [NC]
    RewriteRule .*\.(gif|jpg|swf|png)$ http://20.0.0.12/12.jpg [R,NC]###需要重定向到一个盗链主机可以访问的位置,
否则看不出效果来。搭建一个虚拟目录来测试,或者为了方便测试,你把error.jpg这个图面直接放到192.168.100.31这个网站上

######上面配置文件解释#####
第二、三、四、五行的信任的站点,能够使用网站的图片;除了信任的站点以外的站点,如果直接访问或者使用http://www.51 xit.top域名以gif、jpg、swf结尾的文件将跳转到重定向页面。

[root@localhost httpd-2.4.29]# systemctl restart httpd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值