apache防盗链与隐藏版本
一、配置Apache实现防盗链
1.1 防盗链概述
1、防盗链是防止别人的网站代码里面盗用我们自己服务器上的图片、文件、视频等相关资源
2、如果别人盗用网站的这些静态资源,明显的是会增大服务器的带宽压力
3、作为网站的维护人员,要杜绝服务器的静态资源被其他网站盗用
1.2 使用三台主机模拟盗链
三台主机配置与功能
IP地址 | 域名 | 用途 |
---|---|---|
192.168.2.19 | www.kxr.com | 源主机 |
192.168.2.4 | www.dt.com | 盗链网站 |
客户端 | Windows 10 | 火狐浏览器 |
1.3 盗链模拟步骤
1.两台主机配置测试页面
2.盗链网站的测试网页, 盗用源主机网站目录下的一个logo.jpg文件
3.在Windows中访问验证
1.4 检查Apache是否安装了mod_ rewrite模块
- /usr/local/apache/bin/apachectl -t -D DUMP_ MODULES
- 如果输出中没有rewrite_ module (static),则说明编译时没有安装mod_ rewrite模块
- 如果没有安装,需要重新编译安装
- ./configure -enable-rewrite…
- make &&make install
1.5 设置规则变量说明
- %{HTTP_ _REFERER}:浏览header中的链接字段,存放一个链接的URL,代表是从哪个链接访问所需的网页
- !^:不以后面的字符串开头
- .*$:以任意字符结尾
- NC:不区分大写
- R:强制跳转
1.6规则匹配说明
- RewiteEngine On:打开网页重写功能
- RewriteCond:设置匹配规则
- RewiteRule:设置跳转动作
规则匹配
如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配
1.7 配置操作演示
- 修改配置文件启用防盗链功能并设置规则
- RewriteEngine On
- RewriteCond %(HTTP_ REFERER} !^http://kxr.com/.*$ [NC]
- RewriteCond %HTTP_ REFERER} !^http://kxr.com$ [NC]
- RewriteCond %{HTTP_ REFERER} !^http://www.kxr.com/.*$ [NC]
- RewriteCond %{HTTP_ REFERER} !^http://www.kxr.com/$ [NC]
- RewiteRule …(gif|jpg|swf)$ http://www.kxr.com/error.png
二、配置Apache隐藏版本信息
1、Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
2、生产环境中要配置Apache隐藏版本信息
3、配置Apache隐藏版本信息
将主配置文件httpd. conf以下行注释去掉
- #Include conf/extra/httpd-defaut.conf
修改httpd- default.conf文件 - SeverTokens Full修改为SeverTokens Prod
4、重启httpd服务,访问验证
三、实验
实验一:Apache实现防盗链
Apache防盗链
192.168.200.110是官网
192.168.200.40是盗取图片的网站
[root@promote ~]# hostnamectl set-hostname kgc
[root@promote ~]# su
[root@kgc ~]#
[root@kgc ~]# iptables -F
[root@kgc ~]# setenforce 0
[root@kgc ~]# yum install -y bind
[root@kgc ~]# vim /etc/named.conf
options {
listen-on port 53 { any; };
allow-query { any; };
[root@promote ~]# vim /etc/named.rfc1912.zones
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-update { none; };
};
[root@kgc ~]# cd /var/named/
[root@kgc named]# cp -p named.localhost kgc.com.zone
[root@kgc named]# vim kgc.com.zone
www IN A 192.168.200.110
[root@kgc named]# systemctl start named
打开虚拟机中win10查看
C:\Users\zhouwei>nslookup www.kgc.com
服务器: UnKnown
Address: 192.168.200.110
名称: www.kgc.com
Address: 192.168.200.110
手工编译安装Apache
[root@kgc ~]# cd /opt/
[root@kgc opt]# ls
apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.25.tar.gz rh
[root@kgc opt]# tar zxvf apr-1.7.0.tar.gz
[root@kgc opt]# tar zxvf apr-util-1.6.1.tar.gz
[root@kgc opt]# tar zxvf httpd-2.4.25.tar.gz
[root@kgc opt]# cp -p apr-1.7.0 httpd-2.4.25/srclib/apr
[root@kgc opt]# cp -p apr-util-1.6.1 httpd-2.4.25/srclib/apr-util
[root@kgc opt]# yum -y install gcc gcc-c++ pcre pcre-devel perl expat-devel zlib-devel
[root@kgc opt]# cd httpd-2.4.25/
[root@kgc httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-deflate --enable-so --enable-rewrite --enable-charset-lite --enable-cgi
[root@kgc httpd-2.4.25]# make && make install
[root@kgc httpd-2.4.25]# ln -s /usr/local/httpd/conf/httpd.conf /etc/ //设置软连接,快捷操作
[root@kgc httpd-2.4.25]# vim /etc/httpd.conf //查看配置文件
[root@kgc httpd-2.4.25]# cd /usr/local/httpd/
[root@kgc httpd]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@kgc httpd]# cd htdocs/
[root@kgc htdocs]# ls
index.html
[root@kgc htdocs]# ls //使用xshell拖入图片
error.png girl.jpg index.html
[root@kgc htdocs]# vim index.html
<html><body><h1>It works!</h1></body></html>
<img src="girl.jpg"/>
[root@kgc htdocs]# cd ..
[root@kgc httpd]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@kgc httpd]# vim conf/httpd.conf
Listen 192.168.200.110:80
#Listen 80
ServerName www.kgc.com:80
[root@kgc httpd]# cd bin/
[root@kgc bin]# ./apachectl start //开启Apache服务
[root@kgc bin]# netstat -antp | grep httpd //查看端口是否开启
tcp6 0 0 :::80 :::* LISTEN 124497/httpd
进入虚拟机win10,输入www.kgc.com,跳转出来的网站是girl图片
#
使用另一台服务器192.168.200.40做盗链网站
[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y httpd
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.200.40:80
#Listen 80
ServerName www.test.com:80
[root@localhost ~]# cd /var/www/html/ //创建首页
[root@localhost html]# ls
[root@localhost html]# vim index.html
<h1>this is test web</h1>
<img src="http://www.kgc.com/girl.jpg"/> //出现域名一定要解析,不然没用,可换成IP地址
[root@localhost html]# echo "nameserver 192.168.200.110" > /etc/resolv.conf //配置DNS解析服务器,找110主机解析地址
[root@localhost html]# systemctl start httpd
[root@localhost html]# netstat -ntap | grep httpd
tcp 0 0 192.168.200.40:80 0.0.0.0:* LISTEN 69354/httpd
在虚拟机上输入192.168.200.40,跳转出的图片为girl.jpg
[root@kgc httpd]# cd /usr/local/httpd/conf/
[root@kgc conf]# vim httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so //开启rewrite模块
开启防盗链
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@kgc conf]# cd ..
[root@kgc httpd]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@kgc httpd]# cd bin/
[root@kgc bin]# ./apachectl stop
[root@kgc bin]# ./apachectl start
实验二:隐藏版本号
打开监控软件,然后浏览页面,可以查看到版本号
[root@kgc bin]# cd …
[root@kgc httpd]# vim conf/httpd.conf
Include conf/extra/httpd-default.conf 开启功能
[root@kgc httpd]# cd conf/extra/
[root@kgc extra]# vim httpd-default.conf
ServerTokens Prod
[root@kgc extra]# cd …
[root@kgc conf]# cd …
[root@kgc httpd]# cd bin/
[root@kgc bin]# ./apachectl stop
[root@kgc bin]# ./apachectl start
打开浏览器浏览页面,没有版本号了