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

配置防盗链:

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

1.配置虚拟主机文件增长如下内容:html

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>

修改完以后从新加载一下配置文件:linux

[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表明当知足某个条件时,为变量赋值,通常结合其余指令使用。apache

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

Order Allow,Denybash

 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://开头。curl

 

访问控制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

相关文章
相关标签/搜索