1. 程式人生 > >LAMP架構(配置防盜鏈,目錄訪問控制,文件/鏈接訪問控制)

LAMP架構(配置防盜鏈,目錄訪問控制,文件/鏈接訪問控制)

配置防盜鏈 目錄訪問控制 文件/鏈接訪問控制

一、配置防盜鏈

實例:

假如你維護一個免費的論壇網站,是可以免費發圖片的,有一個國外的惡意網站,把圖片發在你的網站裏,且在自己的網站裏放入他在你網站發圖的鏈接,這樣在他的網站裏就可以直接跳轉到你的網站來訪問圖片,這樣增加了自己網站的帶寬,但是沒有實質意義,因為自己的用戶量並沒有增長,怎麽限制這種行為呢,是通過限制Referer(上一次訪問的網站)來實現。


修改虛擬配置文件;

[root@abc 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

增加以下內容

<Directory /data/wwwroot/111.com> (需要定義防盜鏈的目錄)

SetEnvIfNoCase Referer "http://111.com" local_ref referer白名單

SetEnvIfNoCase Referer "http://ask.apelearn.com" local_ref

SetEnvIfNoCase Referer "^$" local_ref 空referer也設置白名單

<FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> 這些訪問不要設置白名單

Order Allow,Deny 定義順序,先允許白名單訪問,剩下的給deny掉

Allow from env=local_ref

</FilesMatch>

</Directory>

檢查語法錯誤且重新啟動


[root@abc 111.com]# curl -e "http:www.qq.com/1.txt"-x127.0.0.1:80 111.com/1.png -I

HTTP/1.1 403 Forbidden

Date: Sun, 26 Nov 2017 08:50:30 GMT

Server: Apache/2.4.28 (Unix) PHP/5.6.30

Content-Type: text/html; charset=iso-8859-1

沒有設置referer白名單的www.qq.com被403拒絕


[root@abc 111.com]# curl -e "http://ask.apelearn.com"-x127.0.0.1:80 111.com/1.png -I

HTTP/1.1 200 OK

Date: Sun, 26 Nov 2017 08:50:38 GMT

Server: Apache/2.4.28 (Unix) PHP/5.6.30

Last-Modified: Sun, 26 Nov 2017 07:07:52 GMT

ETag: "7913-55edd71b4a200"

Accept-Ranges: bytes

Content-Length: 30995

Content-Type: image/png

設置了http://ask.apelearn.com白名單的被允許訪問200


二、目錄訪問控制

訪問控制目錄,只有允許的源ip才能打開目錄。其他的被deny

修改:

[root@abc 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

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

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Directory>


Order 定義順序。是先允許還是先訪問,如果deny在前,則先執行下面deny開頭的,如果allow在前,則執行allow開頭的。例如這個配置文件寫的是deny全部,如果把deny放在後面,則就算允許了127.0.0.1,後面還是會被deny掉


實驗:


[root@abc 111.com]# curl -x127.0.0.1:80 111.com/admin/index.php -I

HTTP/1.1 200 OK

Date: Sun, 26 Nov 2017 09:35:53 GMT

Server: Apache/2.4.28 (Unix) PHP/5.6.30

X-Powered-By: PHP/5.6.30

Content-Type: text/html; charset=UTF-8

白名單的127.0.0.1被允許訪問


[root@abc 111.com]# curl -x192.168.52.100:80 111.com/admin/index.php -I

HTTP/1.1 403 Forbidden

Date: Sun, 26 Nov 2017 09:35:54 GMT

Server: Apache/2.4.28 (Unix) PHP/5.6.30

Content-Type: text/html; charset=iso-8859-1

沒有白名單的192.168.52.100被deny


三、文件/鏈接訪問控制

訪問控制除了目錄,還可以訪問控制一個文件名/鏈接

修改:

[root@abc 111.com]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

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

<FilesMatch admin.php(.*)>

Order deny,allow

Deny from all

Allow from 127.0.0.1

</FilesMatch>

</Directory>

加上FilesMatch admin.php(.*),表示在 /data/wwwroot/111.com/ 下匹配到的文件全部被控制訪問


測試:

[root@abc admin]# curl -x192.168.52.100:80 111.com/admin/index.php -I

HTTP/1.1 200 OK

Date: Sun, 26 Nov 2017 09:47:09 GMT

Server: Apache/2.4.28 (Unix) PHP/5.6.30

X-Powered-By: PHP/5.6.30

Content-Type: text/html; charset=UTF-8

之前控制目錄的index.php可以訪問


[root@abc admin]# curl -x192.168.52.100:80 '111.com/admin/admin.php?sada' -I

HTTP/1.1 403 Forbidden

Date: Sun, 26 Nov 2017 09:48:33 GMT

Server: Apache/2.4.28 (Unix) PHP/5.6.30

Content-Type: text/html; charset=iso-8859-1

目錄下就沒有訪問的文件,但是顯示403權限不夠,說明403和404的區別,權限不夠時就沒有權利匹配或查看,所以不管文件是否真實存在


LAMP架構(配置防盜鏈,目錄訪問控制,文件/鏈接訪問控制)