4月17日任务

11.25 配置防盗链

11.26 访问控制Directory

11.27 访问控制FilesMatch

扩展

几种限制ip的方法 http://ask.apelearn.com/question/6519 

apache 自定义header  http://ask.apelearn.com/question/830 

apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556 


11.25 配置防盗链

blob.png

防盗链,就是不让别人用你网站上的资源。

而这个资源,通常是图片,视频,歌曲,文档等。

referer的概念,通过A网站的一个页面a.com/a.html里面的链接去访问B网站的一个页面b.com/b.html,那么这个B网站的referer就是a.com/a.html。也就是说,一个referer就是一个网址。


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

 配置文件增加如下内容

  <Directory /data/wwwroot/www.123.com>
        SetEnvIfNoCase Referer "http://www.123.com" local_ref
        SetEnvIfNoCase Referer "http://123.com" local_ref
        SetEnvIfNoCase Referer "^$" local_ref
        <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)">
            Order Allow,Deny
            Allow from env=local_ref
        </filesmatch>
    </Directory>

blob.png

Order Allow,Deny 

解析,

限制动作的顺序 。白名单的先允许,其他的将会被Deny

Allow From env=local_ref

允许的源


检查并重新加载

apachectl -t, apachectl graceful 


打开网页测试,测试白名单111.com/1.gif

其中1.gif是属于白名单的其中针对文件类型

截图

加了防盗链之后,会提示没有被允许访问。

如果我们直接在防盗链配置上面加入第三方链接的referer,我们也能直接访问。

例如,在阿铭论坛上访问111.com/1.gif,使其开通白名单即可。以下配置

blob.png

blob.png

blob.png

blob.png

原理就是,111.com/1.gif的referer是阿铭论坛(ask.apelearn.com),而阿铭论坛又被列入白名单当中。所以在阿铭论坛点开111.com/1.gif是完全不受访问的 。


^$表示空referer,就是指开头了就结尾了。


curl测试 curl-e后面接referer的网址

[root@AliKvn 111.com]# curl -e "http://www.qq.com/123.txt" -x127.0.0.1:80 111.com/1.gif -I
HTTP/1.1 403 Forbidden
Date: Tue, 17 Apr 2018 10:15:55 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

状态代码是403,因为referer是http://www.qq.com/123.txt


[root@AliKvn 111.com]# curl -e "http://111.com/123.txt" -x127.0.0.1:80 111.com/1.gif -I
HTTP/1.1 200 OK
Date: Tue, 17 Apr 2018 10:16:58 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.30
Last-Modified: Tue, 14 Jul 2009 05:32:31 GMT
ETag: "91554-46ea3c3d3b9c0"
Accept-Ranges: bytes
Content-Length: 595284
Content-Type: image/gif

状态码是200,因为referer是http://111.com/123.txt,而111.com又是白名单之一,所以是通过的。


11.26 访问控制Directory


 核心配置文件内容

  <Directory /data/wwwroot/www.123.com/admin/>

        Order deny,allow

        Deny from all

        Allow from 127.0.0.1

    </Directory>

blob.png

/admin/ 表示后台

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

因为上面命令语句中,只有127.0.0.1是allow的,其他都是deny。所以当172.18.171.157去访问111.com/admin/index.php是会被限制访问。

而127.0.0.1:80则被允许。

blob.png

关于Order,

Order deny,allow

Order后面先deny,所以Order执行的第一个语句是执行deny的语句。

Deny from all        先拒绝所有,无论是127.0.0.1也是如此。 

Allow from 127.0.0.1      再允许正确来源IP访问127.0.0.1,这里的本地访问指服务器IP本地。

主要目的,为了限制外连、本地连接,只能让本地连接,这里本地连接的IP的本地是服务器IP(127.0.0.1 或者服务器IP段都行)。



11.27  访问控制FilesMatch

核心配置文件内容

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

blob.png

用curl可以看到效果127.0.0.1的状态码404是通过访问了,只是找不到页面(因为页面本来就不存在)

而主机ip 172.18.171.157的状态码403连访问都通过试过,连接被受限了。

[root@AliKvn logs]# curl -x127.0.0.1:80 111.com/admin.php1111111111 -I
HTTP/1.1 404 Not Found
Date: Wed, 18 Apr 2018 08:59:48 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@AliKvn logs]# curl -x172.18.171.157:80 111.com/admin.php1111111111 -I
HTTP/1.1 403 Forbidden
Date: Wed, 18 Apr 2018 08:59:52 GMT
Server: Apache/2.4.33 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1