十一周一次课(3月6日)

11.25 配置防盗链 11.26 访问控制Directory 11.27 访问控制FilesMatch

11.25 配置防盗链

通过限制referer来实现防盗链的功

防盗链,通俗讲,就是不让别人盗用你网站上的资源。这个资源,通常指的是图片、视频、歌曲、文档等。referer是指:你通过A网站的一个页面http://a.com/a.html里面的链接去访问B网站的的一个页面http://b.com/b.html,那么这个B网站页面的referer就是http://a.com/a.html。也就是说,一个referer其实就是一个网址,即前一个被访问页面的 URL,是来源网址

编辑虚拟机主机配置文件:vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<Directory /data/wwwroot/111.com>    //定义防盗链目录:本站点

       SetEnvIfNoCase Referer "http://111.com" local_ref     //定义Referer白名单:111.com

       SetEnvIfNoCase Referer "http://aaa.com" local_ref

       SetEnvIfNoCase Referer "^$" local_ref     //"^$"表示空,当直接在浏览器里输入图片地址去访问它时,它的referer就为空。定义空也是白名单

       <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">      //定义需要保护的文件类型,当访问这些类型的文件时就会被限制。

           Order Allow,Deny     //定义访问控制的顺序,先允许后拒绝

           Allow from env=local_ref    //允许白名单的referer,其它deny

       </filesmatch>

</Directory>

2018.3.6 11周1次课_Linux

测试:用curl命令

-e/--referer <URL> 为 HTTP 数据包指定 Referer Page 信息,即前一个被访问页面的 URL。通常这个信息被服务器用于判断自己是否被盗链,如果发现服务器端有这样的检测机制,则可以使用该参数绕过检测。

                   使用-e来定义referer,这个referer一定要以http://开头,否则不管用

-I/--head    只接收 response数据包中 header 字段的内容。即只显示 HTTP 头,而不显示文件内容

2018.3.6 11周1次课_Linux_02

不在白名单里网址:使用非允许的referer会返回403的状态码

2018.3.6 11周1次课_Linux_03

在白名单里网址:

2018.3.6 11周1次课_Linux_04

查看日志:tail /usr/local/apache2.4/logs/111.com-access_20180306.log

2018.3.6 11周1次课_Linux_05

11.26 访问控制Directory

対于一些比校重要的网站内容,除了可以使用用户认证限制访同之外,込可以通其他一些方法做到限制,比如可以限制IP ,也可以限制user_agent。限制IP指的是限制访问网站的来源IP ,而限制 user-agent ,通常用来限制恶意或者不正常的请求。

 <Directory /data/wwwroot/111.com/admin/>

       Order deny,allow

       Deny from all

       Allow from 127.0.0.1

   </Directory>

使用くDirectory>来指定要限制访问的目录。order定义控制顺序,哪个在前面就先匹配哪个規則。在本例中deny在前面,所以先匹配Deny from all ,这样所有的来源IP都会被限制,然后匹配Allow from 127.0.0.1 ,这祥又允许了127.0.0.1这个IP。最终的效果是,只允许来源IPカ127.0.0.1的访问。

2018.3.6 11周1次课_Linux_06

测试环境:

2018.3.6 11周1次课_学习_07

用curl命令:我们限制的是源IP,而-x后面是目标IP

2018.3.6 11周1次课_学习_08

2018.3.6 11周1次课_Linux_09

访问日志

2018.3.6 11周1次课_学习_10

本机有两个IP,一个是192.168.37.101,一个是127.0.0.1,通过这两个IP都可以访问到站点。 而来源IP分别为192.168.37.101和127.0.0.1, 其实和本机IP是一样的。

浏览器访问提示Forbidden, 其实就是403。再来看日志,可以查看到对应的来源IP,192.168.37.1,希望你不要把来源IP和本机IP搞混了。前面的实验中之所以本机IP和来源一样,就是因为它相当于自己访问 自己。而后面用浏览器访问,相当于拿Windows机器访问Linux服务器

curl测试状态码为403则被限制访问了

11.27 访问控制FilesMatch

可以单独针对某个文件来做限制

核心配置文件内容

<Directory /data/wwwroot/111.com>

   <FilesMatch  "admin.php(.*)">

       Order deny,allow

       Deny from all

       Allow from 127.0.0.1

   </FilesMatch>

</Directory>

2018.3.6 11周1次课_学习_11

状态码:404  //没有对admin做限制,所以允许访问,但找不到网页

2018.3.6 11周1次课_Linux_12

状态码:403   //无法访问,因为做了限制

2018.3.6 11周1次课_Linux_13

上图因为有特殊符号?,所有http://111.com/admin.php?要加上单引号

状态码:404   //127.0.0.1是允许的访问

2018.3.6 11周1次课_学习_14