Web服务器群集----Apache 防盗链与隐藏版本号

一: 防盗链理论基础

1.1: 配置防盗链的意义

  • 防盗链是防止别人的网站代码里面盗用我们自己服务器
    上的图片、文件、视频等相关资源
  • 如果别人盗用网站的这些静态资源,明显的是会增大服
    务器的带宽压力
  • 作为网站的维护人员,要杜绝服务器的静态资源被其他
    网站盗用

1.2: 使用三台主机模拟盗链

  • 三台主机配置与功能

    IP地址域名用途
    192.168.2.19www.kxr.com源主机
    192.178.2.4www.dt.com盗链主机
    客户端Windows火狐浏览器

1.3: 配置盗链模拟步骤

  • 两台主机配置测试页面
  • 盗链网站的测试网页page盗用源主机目录page/image的一个logo.jpg文件
  • 在Windows中访问测试网页,并使用Fiddler抓包工具的查看效果图

1.4: 检查Apache是否按照了mode_rewrite模块

  • /usr/local/apache/bin/apachectl -t -D DUMP_MODULES
  • 如果输出中没有rewrite_module(static),则说明编译时没有安装mod_resrite模块
  • 若没有安装则需要重新编译安装
    ./configure --enable-rewrite…
    make && make install

1.5: 配置规则变量说明

  • %{HTTP_REFERER}: 浏览heder中的链接字段,存放一个链接的URL,代表是从哪个访问所需的网页
  • !^: 不以后面的字符串开头
  • .*$: 以任意字符结尾
  • NC: 不区分大写
  • R: 强制跳转

1.6: 规则匹配说明

  • RewriteEngine On:打开网页重写功能

  • RewriteCond:设置匹配规则

  • RewriteRule:设置跳转动作

  • 规则匹配

  • //匹配规则;如果相应变量的值匹配所设置的规则,则逐条往下处理;如果不匹配,则往后的规则不再匹配
    

1.7: 配置文件启用防盗链功能

  • vim /usr/local/httpd/conf/httpd.conf
    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    //跳转动作
    

二: 防盗链实操

2.1: 配置域名解析

[root@kgc ~]# yum install bind -y
[root@kgc ~] 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@kgc ~]# vim /etc/named.rfc1912.zones
.........
zone "kgc.com" IN {
        type master;
        file "kgc.com.zone";
        allow-update { none; };
};

[root@kgc ~]# cp -p /var/named/named.localhost /var/named/kgc.com.zone
[root@kgc ~]# vim /var/named/kgc.com.zone
www IN  A       192.168.100.130
[root@kgc ~]# systemctl stop firewalld
[root@kgc ~]# systemctl start named

mark

mark

2.2: 解压跨平台组件包和源码包

//上传压缩包并解压
[root@kgc opt]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt/
[root@kgc opt]# tar zxvf apr-util-1.6.0.tar.gz -C /opt/
[root@kgc opt]# tar zxvf apr-1.6.2.tar.gz -C /opt/

[root@kgc opt]# ls
apr-1.6.2         apr-util-1.6.0         httpd-2.4.29          rh
apr-1.6.2.tar.gz  apr-util-1.6.0.tar.gz  httpd-2.4.29.tar.bz2
[root@kgc opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@kgc opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util

2.3: 安装编译器和配置及编译安装

[root@localhost httpd-2.4.29]# yum install zlib-devel -y
[root@localhost httpd-2.4.29]# yum -y install gcc gcc-c++ make pcre-devel expat-devel perl
[root@kgc opt]# cd httpd-2.4.29/
./configure \                         '//安装指定路径'    
--prefix=/usr/local/httpd \
--enable-so \                         '//开启核心功能模块' 
--enable-rewrite \                    '//开启重写功能,如防盗链保护'           
--enable-charset-lite \               '//开启字符集'            
--enable-cgi \                        '//开启通用网关接口'
--enable-deflate					  '//开启deflate压缩模块'
[root@kgc htdocs]# make && make install '编译和安装'

2.4: 编写配置文件和首页文件

[root@kgc httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/
[root@kgc httpd-2.4.29]# pwd
/opt/httpd-2.4.29
[root@kgc httpd-2.4.29]# cd /usr/local/httpd/htdocs/
//上传图片
[root@kgc htdocs]# rz -E
rz waiting to receive.
[root@kgc htdocs]# ls
game.jpg  index.html
[root@kgc htdocs]# vim index.html 
<html><body><h1>It works!</h1></body></html>
<img src="game.jpg"/>

2.5: 启动Apache服务

[root@kgc bin]# ./apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::3e57:6df7:fdf:4b49. Set the 'ServerName' directive globally to suppress this message
[root@kgc bin]# vim /etc/httpd.conf
.........
ServerName www.kgc.com:80
Listen 192.168.100.130:80
#Listen 80
[root@kgc bin]# ./apachectl stop
[root@kgc bin]# ./apachectl start
[root@kgc bin]# netstat -natp | grep httpd
tcp        0      0 192.168.100.130:80      0.0.0.0:*               LISTEN      107167/httpd  

mark

2.6:盗链主机配置

7-2 地址192.168.100.120 主机名 prormote 做盗链,盗取7-3 192.168.100.130主机名为kgc 的图片

[root@promote ~]# yum install -y httpd
[root@promote ~]# vim /etc/httpd/conf/httpd.conf 
...........
ServerName www.test.com:80
Listen 192.168.100.120:80
#Listen 80
[root@promote html]# cd /var/www/html      //yum安装httpd的站点目录
[root@promote html]# vim index.html
<h1>this is test web</h1>
<img src="http://www.kgc.com/game.jpg"/>    //盗图
[root@promote html]# ls
index.html
[root@promote html]# echo "nameserver 192.168.100.130" > /etc/resolv.conf 
[root@promote html]# systemctl restart httpd
[root@promote html]# nslookup www.kgc.com
Server:		192.168.100.130
Address:	192.168.100.130#53

Name:	www.kgc.com
Address: 192.168.100.130

mark

成功盗链

2.7: 官网主机开启防盗链功能

官网7-3地址192.168.100.130 主机名kgc

[root@kgc httpd]# vim /usr/local/httpd/conf/httpd.conf
.......
LoadModule rewrite_module modules/mod_rewrite.so          //取消注释
.......
248     Require all granted                              
249     RewriteEngine On                                  //以下6行添加
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
255 </Directory>
[root@kgc httpd]# cd /usr/local/httpd/htdocs/
[root@kgc htdocs]# rz -E
rz waiting to receive.
[root@kgc htdocs]# ls
error.png  game.jpg  index.html

mark

mark

三: 隐藏版本信息

3.1:隐藏版本信息

3.1.1:配置Apache隐藏版本信息的必要性

  • Apache的版本信息,透露了一定的漏洞信息,从而给网站带来安全隐患
    生产环境中要配置Apache隐藏版本信息
    可使用Fiddler抓包工具分析

3.1.2:配置Apache隐藏版本信息详解

  • 将主配置文件httpd.conf以下行注释去掉
    #Include conf/extra/httpd-default.conf
  • 修改httpd-default.conf文件两个地方
  • ServerTokens Full修改为ServerTokens Prod
  • 将ServersSignature On 修改为ServersSignature Off
  • 重启httpd服务,访问网站,抓包测试

四: 隐藏版本信息实操

mark

4.1: Apache主机设置

[root@kgc bin]# vim /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-default.conf   //取消注释
[root@kgc extra]# vim /usr/local/httpd/conf/extra/httpd-default.conf
 55 ServerTokens prod                                          //改为prod
[root@kgc bin]# cd /usr/local/httpd/bin
[root@kgc bin]# ./apachectl stop
[root@kgc bin]# ./apachectl start

4.2: 测试机验证

mark
实验完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值