配置防盗链,访问控制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 条评论
登录 后参与评论

相关文章

来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

1990
来自专栏ASP.NETCore

ASP.NET Core 整合Autofac和Castle实现自动AOP拦截

除了ASP.NETCore自带的IOC容器外,我们还可以使用其他成熟的DI框架,如Autofac,StructureMap等(笔者只用过Unity,Ninjec...

674
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2506
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2517
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2667
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏一个会写诗的程序员的博客

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

2102
来自专栏落花落雨不落叶

canvas画简单电路图

58411
来自专栏魂祭心

原 canvas绘制clock

4004
来自专栏Golang语言社区

【Golang语言社区】GO1.9 map并发安全测试

var m sync.Map //全局 func maintest() { // 第一个 YongHuomap := make(map[st...

4658

扫码关注云+社区