一.防盗链概述
- 防盗链就是防止别人的网站代码里面盗用服务器的图片、文件、视频等相关资源;如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力;作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用
- HTTP标准协议中专门的Referer字段记录,它的作用是可以追溯上一个入站地址是什么,此外,对于资源文件,可以追踪到包含显示它的网页地址是什么。因此,防盗链方法基于这个Referer字段
- Apache防盗链需要安装mod_rewrite模块
二.隐藏版本信息概述
- 一般情况下,Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
- 在生产环境中要配置Apache的隐藏版本信息
- 可以使用Fiddler抓包工具分析,网站的版本信息
- 安装DNS服务
[root@localhost ~]# yum install bind -y
- 配置DNS服务,通过脚本完成
[root@localhost ~]# vim dns.sh
//脚本文件,主要通过正则表达式完成
#!/bin/bash
//获取本地IP地址
IP=$(ifconfig | grep inet | awk 'NR==1 {print}' | awk '{print $2}')
//修改主配置文件
awk '/127.*/' /etc/named.conf | sed -i 's/127.0.0.1/any/' /etc/named.conf
awk '/allow-query/' /etc/named.conf | sed -i 's/localhost/any/' /etc/named.conf
//修改区域配置文件
sed -i '19,23w abc.txt' /etc/named.rfc1912.zones
sed -i '24r abc.txt' /etc/named.rfc1912.zones
sed -i '25 s/localhost/kgc.com/' /etc/named.rfc1912.zones
sed -i '27 s/named.localhost/kgc.com.zone/' /etc/named.rfc1912.zones
//修改区域数据配置文件
cp -p /var/named/named.localhost /var/named/kgc.com.zone
sed -i '10d' /var/named/kgc.com.zone
sed -i "9awww IN A $IP" /var/named/kgc.com.zone
//启动服务
systemctl start named
//查看服务开启状态
[root@localhost ~]# chmod +x dns.sh
[root@localhost ~]# ./dns.sh
[root@localhost ~]# netstat -ntap | grep named
tcp 0 0 192.168.179.167:53 0.0.0.0:* LISTEN 3310/named
- 关闭防火墙
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]#
- 验证DNS域名解析功能(windows10,需要将客户的DNS服务器的IP地址改为192.168.179.167)
- 解压缩包
[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 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 install pcre pcre-devel zlib-devel gcc gcc-c++ expat-devel -y
- 配置Apache服务,防盗链需要mod_rewrite模块
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-deflate \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi
- 编译且安装
[root@localhost httpd-2.4.29]# make && make install
- 添加apache服务到系统
grep -v "#" /usr/local/httpd/bin/apachectl > /etc/init.d/httpd
vim /etc/init.d/httpd
#!/bin/bash
# chkconfig:2345 85 15
# description:Apache is a World Wide Web server.
chmod +x /etc/init.d/httpd
chkconfig --add httpd
chkconfig --level 35 httpd on
- 设置主配置文件
[root@localhost httpd-2.4.29]# vim /usr/local/httpd/conf/httpd.conf
ServerName www.kgc.com:80
Listen 192.168.179.167:80
#Listen 80
#开启rewrite模块
LoadModule rewrite_module modules/mod_rewrite.so
#配置mod_rewrite模块的内容
<Directory "/usr/local/httpd/htdocs">
224 RewriteEngine On
225 RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$ [NC]
226 RewriteCond %{HTTP_REFERER} !^http://kgc.com$ [NC]
227 RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$ [NC]
228 RewriteCond %{HTTP_REFERER} !^http://www.kgc.com$ [NC]
229 RewriteRule .*\.(gif|jpg|swf) http://www.kgc.com/error.png
</Directory>
- 验证模块
[root@localhost httpd-2.4.29]# cd /usr/local/httpd/bin
[root@localhost bin]# ./apachectl -t
Syntax OK
[root@localhost bin]#
- 隐藏版本号
//主配置文件中
Include conf/extra/httpd-default.conf //开启
[root@localhost httpd]# cd conf/extra/
[root@localhost extra]# vim httpd-default.conf
ServerTokens Prod //Full改为Prod
ServerSignature Off //默认关闭状态
- 加入页面图片
<html>
<body>
<img src="a.jpg"/>
<h1>It works!</h1>
</body>
</html>
[root@localhost htdocs]# ls
a.jpg index.html
- 开启服务,验证服务
[root@localhost bin]# ./apachectl start
[root@localhost bin]# ./apachectl -t
Syntax OK
[root@localhost bin]#
- 隐藏版本的验证
- 安装另外一台盗链主机
[root@localhost opt]# yum install httpd -y
[root@localhost opt]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# vim index.html
[root@localhost html]# ls
index.html
[root@localhost html]#vim index.html
<html>
<body>
<h1>this is test web</h1>
<img src=”http://192.168.179.167/a.jpg”/>
</body>
</html>