配置防盜鏈,訪問控制Directory,訪問控制FilesMatch

配置防盜鏈:

防盜鏈能限制不認識的referer的訪問,可以禁止別人的服務器引用或轉發我服務器上的內容,這樣能夠防止別人盜用我服務器上的資源,服務器的資源被盜用會致使網絡帶寬的使用量上升。php

1.配置虛擬主機文件增長如下內容:html

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
<Directory /data/wwwroot/111.com>
       SetEnvIfNoCase Referer "http://111.com" local_ref
       SetEnvIfNoCase Referer "http://aaa.com" local_ref
       SetEnvIfNoCase Referer "^$" local_ref
       <FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">
           Order Allow,Deny
           Allow from env=local_ref
       </FilesMatch>
   </Directory>

修改完以後從新加載一下配置文件:linux

[root@aming-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@aming-01 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK

SetEnvIfNoCase : SetEnvIf指令根據客戶端的請求屬性設置環境變量,SetEnvIfNoCase表明當知足某個條件時,爲變量賦值,通常結合其餘指令使用。apache

SetEnvIfNoCase Referer "http://111.com"; local_ref:       將知足條件的refer打上標記local_refvim

Order Allow,Denybash

 Allow from env=local_ref      : 這段表示除了local_ref能夠同行,其他的所有禁掉服務器

2.使用curl模擬Referer進行測試網絡

[root@aminglinux ~]# curl -e "http://www.qq.com/123.txt";; -x127.0.0.1:80 111.com/cc.jpg -I     #模擬www.qq.com顯示403 
HTTP/1.1 403 Forbidden
Date: Sun, 04 Mar 2018 22:09:49 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1
[root@aminglinux ~]# curl -e "http://111.com/123.txt";; -x127.0.0.1:80 111.com/cc.jpg -I           #模擬成111.com成功訪問
HTTP/1.1 200 OK
Date: Sun, 04 Mar 2018 22:10:40 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Last-Modified: Mon, 21 Aug 2017 14:32:40 GMT
ETag: "54bcb-5574459d3d200"
Accept-Ranges: bytes
Content-Length: 347083
Content-Type: image/jpeg

使用-e選項時,域名的描述不能亂寫,要以http://開頭。curl

 

訪問控制Directory:

除了Directory的訪問控制還有FilesMatch的訪問控制,Directory訪問控制相似於限制一個目錄的訪問,而FilesMatch訪問控制則相似於限制一個文件或文件連接的訪問,FilesMatch要寫在Directory以內。測試

1. 編輯虛擬主機配置文件

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

2. 在配置文件裏添加以下段,目的是對111.com下的admin目錄進行訪問控制

<Directory /data/wwwroot/111.com/admin/>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1     = 指定某IP訪問
     </Directory>

Order  用來定義順序        Order deny,allow    表示先deny 再allow

這段話表是拒絕全部的訪問,僅經過127.0.0.1

3. 配置完成後須要檢查配置文件以及從新加載配置文件纔會生效

/usr/local/httpd2.4/bin/apachectl -t
/usr/local/httpd2.4/bin/apachectl graceful

4. 使用curl進行測試是否成功

[root@aminglinux ~]# curl -x127.0.0.1:80 111.com/admin/index.php
test

[root@aminglinux ~]# curl -x127.0.0.1:80 111.com/admin/index.php -I                  #使用127.0.0.1能夠正常訪問,
HTTP/1.1 200 OK
Date: Mon, 05 Mar 2018 16:26:57 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
X-Powered-By: PHP/5.6.30
Content-Type: text/html; charset=UTF-8

[root@aminglinux ~]# curl -x192.168.177.7:80 111.com/admin/index.php -I          #使用192.168.177.7訪問失敗提示403 Forbidden
HTTP/1.1 403 Forbidden
Date: Mon, 05 Mar 2018 16:27:42 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

 

訪問控制FilesMatch:

 1.對111.com下的admin.php開頭頁面進行訪問控制,一樣在虛擬主機配置文件上添加以下段:

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

 

2. 使用curl進行測試是否成功

[root@aminglinux ~]# curl -x192.168.177.7:80 111.com/admin.php?=1=2 -I   # 顯示403 Forbidden 不容許訪問 404表示容許訪問
HTTP/1.1 403 Forbidden
Date: Mon, 05 Mar 2018 19:23:54 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Content-Type: text/html; charset=iso-8859-1

 

 

擴展
幾種限制ip的方法 http://ask.apelearn.com/question/6519
apache 自定義header http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556

相關文章
相關標籤/搜索