文章目录
注意:在做实验的过程中一定要记得清除浏览器的缓存,否则会导致实验结果出不来
一、Apache网页压缩
网站的访问速度是由多个因素所共同决定的,这些因素包括应用程序的响应速度、网络 带宽、服务器性能、与客户端之间的网络传输速度等等。使用网页压缩可以提升应用程序的速度。
1.1 Apache 的压缩模块
gzip 是一种流行的文件压缩算法,广泛应用于 Linux 平台。可以使用 gzip 压缩算法来对 Apache 服务器发布的网页内容进行压缩后再传输到客户端浏览器。经过压缩后,实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。
Apache 1.x 系列没有内建网页压缩技术,使用的是额外的第三方 mod_gzip 模块来执行压缩。
Apache2.x内建了 mod_deflate 这 个模块,用以取代 mod_gzip。
1.1.1 mod_gzip模块与mod_deflate模块的区别
- 两者都是使用的 gzip 压缩算法,运作原理类似
- mod_deflate 压缩速度略快
- mod_gzip 的压缩比略高
- mod_gzip对服务器CPU的占用要高一点
1.1.2 配置网页压缩功能
启用网页压缩功能步骤
- 查看是否安装mod_deflate模块
- 修改配置文件,启用压缩功能
- 访问测试
1.1.3 检查是否安装mod_deflate模块
- 执行apachectl -t -D DUMP_MODULES命令
如果输出中没有deflate_module(static),说明编译时没有安装mod_deflate模块 - 没有安装则需要从新编译安装
- ./configure --enable-deflate…
- make && make install
1.2 Apache网页压缩实验
首先是手动编译安装apache网页服务
将apache软件包从本地拷贝到Linux主机/opt目录下
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 rh
[root@localhost opt]# tar jvxf httpd-2.4.29.tar.bz2
[root@localhost opt]# tar zvxf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[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]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# yum install gcc gcc-c++ pcre pcre-devel zlib-devel expat-devel make perl -y
[root@localhost httpd-2.4.29]# ./configure --prefix=/usr/local/httpd
--enable-deflate ##开启mod_deflate功能模块
--enable-so ##开启核心功能防护与web服务功能
--enable-rewrite ##开启重写功能
--enable-charset-lite ##字符集模块
--enable-cgi ##通用网关接口
[root@localhost httpd-2.4.29]# make && make install ##进行编译、安装
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc ##将httpd的主配置文件软链接建立到/etc目录下
[root@localhost httpd-2.4.29]# vim /etc/httpd.conf
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>
AddOutPutFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutPutFilter DEFLATE
</IfModule>
并开启监听端口
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/httpd -t ##检查配置文件的语法是否正确
Syntax OK
[root@localhost httpd-2.4.29]# iptables -F
[root@localhost httpd-2.4.29]# setenforce 0
[root@localhost httpd-2.4.29]# /usr/local/httpd/bin/httpd ##开启httpd服务
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "deflate" ##检查模块是否开启
deflate_module (shared)
[root@localhost bin]# cd /usr/local/httpd/htdocs/
将事先准备好的图片james.png放在这个目录下
[root@localhost htdocs]# ls
index.html james.png
[root@localhost htdocs]# vim index.html
<img src="james.png"/> ##在网页首页中加入图片
接下来进行测试
二、 Apache网页缓存
网页缓存是将一部分经常不会改变和变动很少的页面缓存,下次浏览器再次访问这些页 面时,不需要再次去下载这些页面,从而提高了用户的访问速度。
2.1 配置网页的缓存
Apache 的 mod_expires 模 块 会 自 动 生 成 页 面 头 部 信 息 中 的 Expires 标 签 和 Cache-Control 标签,客户端浏览器根据标签决定下次访问是在本地机器的缓存中获取页面,不需要向服务器再次发出请求,从而提高了访问速度。
2.1.1启用网页的缓存功能步骤
- 查看是否安装mod_expire模块
- 修改配置文件启用缓存功能
- 抓包测试
2.1.2 启用功能步骤详解
查看是否安装mod_expire模块
- /usr/local/apache/bin/apachectl -t -D DUMP_MODULES
- 如果输出中没有expires_module(static),则说明编译时没有安装mod_expires 若没有安装则需要重新编译安装
- ./configure --enable-expires…
- make && make install
- 修改httpd.conf配置文件
启用mod_expires模块,并设置http协议下任意格式的文档均60秒后过期
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</IfModule>
- 启动服务,进行测试
2.2 Apache网页缓存实验
将apache软件包从本地拷贝到Linux主机/opt目录下
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 rh
[root@localhost opt]# tar jvxf httpd-2.4.29.tar.bz2
[root@localhost opt]# tar zvxf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# yum install gcc gcc-c++ pcre pcre-devel zlib-devel expat-devel make perl -y
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
--enable-expires
[root@localhost httpd-2.4.29]# iptables -F
[root@localhost httpd-2.4.29]# setenforce 0
[root@localhost httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so
在httpd主配置文件末尾写入以下内容
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</IfModule>
开启服务
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/bin
[root@localhost bin]# ./apachectl -t ##检查主配置文件语法
Syntax OK
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "expires" ##检查expires模块功能是否开启
expires_module (shared)
[root@localhost httpd]# cd /usr/local/httpd/htdocs/
将文件拷贝到这个目录下
[root@localhost htdocs]# ls
index.html why.png
[root@localhost htdocs]# vim index.html
<img src="why.png">
[root@localhost htdocs]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./apachectl ##开启服务
在win10虚拟机中测试
三、 防盗链
用户浏览一个带图片的页面是通过两次或者两次以上的请求实现,第一个 HTTP 请求传送的是这个页面的文本,第二次发送一条 HTTP 请求,当这个请求被处理后这个图片文件才会被传送到客户端,要经过多次发送 HTTP 请求才能够被完整的显示。
一些网站没有相应的图片,通过盗用网站链接来使用自己没有的图片,这样的方法提高了自己的访问量,但是损害了了原网站的合法利益,另一方面又加重了服务器的负担。 基于这样的的状况就出现了防盗链。
3.1 Apache防盗链
3.2 Apache防盗链实验
实验目的
验证防盗链功能
实验参数
centos7.6虚拟机14.0.0.7为盗链网站
centos7.6虚拟机14.0.0.27为官网
win10虚拟机为客户机
实验过程
官网web服务搭建
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install bind -y
[root@localhost ~]# vim /etc/named.conf
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "sayno.com" IN {
type master;
file "sayno.com.zone";
allow-update { none; };
};
[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p named.localhost sayno.com.zone
[root@localhost named]# vim sayno.com.zone
www IN A 14.0.0.27
[root@localhost named]# systemctl start named ##开启域名解析
去win10虚拟机中测试
接下来进行手工编译安装apache,之前已经讲解过了,这里就不做多余的解释
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 rh
[root@localhost opt]# tar jvxf httpd-2.4.29.tar.bz2
[root@localhost opt]# tar zvxf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# yum install gcc gcc-c++ pcre pcre-devel zlib-devel expat-devel make perl -y
[root@localhost httpd-2.4.29]# ./configure \
--prefix=/usr/local/httpd \
--enable-deflate \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi \
[root@localhost named]# cd /usr/local/httpd/htdocs/
到网页目录下将图片拷贝进来
[root@localhost htdocs]# ls
index.html james.png thinking.png
[root@localhost htdocs]# vim index.html
<img src="thinking.png"/>
[root@localhost htdocs]# cd ../bin/
[root@localhost bin]# iptables -F
[root@localhost bin]# setenforce 0
[root@localhost bin]# vim /usr/local/httpd/conf/httpd.conf
[root@localhost bin]# ./apachectl start
这时候官网的web服务搭建成功
盗链网站的搭建
接着搭建盗链网站的web服务,这里直接使用yum安装
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -F
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# vim index.html
<h1>this is xxx web</h1>
<img src="http://www.sayno.com/thinking.jpg"/>
[root@localhost html]# echo "nameserver 14.0.0.27" > /etc/resolv.conf ##使用官网作为盗链网站的域名服务器
[root@localhost html]# systemctl restart httpd
在win10中进行测试
验证防盗链
在主配置文件中开启防盗链功能
[root@localhost bin]# vim /usr/local/httpd/conf/httpd.conf ##在配置文件中开启重写功能模块,并在249行后写入重写功能的语句
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://sayno.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://sayno.com/$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.sayno.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.sayno.com/$ [NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.sayno.com/error.png
将apache重启
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start
在win10虚拟机中进行访问
四、 隐藏版本号
一般情况下,软件的漏洞信息和特定版本是相关的。如果黑客或别有用心的人得到 Apache 的版本信息,就会有针对性的进行攻击,给网站造成很大的损失。
实际生产环境中要隐藏 Apache 的版本号,减少受攻击的风险,保护服务器安全运行。
4.1 隐藏版本号步骤
-
配置隐藏版本号信息
将主配置文件/usr/local/httpd/conf/httpd.conf 前面的注释
Includeconf/extra/httpd-default.conf //去掉前面的# -
重启服务,进行抓包验证
4.2 隐藏版本号实验
开启抓包软件,再访问服务
设置隐藏版本号
[root@localhost bin]# vim /usr/local/httpd/conf/httpd.conf
[root@localhost bin]# cd /usr/local/httpd/conf/extra/
[root@localhost extra]# vim httpd-default.conf
[root@localhost extra]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start
在win10虚拟机中进行测试