1. 程式人生 > >5月31日

5月31日

linux

11.25 配置防盜鏈

防盜鏈,就是不讓別人盜用你網站上的資源,這個資源,通常指的是圖片、視頻、歌曲、文檔等,通過限制referer實現防盜鏈的功能

referer的概念

你通過A網站的一個頁面http://a.com/a.html 裏面的鏈接去訪問B網站的一個頁面http//b.com/b.html ,那麽這個B網站頁面的referer就是http://a.com/a.html。 也就是說,一個referer其實就是一個網址

1.配置防盜鏈,配置虛擬主機配置:

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

添加以下配置:

<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>

最終保存配置:

技術分享圖片

解釋說明:

首先定義允許訪問鏈接的referer,其中^$為空referer當直接在瀏覽器裏輸入圖片地址去訪問它時,它的referer就為空。然後又使用filesmatch來定義需要保護的文件類型,訪問txtdocmp3ziprarjpggifpng格式的文件,當訪問這樣的類型文件時就會被限制。

2.重新檢測和加載:

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

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

3.我們來做一下測試如下:

先在http://ask.apelearn.com上發個帖子,將http://111.com/qq.png鏈接放進去作成超鏈接,然後直接點這個鏈接其實也是訪問不了的,所以我們要到 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 配置文件中,將http://ask.apelearn.com這個地址添加進白名單,就可以訪問了,這就是防盜鏈的作用。

3.1因為我的阿裏雲用域名訪問提示我備案,我就使用IP訪問,IP訪問會訪問默認虛擬主機上的內容,所以我在默認虛擬主機上也加了防盜鏈,測試成功,

技術分享圖片

3.2然後在虛擬主機配置文件裏把第三方站(http://ask.apelearn.com/)點加入到白名單

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

添加以下配置:

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

然後再檢查語法和加載配置

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

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

技術分享圖片

測試成功

技術分享圖片

3.3 使用curl測試

curl -e "http://ask.apelearn.com" -x127.0.0.1:80 abc.com/linux.jpg 自定義referer

技術分享圖片

使用-e來定義referer,這個referer一定要以http://開頭,否則不管用


11.26 訪問控制Directory

對於一些比較重要的網站內容,除了可以使用用戶認證限制訪問之外,還可以通過其他一些方法做到限制,比如可以限制IP,也可以限制user_agent,限制IP指的是限制訪問網站的來源IP,而限制user_agent,通常用來限制惡意或者不正常的請求。

1.修改虛擬機配置文件內容:(針對IP來做限制,只允許來源IP為127.0.0.1的訪問

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

核心配置文件內容如下:

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

Order deny,allow

Deny from all

Allow from 127.0.0.1

</Directory>

最終保存配置:

技術分享圖片

說明:使<Directory>來指定要限制訪問的目錄order定義控制順序,哪個在前面就先匹配哪個規則,在本例中deny在前面,所以要先匹配Deny from all,這樣所有的來源IP都會被限制,然後匹配Allow from 127.0.0.1,這樣又允許了127.0.0.1這個IP。最終的效果是,只允許來源IP為127.0.0.1的訪問

2.創建admin目錄,模擬網站後臺,在後臺目錄下面創建文件index.php

mkdir /data/wwwroot/abc.com/admin/

cd /data/wwwroot/abc.com/admin

vim index.php //錄入一些內容保存

/usr/local/apache2.4/bin/apachectl graceful //上面添加了配置,載入配置

3.curl 測試效果

curl -x127.0.0.1:80 abc.com/admin/index.php -I //200狀態碼 127.0.0.1是在配置文件裏設置允許訪問的

技術分享圖片

curl -x47.97.163.117:80 abc.com/admin/index.php //403狀態碼因為沒有被允許,所以顯示forbidden

技術分享圖片

3.1 查看訪問日誌:

tail /usr/local/apache2.4/logs/abc.com-access_20180531.log

技術分享圖片

說明:

本機有兩個IP,一個是阿裏雲外網IP47.97.163.117,一個是本機127.0.0.1,通過這兩個IP都可以訪問到站點.而來源分別為47.97.163.117127.0.0.1,其實和本機IP是一樣的,curl測試狀態碼為403則被限制訪問了。

11.27 訪問控制FilesMatch


FilesMatch針對某個文件來做限制:

1.添加虛擬主機配置

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

添加核心配置文件內容:

<Directory /data/wwwroot/abc.com>

<FilesMatch "admin.php(.*)">

Order deny,allow

Deny from all

Allow from 127.0.0.1

</FilesMatch>

</Directory>

最終保存配置:

技術分享圖片

2.再檢查語法和加載配置

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

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

3. 用curl測試

curl -x127.0.0.1:80 abc.com/admin.php -I //狀態碼200

curl -x47.97.163.117:80 abc.com/admin.php -I //狀態碼403,配置生效

技術分享圖片


5月31日