centos 7.6 —— Apache 网页防盗链和隐藏Apache版本号
文章目录
一、Apache 网页防盗链
使用三台主机模拟盗链
三台主机配置与功能
盗链模拟步骤
- 两台主机配置测试页面
- 盗链网站的测试网页,盗用源主机网站目录下的一个logo.jpg文件
- 在Windows中访问验证
配置规则变量说明
- %{HTTP_REFERER}:浏览header中的链接字段,存放一个链接的URL,代表是从哪个链接访问所需的网页
- !^:不以后面的字符串开头
- .*$:以任意字符结尾
- NC:不区分大写
- R:强制跳转
规则匹配说明
- RewriteEngine On:打开网页重写功能
- RewriteCond:设置匹配规则
- RewriteRule:设置跳转动作
规则匹配
- 如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配
防盗链——服务端配置
(1)手工编译Apache
准备阶段
安装包:apr-1.7.0.tar.gz 、apr-util-1.6.1.tar.gz 、httpd-2.4.25.tar.gz
实验步骤
[root@localhost opt]# tar zxvf apr-1.7.0.tar.gz -C /opt
[root@localhost opt]# tar zxvf apr-util-1.6.1.tar.gz -C /opt
[root@localhost opt]# tar zxvf httpd-2.4.25.tar.gz -C /opt
[root@localhost opt]# mv apr-1.7.0/ httpd-2.4.25/srclib/apr
[root@localhost opt]# mv apr-util-1.6.1/ httpd-2.4.25/srclib/apr-util
[root@localhost opt]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl ==//安装gcc的编译和pcre 包是per语言 pcre-devel :正则表达式 ==
[root@localhost opt]# yum -y install zlib-devel //压缩工具
[root@localhost httpd-2.4.25]# ./configure \
>--prefix=/usr/local/httpd \
>--enable-so--enable-rewrite\ //so 开启核心功能模块和web 服务,rewrite 开启重写功能(防盗链使用)
>--enable-charset-lite\ //开启字符集
>--enable-cgi
>--enable-deflate //开启网页压缩
[root@localhost httpd-2.4.25]#make
[root@localhost httpd-2.4.25]#make install
[root@localhost httpd-2.4.25]# cd /usr/local/ //到安装路径
[root@localhost local]# cd httpd/
[root@localhost httpd]# cd conf/
[root@promote bin]# cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd
[root@promote bin]# ls /etc/init.d
functions httpd netconsole network README
[root@promote bin]# vim /etc/init.d
[root@promote bin]# vim /etc/init.d/httpd
#!/bin/sh
#chkconfig: 35 85 21 //35级别自动运行 第85个启动 第21个关闭
#description:Apache is a World Wide Web server
[root@promote local]# chkconfig --add httpd //将httpd加入到service 管理器
[root@promote /]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf //将http的配置文件做软链接到/etc/httpd.conf
[root@promote local]# cd /usr/local/httpd/conf
[root@promote conf]# vim httpd.conf
Listen 192.168.75.134:80 //修改Apache服务器的地址
#Listen 80
#ServerName www.kgc.com:80 //设置域名的地址
[root@promote /]# ln -s /usr/local/httpd//bin/* /usr/local/bin //将http的数据文件软链接到/usr/local/bin目录中
[root@promote /]# ls /usr/local/httpd//bin
ab checkgid htcacheclean httxt2dbm
apachectl dbmmanage htdbm logresolve
apr-1-config envvars htdigest rotatelogs
apu-1-config envvars-std htpasswd
apxs fcgistarter httpd
[root@promote /]# service httpd start
httpd (pid 66785) already running
[root@promote /]# httpd -t //检查语法
Syntax OK
[root@promote /]# netstat -ntap | grep 80
tcp 0 0 192.168.75.134:80 0.0.0.0:* LISTEN 66785/httpd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 8031/dnsmasq
[root@promote /]#
[root@promote /]# iptables -F
[root@promote /]# setenforce 0
[root@promote /]#
(2)虚拟机win 10验证
(3)配置dns 服务
[root@localhost /]# yum -y install bind
[root@localhost /]# vim /etc/named.conf
listen-on port 53 { any; };
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
[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.75.134
[root@localhost named]#systemctl restart named
(3)虚拟机win10 验证
(4)主服务端 防盗链配置
[root@localhost named]# vim /etc/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so //去掉注释
****************添加如下命令*************************
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http://kgc.com/.*$[NC]
RewriteCond %{HTTP_REFERER} !^http://kgc.com/$[NC]
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/.*$[NC]
RewriteCond %{HTTP_REFERER} !^http://www.kgc.com/$[NC]
RewriteRule .*\.(gif|jpg|swf)$ http://www.kgc.com/error.png
[root@localhost named]#/usr/local/httpd/htdocs
[root@localhost htdocs]# ll
总用量 100
-rw-r--r--. 1 root root 29221 8月 6 15:26 error.png ///将需要的图片拖至当前网页的目录下
-rw-r--r--. 1 root root 89 8月 6 15:39 index.html
-rw-r--r--. 1 root root 64598 8月 5 22:12 timg.jpg
[root@localhost htdocs]# vim index.html
<html><body><h1>ke la la !!!!!!!</h1></body></html>
<img src="timg.jpg"width=500px/>
(4)虚拟机win10 验证域名访问
(5) 盗链服务端配置
1. yum 安装Apache服务
[root@localhost /]# yum -y install httpd
[root@localhost /]#cd /etc/httpd/conf
[root@promote conf]# vim httpd.conf
[root@promote conf]# systemctl restart httpd
[root@promote conf]# iptables -F
[root@promote conf]# setenforce 0
setenforce: SELinux is disabled
[root@promote conf]# cd /var/www/html/
[root@promote html]# ll
总用量 0
[root@promote html]# vim index.html
[root@promote html]# systemctl restart httpd
[root@promote html]# vim index.html
[root@promote html]# systemctl restart httpd
[root@promote html]# vim index.html
<h1> web !!!!!!!!! </h1>
<img src="http://www.kgc.com/timg.jpg" width=500px/>
(6)主服务端未设置防盗链时
- 网站可以盗链主服务端的网页图片
(7)主服务端——设置防盗链后
虚拟机win10 验证
注意事项:虚拟机win10 在验证时,需要多次清除浏览器的缓存,要不然无法实时验证。因为浏览器会有缓存之前的信息。就不能出现设置之后的效果。
排错小结
故障原因
主服务端Apache主配置文件httpd.conf 的防盗链语句
RewriteRule .*.(gif|jpg|swf)$http://www.kgc.com/error.png
注意: error图片的格式不能属于过滤的图片的格式(jpg 、 gif 、 swf )
所以:这里的error图片的格式必须是png 格式才能访问网页,图片才能正常显
示否则网页无法显示图片。
二、隐藏Apache版本号
(1)修改Apache主配置文件httpd.conf
[root@localhost conf]#vim /etc/httpd.conf
Include conf/extra/httpd-default.conf //去掉注释
[root@localhost conf]#cd /usr/local/httpd/conf/extra
[root@localhost extra]# vim httpd-default.conf
ServerTokens Prod //将这条命令Full 改为 Prod
[root@localhost extra]# systemctl restart httpd
(2)未隐藏Apache版本号
(3)虚拟机win10 验证Apache隐藏版本号
注意:虚拟机win10 浏览器验证时 ,需要多次清除缓存。