11.25 配置防盜鏈php
防止有人利用網站文件上傳的功能,把一些靜態媒體資源放到咱們的網站上,而後在他們的網站上設置這些資源的連接到咱們的網站上,當他們網站用戶訪問這些資源時,就會跳轉到咱們的服務器上,致使咱們的服務器帶寬流量異常增大。爲了防止這種狀況發生,咱們利用apache服務器訪問控制實現防盜鏈功能。apache
在/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置文件下進行設定:瀏覽器
<Directory /data/wwwroot/111.com> #定義防盜鏈的目錄 SetEnvIfNoCase Referer "http://www.111.com" local_ref //指定referer白名單 SetEnvIfNoCase Referer "http://111.com" local_ref //指定referer白名單 SetEnvIfNoCase Referer "^$" local_ref //空的referer也能訪問 <FilesMatch "\.(txt|doc|mp3|zip|rar|jpg|gif)"> //使用文件匹配訪問控制,定義規則 Order Allow,Deny //訪問控制順序,先容許後拒絕。 Allow from env=local_ref //只有符合白名單上的referer才能訪問111.com目錄。 </FilesMatch> </Directory>
查看設置是否成功服務器
[root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl graceful [root@localhost 111.com]# !curl ..... HTTP/1.1 200 OK
驗證效果。curl
curl -e 「www.111.com」 -x127.0.0.1:80 www.111.com/logo.jpg -I //-e選項是指定referer進行訪問。
11.26 訪問控制Directory測試
公司的內部網站能夠設置訪問控制,指定來源IP纔可以訪問,只有把公司裏面的IP地址放到referer白名單裏面就能夠訪問了。網站
配置的時候,把Directory配置的內容放在防盜鏈前面url
在/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置文件下進行設定:3d
<Directory /data/wwwroot/111.com> // 指定須要訪問控制的網站的目錄 Order deny,allow //訪問控制的順序,先全部都拒絕,而後再容許指定的ip。和iptables不一樣,能夠所有規則都執行下去。 Deny from all // 拒絕全部的來源ip Allow from 127.0.0.1 //指定容許訪問的來源ip(指定網段也能夠192.168.0.0/24) </Directory> [root@localhost 111.com]# !tail 查看日誌中源IP地址 [root@localhost 111.com]# curl -x 192.168.168.133:80 www.123.com/admin/ #192是本機的IP
注意:curl測試狀態碼爲403則被限制訪問了日誌
11.27 訪問控制FilesMatch
除了對整個網站的目錄進行訪問控制外,還能夠對網站的指定某一個頁面進行訪問控制,例如只有指定的來源ip纔可以訪問後臺管理的頁面。
也是在/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置文件下進行設定:
<Directory /date/wwwroot/111.com> <FilesMatch "admin.php(.*)"> //指定須要訪問控制的頁面 Order deny,allow //訪問控制的順序,先全部都拒絕,而後再容許指定的ip Deny from all // 拒絕全部的來源ip Allow from 127.0.0.1 //指定容許訪問的來源ip(指定網段也能夠192.168.0.0/24) </FilesMatch> </Directory>
查看設置是否成功
[root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl -t Syntax OK [root@localhost 111.com]# /usr/local/apache2.4/bin/apachectl graceful
測試:
[root@localhost 111.com]# curl -x 192.168.168.133:80 'http.123.com/admin.php?' -I
常見問題:
已經被容許了,仍是被限制了?
答:首先看了你的配置遠程鏈接的IP 是111.231.137.133,這是你的虛擬機IP ,在看了你的配置容許放行的ip是你虛擬機的ip,並非你物理機的ip, 因此你用物理機上的瀏覽器去訪問你的虛擬機的網站確定不會放行啊,你將物理機的IP 添加進配置 在訪問試試
二、瀏覽器訪問就訪問不了
答:allow from後面跟的ip,究竟是客戶端的ip仍是服務端的ip? 你瀏覽器訪問,那你知道設置哪一個ip爲白名單ip才行嗎?
三、curl -x192.168.133.150:80 111.com/admin/index.php 意思就是訪問111.com/admin/index.php 這個地址, 被訪問者IP(目標IP)是192.168.133.150在80端口。 可是爲何apache的log上會顯示訪問者的IP是192.168.130呢? 若是apache服務器上有一張網卡的IP是192.168.133.150 由於是本身訪問本身,那訪問者IP不同也是192.168.133.150嗎?爲何會變成 192.168.133.130?
答:兩個ip是同一個網段, 訪問150的時候,源ip就是130.
四、打了一個不存在的 地址仍是200
答:只要index.php 存在 它就不會報404
相關連接:
幾種限制ip的方法 http://ask.apelearn.com/question/6519
apache 自定義header http://ask.apelearn.com/question/830
apache的keepalive和keepalivetimeout http://ask.apelearn.com/question/556