Apache 网页与安全优化

一、网页压缩功能

1.网页压缩功能概述

配置 Apache 的网页压缩功能,是使用 Gzip 压缩算法来对 Apache 服务器发布的网页内容进行压缩后再传输到客户端浏览器。

网页压缩的优势:

  • 降低了网络传输的字节数,加快网页加载的速度
  • 节省流量,改善用户的浏览体验
  • gzip 与搜索引擎的抓取工具有着更好的关系

能实现网页压缩功能的模块有 mod_gzip 模块和 mod_deflate 模块。Apache 1.x 系列没有内建的网页压缩技术,但可以使用额外的第三方mod_gzip模块来执行压缩。Apache 2.x系 列官方在发布的时候,就把网页压缩功能考虑进去,内建了mod_deflate 这个模块,用于取 代 mod_gzip 模块。

mod_gzip与mod_deflate对比

mod_gzip mod_deflate
Gzip 算法,运作原理类似 Gzip 算法,运作原理类似
压缩速度略慢 压缩速度略快
压缩比略高 压缩比略低
CPU 占用率略高 CPU 占用率略低
低流量服务器 高浏览量服务器

2.启用网页压缩功能步骤

(1)查看是否安装了 mod_deflate 模块

首先检查是否安装了 mod_deflate 模块,命令:

[root@huyouba1 ~]# /usr/local/apache/bin/apachectl  -t -D DUMP_MODULES |grep "deflate"
#发现未安装 deflate_module (static),重新编译安装

[root@huyouba1 ~]# cd httpd-2.2.24/

[root@huyouba1 httpd-2.2.24]# yum -y install zlib-devel

[root@huyouba1 httpd-2.2.24]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-deflate &&make &&make install

[root@huyouba1 httpd-2.2.24]# /usr/local/apache/bin/apachectl  -t -D DUMP_MODULES |grep "deflate"
Syntax OK
 deflate_module (static)

[root@huyouba1 httpd-2.2.24]# /usr/local/apache/bin/apachectl restart

(2)为了方便对比,在启用模块前,先使用工具抓包

(3)修改配置文件启用压缩功能 在 httpd.conf 主配置文件最后加上如下三行内容:

AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript 

DeflateCompressionLevel 9

SetOutputFilter DEFLATE

第一行代表对什么样的内容启用 gzip 压缩

第二行代表压缩级别

第三行代表启用 deflate 模块对本站点的输出进行 gzip 压缩

[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf

418 AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript

420 DeflateCompressionLevel 9

422 SetOutputFilter DEFLATE

[root@huyouba1 ~]# /usr/local/apache/bin/apachectl restart

(4)抓包测试:

二、配置网页的缓存时间

1.配置网页缓存时间概述

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

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

2.启用网页缓存功能步骤

(1)查看是否安装了 mod_expires 模块

[root@huyouba1 ~]# /usr/local/apache/bin/apachectl -D DUMP_MODULES |grep "expires"
#发现未安装 expires_module (static),重新编译安装

[root@huyouba1 ~]# cd httpd-2.2.24/

[root@huyouba1 httpd-2.2.24]# ./configure --prefix=/usr/local/apache --enable-so --enable-rewrite --enable-deflate --enable-expires &&make &&make install

[root@huyouba1 httpd-2.2.24]# /usr/local/apache/bin/apachectl -D DUMP_MODULES |grep "expires"
Syntax OK
 expires_module (static)

[root@huyouba1 httpd-2.2.24]# /usr/local/apache/bin/apachectl restart

(2)为了方便对比,在启用模块前,先使用工具抓包

(3)修改配置文件启用缓存功能 在 httpd.conf 主配置文件最后加上如下内容:

<IfModule mod_expires.c>
ExpiresActive On //开启网页缓存功能
ExpiresDefault “access plus 60 seconds” //http 协议下任的文档都是 60 秒之后过期 
</IfModule>
[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf 
425 <IfModule mod_expires.c>
426 ExpiresActive On
427 ExpiresDefault "access plus 60 seconds"
428 </IfModule>

[root@huyouba1 ~]# /usr/local/apache/bin/apachectl stop

[root@huyouba1 ~]# /usr/local/apache/bin/apachectl start

三、Apache 防盗链

1.Apache 防盗链概述

防盗链就是防止别人的网站代码里盗用服务器的图片、文件、视频等相关资源。如果别人盗用网站的这些资源,明显的是会增大服务器的带宽压力。所以,作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用。

2.配置 Apache 实现防盗链 使用两台主机模拟防盗链:

  • 源主机:www.huyouba11.xyz IP 地址 192.168.100.100
  • 盗链网站:www.zhen.com IP地址192.168.100.101

源主机操作

[root@huyouba1 ~]# cd /usr/local/apache/htdocs/huyouba11/

[root@huyouba1 huyouba11]# ls
index.html  timg.jpg

[root@huyouba1 huyouba11]# vim index.html 
<h1>www.huyouba11.xyz Pages</h1>
<img src="timg.jpg">

浏览器测试:

盗链主机操作:

[root@zhen ~]# yum -y install httpd

[root@zhen ~]# vim /var/www/html/index.html
<h1>www.zhen.com</h1>
<img src="http://192.168.100.100/timg.jpg">   
                              
[root@zhen ~]# systemctl restart httpd

浏览器测试:

源主机防盗链设置: 检查 Apache 是否安装了 mod_rewrite 模块

[root@huyouba1 ~]# /usr/local/apache/bin/apachectl -D DUMP_MODULES |grep "rewrite"
Syntax OK
 rewrite_module (static)

如未安装,参考之前的重新编译安装

配置规则变量说明:

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

规则匹配说明:

  • RewriteEngine ON 打开网页重写功能
  • RewriteCond 设置匹配规则
  • RewriteRule 设置跳转动作

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

修改 httpd.conf 主配置文件

[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf 

#在<Directory “/usr/local/httpd/htdocs”></Directoy>容器中,添加:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://huyouba11.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://huyouba11.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.huyouba11.xyz/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.huyouba11.xyz$ [NC]
RewriteRule .*\.(gif|jpg|swf|jpeg)$ http://www.huyouba11.xyz/error.html [R,NC]

最终匹配结果为:第二、三、四、五行的信任站点,能够使用网站上的图片;处理信任 站点以外的站点,如果访问或使用 http://www.huyouba11.com 域名以外的 gif、jpg、swf 结尾的 文件将跳转到重定向页面。

[root@huyouba1 ~]# echo "error" >/usr/local/apache/htdocs/huyouba11/error.html

[root@huyouba1 ~]# /usr/local/apache/bin/apachectl restart

浏览器测试,分别刷新两个网页:

四、配置 Apache 隐藏版本号

1.Apache 隐藏版本号的意义

Apache 版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患。生成环境中要 配置 Apache 隐藏版本信息。

2.配置 Apache 隐藏版本信息

修改 httpd.conf 主配置文件

[root@huyouba1 ~]# vim /usr/local/apache/conf/httpd.conf
408 # Various default settings
409 Include conf/extra/httpd-default.conf   //去掉注释

修改 httpd-default.conf 文件

[root@huyouba1 ~]# vim /usr/local/apache/conf/extra/httpd-default.conf 

55 ServerTokens Prod

65 ServerSignature Off

[root@huyouba1 ~]# /usr/local/apache/bin/apachectl restart

抓包测试

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦