Apache防盗链
- 防盗链就是防止别人的网站代码里面盗用服务器的图片,文件,视频等相关资源
- 如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
- 所有作为网站的维护人员,是要杜绝我们服务器的静态资源被其他网站盗用
配置规则变量说明
* %{HTTP_REFERER}:浏览header中的链接字段,存放一个链接的URL,
代表是从哪个链接访问所需的网页
* !^:不以后面的字符串开头
* .*$:以任意字符结尾
* NC:不区分大写
* R:强制跳转
规则匹配说明
RewriteEngineOn:打开网页重写功能
RewriteCond:设置匹配规则
RewriteRule:设置跳转动作
规则匹配
如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配
配置操作演示
修改配置文件启用防盗链功能并设置规则:
RewriteEngineOn
RewriteCond %{HTTP_REFERER} !^http://test.com/.*$[NC]
RewriteCond %{HTTP_REFERER} !^http://test.com$[NC]
RewriteCond %{HTTP_REFERER} !^http://www.test.com/.*$[NC]
RewriteCond %{HTTP_REFERER} !^http://www.test.com/$[NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.test.com/error.html [R,NC]
环境
一台Linux服务器(192.168.13.128)
一台win10测试机
一台win7盗链机(192.168.13.135)
1,yum安装DNS服务,并配置配置文件
[root@localhost ~]# yum install bind -y ##安装bind服务器
[root@localhost ~]# vim /etc/named.conf ##配置主配置文件信息
options {
listen-on port 53 { any; }; ##监听所有
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; }; ##允许所有
[root@localhost ~]# vim /etc/named.rfc1912.zones ##配置区域配置文件
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-update { none; };
};
[root@localhost ~]# cd /var/named
[root@localhost named]# cp -p named.localhost kgc.com.zone ##复制模板为kgc.com.zone
[root@localhost named]# vim kgc.com.zone ##修改区域数据配置文件信息
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.13.128 ##解析地址为本机地址
[root@localhost named]# systemctl start named ##启动DNS解析服务
[root@localhost named]# systemctl stop firewalld.service ##关闭防火墙
[root@localhost named]# setenforce 0
2,远程共享挂载到Linux上
1)在Windows上将LAMP所需压缩软件包共享出来(此处如有问题请看之前的博客相关文章)
2)在Linux上使用远程共享获取文件并挂载到/mnt目录下
root@localhost ~]# smbclient -L //192.168.100.3/
Sharename Type Comment
--------- ---- -------
LAMP-C7 Disk
[root@localhost ~]# mount.cifs //192.168.100.3/LAMP-C7 /mnt
##远程挂载软件包到/mnt目录
3,手工编译安装Apache
1)将源码包解压到/opt目录下
[root@localhost mnt]# cd /mnt ##切换到/mnt目录下
[root@localhost mnt]# tar zxvf apr-1.6.2.tar.gz -C /opt/ ##解压源码包到/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]# cd /opt //进入/opt目录
[root@localhost opt]# ls //查看解压的文件
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh
2)将apr组件包移动到http中并安装编译工具
[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]# yum -y install \
gcc \ //c语言
gcc-c++ \ //c++语言
make \ //编译工具
pcre-devel \ //pcre语言工具
expat-devel \ //识别标签性语言工具
perl \
pcre \
zlib-devel //数据压缩用的函式库
3)配置安装目录及各种模块
[root@localhost opt]# cd /opt/httpd-2.4.29/
[root@localhost httpd-2.4.29]#./configure \ //配置
--prefix=/usr/local/httpd \
--enable-deflate \ //配置压缩模块
--enable-so \ //apache核心模块开启
--enable-rewrite \ //开启重写功能,防盗链
--enable-charset-lite \ //支持字符集,简体中文
--enable-cgi //通用网关接口
...
4)编译和安装
[root@localhost httpd-2.4.29]# make //生成可执行的二进制文件
...
[root@localhost httpd-2.4.29]# make install //复制二进制文件到系统,配置应用环境
...
5)配置http主配置文件
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin cgi-bin error icons lib man modules
build conf htdocs include logs manual
[root@localhost httpd]# cd conf/ ##切换到http主配置文件中
[root@localhost conf]# vim /etc/httpd.conf ##配置主配置文件
Listen 192.168.13.128:80 ##设置监听地址
#Listen 80
ServerName www.kgc.com:80 ##设置域名
[root@localhost conf]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf ##方便管理创建软连接
4,编辑网页
1)切换到你的共享挂载点,将图片复制到站点中
[root@localhost conf]# cd /mnt ##切换到挂载点
[root@localhost mnt]# cp kali.jpg /usr/local/httpd/htdocs/ ##将图片复制到站点中
[root@localhost mnt]# cd /usr/local/httpd/htdocs/
[root@localhost htdocs]# ls ##查看图片复制成功
index.html kali.jpg
2)编辑站点的首页内容,并启动
[root@localhost ~]# cd /usr/local/httpd/
[root@localhost httpd]# cd htdocs/ ##切换到站点
[root@localhost htdocs]# ls
index.html kali.jpg
[root@localhost htdocs]# vim index.html ##编辑网页内容,将图片加入到网页中
It works!
##将图片放到网页中
[root@localhost htdocs]# cd /usr/local/httpd/bin/
[root@localhost bin]# ./apachectl start ##开启
5,用win10测试机测试网页,并查看图片的属性情况
6,用win7盗链机器访问网页
1)修改DNS解析服务器地址
2)访问网站
3)查看网页图片的属性信息
7,在win7盗链机器上安装web网站服务并使用kgc.com的网页图片
1)在win7上搭建网站服务
2)打开web管理器
3) 编辑首页的html文件,修改文本为index.html
4) 将编辑好的首页内容放到站点中
8,利用win10测试机访问盗链网站的信息(关闭防火墙)
9,开启防盗链配置模块
[root@localhost bin]# vim ../conf/httpd.conf ##编辑http配置文件
LoadModule rewrite_module modules/mod_rewrite.so ##开启防盗链模块
##找到htdocs并添加权限内容
249 RewriteEngine On
250 RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]
251 RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
252 RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]
253 RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/$ [NC]
254 RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png ##防盗链图片
[root@localhost bin]# cp /mnt/error.png /usr/local/httpd/htdocs/ ##将error图片放到站点中
[root@localhost bin]# ./apachectl stop ##关闭
[root@localhost bin]# ./apachectl start ##开启
10,测试盗链模块开启之后盗链网站win7网页的内容
配置Apache隐藏版本信息
- Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
- 生产环境中要配置apache隐藏版本信息
- 可使用Fiddler工具分析
1,正常访问网页时用抓包软件查看
2,配置http主配置文件
[root@localhost bin]# vim /etc/http.conf ##配置主配置文件
Include conf/extra/httpd-default.conf ##开启子配置文件
[root@localhost bin]# cd ../
[root@localhost httpd]# cd conf/
[root@localhost conf]# ls
extra httpd.conf magic mime.types original
[root@localhost conf]# cd extra/ ##切换到extra目录下
[root@localhost extra]# vim httpd-default.conf ##配置子配置文件
ServerTokens Prod ##将full全部修改为prod
ServerSignature Off ##签名关闭
3,关闭服务并重新开启服务查看抓包信息
[root@localhost conf]# cd ../
[root@localhost httpd]# cd bin/
[root@localhost bin]# ./apachectl stop ##关闭
[root@localhost bin]# ./apachectl start ##开启
谢谢阅读!!!