Apache网页优化之--防盗链与隐藏版本(内涵实验详细过程)

前言:

一般的站点或者静态资源托管站点都提供防盗链的设置,也就是让服务端识别指定的Referer,在服务端接收到请求时,通过匹配referer头域与配置,对于指定放行,对于其他referer视为盗链。

一、防盗链介绍

  • 防盗链就是防止别人的网站代码里面盗用服务器的图片文件、视频等相关资源
  • 如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
  • 所以作为网站的维护人员,要杜绝我们服务器的静态资源被其他网站盗用
1.1 配置规则变量说明
  • %{HTTP_REFERER}:浏览 header 中的链接字段,存放一个链接的URL(统一资源定位系统,网址),代表是从哪个链接访问所需的网页
  • !^:不以后面的字符串开头
  • .*$:以任意字符结尾
  • NC:不区分大小写
  • R :强制跳转
1.2 规则匹配说明
  • RewriteEngine On:开启网页重新功能
  • RewriteCond:设置匹配规则
  • RewriteRule:设置跳转动作
  • 如果响应变量的值匹配所设置的规则,则逐条向下处理;如果步匹配则往后额规则不再匹配

二、实验

2.1 实验环境:
  • 使用两台主机模拟盗链,信息如下

    网站IP地址为192.168.181.129,域名为www.laofanqie.com

  • ② 使用win10-1 虚拟模拟客户端进行访问测试

  • ③ 使用win10-2 虚拟机制作盗链网站

2.1.1 配置DNS域名服务
  • 修改主配置文件
[root@localhost ~]# yum install bind -y
.......省略部分内容
[root@localhost ~]# vim /etc/named.conf  #修改主配置文件
options {
        listen-on port 53 { any; };		#将127.0.0.1修改为“”监听所有地址
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };	#将localhost修改为any允许所有地址访问

        /* 
  • 修改区域配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones 
#添加以下信息
zone "laofanqie.com" IN {
        type master;
        file "laofanqie.com.zone";
        allow-update { none; };
};
  • 修改区域数据配置文件
[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data     named.ca     named.localhost  slaves
dynamic  named.empty  named.loopback
[root@localhost named]# cp -p named.localhost laofanqie.com.zone
[root@localhost named]# vim laofanqie.com.zone
		AAAA	::1				#删除末行IPV6信息
www IN  A       192.168.181.129		#添加此段信息
  • 开启DNS服务
[root@localhost named]# systemctl start named	#开启DNS
[root@localhost named]# systemctl stop firewalld.service 				#关闭防火墙
[root@localhost named]# setenforce 0	#关闭增强性安全功能
  • 验证DNS(使用win10-1虚拟机)

    修改客户机网卡信息
    在这里插入图片描述

解析源服务器域名

在这里插入图片描述

2.2 防盗链配置
2.2.1 手工编译安装Apache
  • 挂载共享文件、解压到/opt/目录中
[@localhost ~]# mount.cifs //192.168.181.1/LAMP-C7 /mnt
Password for root@//192.168.181.1/LAMP-C7:  
[@localhost ~]# cd /mnt
[root@localhost mnt]# ls
amoeba-mysql-binary-2.2.0.tar.gz  Discuz_X2.5_SC_UTF8.zip  mha.rar
apr-1.6.2.tar.gz                  httpd-2.4.29.tar.bz2     mysql-5.6.26.tar.gz
apr-util-1.6.0.tar.gz             LNMP-C7                  php-5.6.11.tar.bz2
awstats-7.6.tar.gz                LNMP-C7.rar
cronolog-1.6.2-14.el7.x86_64.rpm  mha
  • 解压跨平台组件包和源码包
[root@localhost mnt]# tar zxvf apr-1.6.2.tar.gz -C /opt
[root@localhost mnt]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
...............省略部分内容
[root@localhost mnt]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt
...............省略部分内容
[root@localhost mnt]# cp dog.jpg /usr/local/httpd/htdocs/
[root@localhost mnt]# 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@lamp opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> zlib-devel \
> expat-devel \
> pcre \
> perl
...........省略部分内容
  • 配置编译
[root@lamp opt]# cd /opt/httpd-2.4.29/
[root@lamp httpd-2.4.29]#./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-deflate \
--enable-expires \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
........省略部分内容
[root@localhost httpd-2.4.29]# make   #生产可执行的二进制文件
........省略部分内容
[root@localhost httpd-2.4.29]# make install   #复制二进制文件到系统,配置应用环境
........省略部分内容
  • 创建软链接便于管理
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
2.2.2 修改配置文件

为了在做防盗链前后对比,先不开启防盗链功能

  • 修改域名及监听地址
Listen 192.168.181.173:80		#开启ipv4监听,ip地址指向本机(51行)
#Listen 80						#关闭ipv6端口监听(52行)
ServerName www.laofanqie.com:80		#将域名修改为laofanqie(198行)
  • 编辑默认首页、开启服务
[root@localhost bin]# vim /usr/local/httpd/htdocs/index.html 
<html><body><h1>It works!</h1>
<img src="dog.jpg"/>
</body></html>
------->wq
[root@localhost bin]# ./apachectl start
[root@localhost bin]# netstat -natp | grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      69297/httpd 
2.2.3 创建盗链网站

使用win10-2 虚拟机创建盗链网站

  • 修改win10-2 的网络配置
    在这里插入图片描述

  • 访问apache站点首页
    在这里插入图片描述

  • 创建盗链网站

① 复制站点图片的地址(URL)
在这里插入图片描述
在这里插入图片描述

② 添加自己的网站

开启internet默认网页服务
在这里插入图片描述
点击确定等待安装完成
在这里插入图片描述

③ 编写网站内容,将之前复制的URL粘贴进来

创建txt文本,编辑网页信息

在这里插入图片描述

④ 开启显示扩展名功能
在这里插入图片描述
在这里插入图片描述

⑤ 将txt文件名修改为index.html,然后放入以下路径目录下

在这里插入图片描述

⑥ 关闭win10-1 和win10-2的防火墙(不关会导致无法访问盗链网站)

⑦ 使用win10-1(客户机)访问盗链网站进行测试
在这里插入图片描述

盗链网站创建成功

2.2.4 配置防盗链
  • 修改Apache配置文件

LoadModule rewrite_module modules/mod_rewrite.so
#开启重写功能(156行)

#搜索/htdocs(222行)在站点的权限模块中添加以下内容
     RewriteEngine On			#开启重写引擎(功能)
     RewriteCond %{HTTP_REFERER} !^http://laofanqie.com/.*$ [NC]	 
     RewriteCond %{HTTP_REFERER} !^http://laofanqie.com$ [NC]
     RewriteCond %{HTTP_REFERER} !^http://www.laofanqie.com/.*$ [NC]
     RewriteCond %{HTTP_REFERER} !^http://www.laofanqie.com/$ [NC]
     RewriteRule .*\.(gif|jpg|swf)$ http://www.laofanqie.com/error.png
#定义规则,不允许其他URL站点访问本机网站的各种资源、如果盗链资源(图片)则强制推送一个error.png图片提示.
  • 将error.jpg拷贝到htdocs站点目录中
[root@localhost conf]# cd /mnt
[root@localhost mnt]# ls
amoeba-mysql-binary-2.2.0.tar.gz  Discuz_X2.5_SC_UTF8.zip  LNMP-C7.rar
apr-1.6.2.tar.gz                  dog.jpg                  mha
apr-util-1.6.0.tar.gz             error.png                mha.rar
awstats-7.6.tar.gz                httpd-2.4.29.tar.bz2     mysql-5.6.26.tar.gz
cronolog-1.6.2-14.el7.x86_64.rpm  LNMP-C7                  php-5.6.11.tar.bz2
[root@localhost mnt]# cp error.png /usr/local/httpd/htdocs/
[root@localhost mnt]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls
dog.jpg  error.png  index.html
  • 重启Apache
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start
#重启后,当捕捉到有客户端访问盗链网站,则本机会自动检测到error.png图片然后展现给客户端查阅
2.2.5 检测防盗链
  • 打开win10-1 客户机,清理网页缓存后再次访问盗链网站
    在这里插入图片描述

防盗链制作成功

2.3 版本隐藏设置
  • 安装抓包软件
    在这里插入图片描述

  • 访问源主机网页
    在这里插入图片描述

  • 使用抓包软件查看Apache版本

在这里插入图片描述

可见,在未设置版本隐藏时,客户机只需要安装抓包软件就可以清晰捕捉到源网站的Apache版本,这样就存在一些安全隐患

2.3.1 版本隐藏设置
  • 修改配置文件
[root@localhost conf]# vim httpd.conf  #进入主配置文件
Include conf/extra/httpd-default.conf  #开启子配置文件功能
------》wq
[root@localhost conf]# ls
extra  httpd.conf  magic  mime.types  original
[root@localhost conf]# cd extra
[root@localhost extra]# ls
httpd-autoindex.conf  httpd-info.conf       httpd-mpm.conf                 httpd-userdir.conf
httpd-dav.conf        httpd-languages.conf  httpd-multilang-errordoc.conf  httpd-vhosts.conf
httpd-default.conf    httpd-manual.conf     httpd-ssl.conf                 proxy-html.conf
[root@localhost extra]# vim httpd-default.conf 
ServerTokens Prod	
#搜索/Tokens (55行) 找到版本信息,将Full(显示名称)修改为Prod(不显示版本信息)
ServerSignature Off
#在下方10行的位置查看签名信息,确认为关闭状态
-----》wq
  • 重启Apache
[root@localhost extra]# cd ../../
[root@localhost httpd]# cd bin/
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start
2.3.2 测试版本隐藏设置
  • 使用win10-1(客户机)重新访问源主机网站
  • 查看抓包工具抓取的信息
    在这里插入图片描述

以上Apache的防盗链和隐藏版本均已配置完成

总结

防盗链与版本隐藏需要注意的细节主要在与检查主配置文件中的模块功能是否开启,配置文件中的空格是否少打漏打,子配置文件中的签名模块是否关闭。手工编译安装时的环境和 ./configure 支持的功能是否齐全
之后会继续介绍Apache的深度优化系列~

发布了48 篇原创文章 · 获赞 46 · 访问量 6602

猜你喜欢

转载自blog.csdn.net/weixin_45726050/article/details/104076297