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

相關文章
相關標籤/搜索