lamp 防盜鏈 filematch 限制ip訪問

一配置防盜鏈
  • referer,中文釋義為來源,也就是在說網站從哪裏訪問過來,在訪問日誌裏,它指的是不同網站之間的跳轉鏈接信息。也就是跳轉源的網址。
    雖然直接在瀏覽器輸入某個站點,跟從其他網站打開該網站,我們感受到的效果沒有差別,但是服務器端會記錄一個跳轉信息,他就是一個referer,如果沒有經過跳轉,則是一個空的referer。這樣我們統計該referer信息,就能統計出某個網站對於我們網站的流量貢獻。
  • 防盜鏈機制就是通過referer的控制,拒絕跳轉訪問我們自己認為的稀缺資源。比如,淘寶網商之間,既有互相打廣告的合作,又有對市場份額的競爭。這時我們可以把我們網站的主頁,掛在其他店鋪,但是我又不允許其他店鋪直接鏈接我辛苦拍來的產品照片,(這個鏈接很容易獲取)就可以針對該圖片做一個防盜鏈。
    通過限制referer來實現防盜鏈的功能
    配置虛擬主機為下面的樣子。為了節省空間,看起來有清晰,刪掉了之前的配置。
    <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    ServerAlias 123.com
    <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>
    </VirtualHost>

    curl -e "http://www.aminglinux.com/123.html" 自定義referer,註意該referer的格式
    針對php文件和圖片我們分別作帶referer和不帶referer的測試:
    curl -x127.0.0.1:80 123.com/admin.php -I
    curl -x127.0.0.1:80 -e "http://www.baidu.com" 123.com/admin.php -I
    技術分享圖片
    curl -x127.0.0.1:80 123.com/images/1.jpg -I
    curl -x127.0.0.1:80 -e "http://www.baidu.com" 123.com/images/1.jpg -I
    技術分享圖片

二 限制ip訪問

對於一些比較重要的網站,除了我們前面提到的使用用戶認證限制訪問之外,還可以通過限制訪問ip實現訪問控制。比如涉及後臺的訪問,我們可以只開放內網ip或這極少數ip。我們可以指定限制訪問的目錄或者是某類文件。
訪問控制Directory
核心配置文件內容

<Directory /data/wwwroot/www.123.com/admin/>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

-t graceful 後,我們分別用127.0.0.1和本機ens33 ip 192.168.226.130進行測試
curl -x127.0.0.1:80 123.com/admin/admin.php -I
技術分享圖片
curl -x192.168.226.130:80 123.com/admin/admin.php -I
技術分享圖片
curl -x192.168.226.130:80 123.com/admin.php -I
技術分享圖片
訪問控制FilesMatch
核心配置文件內容

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

-t graceful 後繼續測試
curl -x127.0.0.1:80 123.com/admin.php -I
技術分享圖片
curl -x192.168.226.130:80 123.com/admin.php -I
技術分享圖片
curl -x192.168.226.130:80 123.com/345.php -I
技術分享圖片
filematch 匹配amin.php 字段,包含該字段則只允許127.0.0.1這個ip訪問。
最後總結:
我們發現防盜鏈和後面的訪問控制 order 這一行有區別。 防盜鏈中是這樣的,Order Allow,Deny 意思先執行允許,再執行拒絕。先允許所有的訪問,再拒絕filematch匹配的文件的帶refer訪問。 訪問控制中是這樣的,Order deny,allow 意思是針對目錄或者文件,先拒絕所有ip訪問,再放行指定ip。

Linux學習總結(三十六)lamp之配置防盜鏈