配置防盗链,访问控制Directory,访问控制FilesMatch

配置防盗链:

防盗链能限制不认识的referer的访问,能够禁止别人的服务器引用或转发我服务器上的内容,这样可以防止别人盗用我服务器上的资源,服务器的资源被盗用会导致网络带宽的使用量上升。

1.配置虚拟主机文件增加以下内容:

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com>
       SetEnvIfNoCase Referer "http://111.com" local_ref
       SetEnvIfNoCase Referer "http://aaa.com" local_ref
       SetEnvIfNoCase Referer "^$" local_ref
       <FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">
           Order Allow,Deny
           Allow from env=local_ref
       </FilesMatch>
   </Directory>

修改完之后重新加载一下配置文件:

[root@aming-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@aming-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

SetEnvIfNoCase : SetEnvIf指令根据客户端的请求属性设置环境变量,SetEnvIfNoCase代表当满足某个条件时,为变量赋值,一般结合其他指令使用。

SetEnvIfNoCase Referer "http://111.com"; local_ref:       将满足条件的refer打上标记local_ref

Order Allow,Deny

 Allow from env=local_ref      : 这段表示除了local_ref可以同行,其余的全部禁掉

2.使用curl模拟Referer进行测试

[root@aminglinux ~]# curl -e "http://www.qq.com/123.txt";; -x127.0.0.1:80 111.com/cc.jpg -I     #模拟www.qq.com显示403 
HTTP/1.1 403 Forbidden
Date: Sun, 04 Mar 2018 22:09:49 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@aminglinux ~]# curl -e "http://111.com/123.txt";; -x127.0.0.1:80 111.com/cc.jpg -I           #模拟成111.com成功访问
HTTP/1.1 200 OK
Date: Sun, 04 Mar 2018 22:10:40 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Last-Modified: Mon, 21 Aug 2017 14:32:40 GMT
ETag: "54bcb-5574459d3d200"
Accept-Ranges: bytes
Content-Length: 347083
Content-Type: image/jpeg

使用-e选项时,域名的描述不能乱写,要以http://开头。

访问控制Directory:

除了Directory的访问控制还有FilesMatch的访问控制,Directory访问控制类似于限制一个目录的访问,而FilesMatch访问控制则类似于限制一个文件或文件链接的访问,FilesMatch要写在Directory之内。

1. 编辑虚拟主机配置文件

vim /usr/local/httpd2.4/conf/extra/httpd-vhosts.conf

2. 在配置文件里添加如下段,目的是对111.com下的admin目录进行访问控制

<Directory /data/wwwroot/111.com/admin/>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1     = 指定某IP访问
     </Directory>

Order  用来定义顺序        Order deny,allow    表示先deny 再allow

这段话表是拒绝所有的访问,仅通过127.0.0.1

3. 配置完成后需要检查配置文件以及重新加载配置文件才会生效

/usr/local/httpd2.4/bin/apachectl -t
/usr/local/httpd2.4/bin/apachectl graceful

4. 使用curl进行测试是否成功

[root@aminglinux ~]# curl -x127.0.0.1:80 111.com/admin/index.php
test

[root@aminglinux ~]# curl -x127.0.0.1:80 111.com/admin/index.php -I                  #使用127.0.0.1可以正常访问,
HTTP/1.1 200 OK
Date: Mon, 05 Mar 2018 16:26:57 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8

[root@aminglinux ~]# curl -x192.168.177.7:80 111.com/admin/index.php -I          #使用192.168.177.7访问失败提示403 Forbidden
HTTP/1.1 403 Forbidden
Date: Mon, 05 Mar 2018 16:27:42 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

访问控制FilesMatch:

 1.对111.com下的admin.php开头页面进行访问控制,同样在虚拟主机配置文件上添加如下段:

<Directory /data/wwwroot/111.com>
         <FilesMatch  "admin.php(.*)">
           Order deny,allow
           Deny from all
           Allow from 127.0.0.1
         </FilesMatch>
</Directory>

2. 使用curl进行测试是否成功

[root@aminglinux ~]# curl -x192.168.177.7:80 111.com/admin.php?=1=2 -I   # 显示403 Forbidden 不允许访问 404表示允许访问
HTTP/1.1 403 Forbidden
Date: Mon, 05 Mar 2018 19:23:54 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

扩展 几种限制ip的方法 http://ask.apelearn.com/question/6519 apache 自定义header http://ask.apelearn.com/question/830 apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蓝天

编译hbase-1.2.3源代码

确保机器可以正常访问Internet,如能正常访问https://repo.maven.apache.org等,如果是代理方式则需要设置好eclipse和m...

1822
来自专栏JAVA同学会

Redis分布式锁的try-with-resources实现

在当今这个时代,单体应用(standalone)已经很少了,java提供的synchronized已经不能满足需求,大家自然

943
来自专栏大数据学习笔记

Ansible常用模块介绍

1、 ansible-doc 希望知道更加详细的module的信息,最好的方法是使用ansible自带的ansible-doc的-s选项 [root@node1...

4055
来自专栏开发技术

Redis Cluster的搭建与部署,实现redis的分布式方案

  上篇Redis Sentinel安装与部署,实现redis的高可用实现了redis的高可用,针对的主要是master宕机的情况,我们发现所有节点的数据都是一...

4261
来自专栏深度学习之tensorflow实战篇

mongodb11天之屠龙宝刀(十) 备份 还原 导出 导入::CSV,JSON,BOSN,解决中文乱码

mongodb11天之屠龙宝刀(十) 备份 还原 导出 导入::CSV,JSON,BOSN,解决中文乱码 mongodb数据备份和还原主要二种形式 一种是针...

3033
来自专栏搜云库

Spring Boot 中使用 Redis

Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoD...

3017
来自专栏Web项目聚集地

一文读懂 Spring 集成 Redis

关于 Redis已然是烂大街的技术了,但是近日新起了一个项目需要集成 Redis,看了一下之前的封装实在是不怎么优雅,于是查了一下发现了一个非常简单的解决方案,...

783
来自专栏运维小白

Linux基础(day44)

11.22 访问日志不记录静态文件 访问日志不记录指定类型的文件目录概要 网站大多元素为静态文件,如图片、css、js等,这些元素可以不用记录 把虚拟主机配置文...

25210
来自专栏龙首琴剑庐

Spring Session 实现分布式会话管理

1、分布式会话管理是什么? 在Web项目开发中,会话管理是一个很重要的部分,用于存储与用户相关的数据。通常是由符合session规范的容器来负责存储管理,也就是...

5019
来自专栏java 成神之路

Spring mvc HTTP协议之缓存机制

39311

扫码关注云+社区