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域名服务
- 修改主配置文件
[aaa@qq.com ~]# yum install bind -y
.......省略部分内容
[aaa@qq.com ~]# 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允许所有地址访问
/*
- 修改区域配置文件
[aaa@qq.com ~]# vim /etc/named.rfc1912.zones
#添加以下信息
zone "laofanqie.com" IN {
type master;
file "laofanqie.com.zone";
allow-update { none; };
};
- 修改区域数据配置文件
[aaa@qq.com ~]# cd /var/named/
[aaa@qq.com named]# ls
data named.ca named.localhost slaves
dynamic named.empty named.loopback
[aaa@qq.com named]# cp -p named.localhost laofanqie.com.zone
[aaa@qq.com named]# vim laofanqie.com.zone
AAAA ::1 #删除末行IPV6信息
www IN A 192.168.181.129 #添加此段信息
- 开启DNS服务
[aaa@qq.com named]# systemctl start named #开启DNS
[aaa@qq.com named]# systemctl stop firewalld.service #关闭防火墙
[aaa@qq.com 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 aaa@qq.com//192.168.181.1/LAMP-C7:
[@localhost ~]# cd /mnt
[aaa@qq.com 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
- 解压跨平台组件包和源码包
[aaa@qq.com mnt]# tar zxvf apr-1.6.2.tar.gz -C /opt
[aaa@qq.com mnt]# tar zxvf apr-util-1.6.0.tar.gz -C /opt
...............省略部分内容
[aaa@qq.com mnt]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt
...............省略部分内容
[aaa@qq.com mnt]# cp dog.jpg /usr/local/httpd/htdocs/
[aaa@qq.com mnt]# cd /opt
[aaa@qq.com opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh
[aaa@qq.com opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr
[aaa@qq.com opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
- 安装编译工具
[aaa@qq.com opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> zlib-devel \
> expat-devel \
> pcre \
> perl
...........省略部分内容
- 配置编译
[aaa@qq.com opt]# cd /opt/httpd-2.4.29/
[aaa@qq.com httpd-2.4.29]#./configure \
--prefix=/usr/local/httpd \
--enable-so \
--enable-deflate \
--enable-expires \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi
........省略部分内容
[aaa@qq.com httpd-2.4.29]# make #生产可执行的二进制文件
........省略部分内容
[aaa@qq.com httpd-2.4.29]# make install #复制二进制文件到系统,配置应用环境
........省略部分内容
- 创建软链接便于管理
[aaa@qq.com 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行)
- 编辑默认首页、开启服务
[aaa@qq.com bin]# vim /usr/local/httpd/htdocs/index.html
<html><body><h1>It works!</h1>
<img src="dog.jpg"/>
</body></html>
------->wq
[aaa@qq.com bin]# ./apachectl start
[aaa@qq.com 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站点目录中
[aaa@qq.com conf]# cd /mnt
[aaa@qq.com 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
[aaa@qq.com mnt]# cp error.png /usr/local/httpd/htdocs/
[aaa@qq.com mnt]# cd /usr/local/httpd/htdocs/
[aaa@qq.com htdocs]# ls
dog.jpg error.png index.html
- 重启Apache
[aaa@qq.com bin]# ./apachectl stop
[aaa@qq.com bin]# ./apachectl start
#重启后,当捕捉到有客户端访问盗链网站,则本机会自动检测到error.png图片然后展现给客户端查阅
2.2.5 检测防盗链
-
打开win10-1 客户机,清理网页缓存后再次访问盗链网站
防盗链制作成功
2.3 版本隐藏设置
-
安装抓包软件
-
访问源主机网页
-
使用抓包软件查看Apache版本
可见,在未设置版本隐藏时,客户机只需要安装抓包软件就可以清晰捕捉到源网站的Apache版本,这样就存在一些安全隐患
2.3.1 版本隐藏设置
- 修改配置文件
[aaa@qq.com conf]# vim httpd.conf #进入主配置文件
Include conf/extra/httpd-default.conf #开启子配置文件功能
------》wq
[aaa@qq.com conf]# ls
extra httpd.conf magic mime.types original
[aaa@qq.com conf]# cd extra
[aaa@qq.com 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
[aaa@qq.com extra]# vim httpd-default.conf
ServerTokens Prod
#搜索/Tokens (55行) 找到版本信息,将Full(显示名称)修改为Prod(不显示版本信息)
ServerSignature Off
#在下方10行的位置查看签名信息,确认为关闭状态
-----》wq
- 重启Apache
[aaa@qq.com extra]# cd ../../
[aaa@qq.com httpd]# cd bin/
[aaa@qq.com bin]# ./apachectl stop
[aaa@qq.com bin]# ./apachectl start
2.3.2 测试版本隐藏设置
- 使用win10-1(客户机)重新访问源主机网站
-
查看抓包工具抓取的信息
以上Apache的防盗链和隐藏版本均已配置完成
总结
防盗链与版本隐藏需要注意的细节主要在与检查主配置文件中的模块功能是否开启,配置文件中的空格是否少打漏打,子配置文件中的签名模块是否关闭。手工编译安装时的环境和 ./configure 支持的功能是否齐全
之后会继续介绍Apache的深度优化系列~
上一篇: 用C语言实现希尔排序
下一篇: 正则表达式