LAMP架构(七)

一 配置防盗链

首先来了解一下什么是盗链,全称是盗取连接,假如咱们的网站有不少好看的图片,别人能够查看咱们网站图片的连接,而后应用在他的网站上,这样的话,去访问他的网站,实际上消耗的是咱们的流量(由于实际连接在咱们这里),这样咱们就不得不去配置防盗链,使得别人不能复制咱们图片的连接。php

一、编辑虚拟主机配置文件apache

    # vim /usr/local/apache2.4/conf/extra/httpd-vhost.confvim

    在文件中加入如下内容:浏览器

<Directory /data/wwwroot/111.com>服务器

    SetEnvIfNoCase Referer "http://www.111.com" local_refcurl

    SetEnvIfNoCase Referer "http://111.com" local_ref测试

    SetEnvIfNoCase Referer "^$" local_ref网站

    <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">url

        Order Allow.Denyspa

        Allow from env=local_ref

    </filesmatch>

</Directory>

其中 SetEnvIfNoCase Referer的三行内容是设置白名单

txt|doc|mp3|zip|rar|jpg|gif|png 表示防盗链防盗的对象,设置后,这些类型的文件就不能被白名单外的第三方引用

Order用于定义顺序,是先容许仍是先拒绝

二、验证

    首先将配置文件中的空referer一行隐藏

    而后开启apache服务

    # /usr/loacl/apache2.4/bin/apachectl -t

    # /usr/local/apache2.4/bin/apachectl start

    这时咱们在浏览器输入111.com/hw.jpg来访问服务器上hw.jpg这张图片时,出现以下提示

    可是若是在白名单的网站上咱们发一个帖子,在帖子中加入111.com/hw.jpg这个连接,经过帖子连接跳转又能正常访问

如今咱们将配置文件中的空referer一行的#号去掉,从新加载配置文件后,咱们再在浏览器输入111.com/hw.jpg来访问服务器上hw.jpg这张图片时,就能正常访问了

  以上实验能够看出:"^$"空的referer指的是从浏览器输入图片地址直接访问,没有跳转连接,

咱们再来经过curl作实验,当前空referer行未被隐藏

先直接访问,空referer状态,结果访问成功:

再来模拟一个不在白名单中的referer访问图片,结果被拒绝访问:

二 访问控制Directory

只容许白名单内的IP访问指定的目录

一、修改配置文件

    配置文件中加入如下内容:

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

    Order deny,allow

    Deny from all

    Allow from 127.0.0.1

</Directory>

以上Order用于定义顺序,是先执行deny仍是先执行allow,若是Order后先是allow那么就会先执行allow的语句,若是先是deny,就会先执行deny的语句,它有一个特色是:不管是否匹配到指定的IP,都会从头到尾将语句执行完;admin/为指定的访问控制的目录

建立访问控制目录及子文件

二、从新加载配置文件

    # /usr/local/apache2.4/bin/apachectl -t

    # /usr/local/apache2.4/bin/apachectl graceful

三、测试访问控制

    # curl -x127.0.0.1:80 111.com/admin/index.php -I  //此处指定了目标IP,未指定源IP,默认源访问IP同目标IP一致;源IP在配置文件的白名单内,访问200 OK

    # curl -x192.168.31.157:80 111.com/admin/index.php -I  //此处指定了目标IP,未指定源IP,默认源访问IP同目标IP一致,源IP不在配置文件的白名单内,访问403 Forbidden

    咱们来查看访问日志记录

    # tail /usr/local/apache2.4/logs/111.com-access_log

    再来测试经过物理机访问虚拟机

    在浏览器输入111.com/admin/index.com结果也提示被禁止访问

三 访问控制FilesMatch

只有指定的IP才能访问匹配的文件或者说是连接

一、编辑配置文件

    在配置文件中加入如下内容

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

以上表示匹配admin.php(.*)文件或连接只有指定的IP能访问

二、从新加载配置文件

    # /usr/local/apache2.4/bin/apachectl -t

    # /usr/local/apache2.4/bin/apachectl graceful

三、测试验证

    # curl -x192.168.31.157:80 111.com/sfdfsfs -I   //如下结果表示找不到这个页面

    # curl -x192.168.31.157:80 111.com/admin.php?sfdfsfs -I  //如下结果表示不容许源IP访问

    # curl -x127.0.0.1:80 111.com/admin.php?dfdfdfdfdfd -I //如下结果表示已经容许的源IP的访问,只是找不到对应的页面

 

推荐连接

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

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

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

相关文章
相关标签/搜索