11.25-11.27 配置防盜鏈,訪問控制(Directory,FilesMatch)

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章